1. 程式人生 > >第2章 運算符

第2章 運算符

Java

1.1 算數運算符
? 運算符
對常量和變量進行操作的符號稱為運算符
? 表達式
用運算符把常量或者變量連接起來符號java語法的式子就可以稱為表達式。不同運算符連接的式子體現的是不同類型的表達式。
定義兩個int類型的變量a,b,做加法(a + b)
? 常用運算符
算術運算符
賦值運算符
關系運算符
邏輯運算符
三元運算符
1.1.1 算數運算符的基本用法
1.1.2 算數運算符概述
A:什麽是運算符
就是對常量和變量進行操作的符號。
B:算數運算符有哪些

  • +,-,*,/,%,++,--
    1.1.3 代碼案例三
package com.itheima_01;
/*
 * 運算符:對常量和變量進行操作的符號
 * 表達式:用運算符連接起來的符合java語法的式子。不同類型的運算符連接起來的式子是不同的表達式。
 *                 舉例:定義兩個int類型的變量a,b,
 *                         a + b
 *
 * 運算符分類:
 *                 算術運算符,賦值運算符,關系運算符,邏輯運算符,三元運算符。
 *
 * 算術運算符:
 *                 +,-,*,/的基本使用
 */
public class OperatorDemo {
        public static void main(String[] args) {
                // 定義兩個變量
                int a = 3;
                int b = 4;

                System.out.println(a + b);
                System.out.println(a - b);
                System.out.println(a * b);
                System.out.println(a / b);

                // 整數相除只能得到整數,要想得到小數,就必須有浮點數參與運算
                System.out.println(3 / 4.0);
                System.out.println(3.0 / 4);
        }
}

1.1.4 算數運算符取余和除法的區別
%:取余運算符。得到的是兩個相除數據的余數。
/:除法運算符。得到是兩個相除數據的商。
使用場景: %:判斷兩個數據是否整除。
1.1.5 代碼案例四

public class OperatorDemo2 {
public static void main(String[] args) {
int a = 5;
int b = 3;

            System.out.println(a / b);
            System.out.println(a % b);
    }

}

1.1.6字符和字符串參與加法操作
字符參與運算
其實是拿該字符對應的數值來操作

‘a’ 97
‘A’ 65
‘0’ 48
字符串參與運算
這裏其實做的不是加法運算,而是字符串拼接。
字符串和其他類型的數據做拼接,結果是字符串類型的。
1.1.7 代碼案例五

package com.itheima_01;
/*
 * 整數的加法。
 * 字符參與加法操作。拿字符在計算機中底層存儲對應的數據值來參與運算的。
 *                 ‘0‘                48
 *                 ‘a‘                97
 *                 ‘A‘                65
 * 字符串參與加法操作。
 *                 這裏的+其實不是加法,而是字符串連接符。
 */
public class OperatorDemo3 {
        public static void main(String[] args) {
                // 整數加法
                int a = 10;
                int b = 20;
                System.out.println(a + b);
                System.out.println("------------------");

                // 字符參與加法操作
                char c = ‘0‘;
                char c2 = ‘a‘;
                System.out.println(a + c);
                System.out.println(a + c2);
                System.out.println("------------------");

                // 字符串參與加法操作
                System.out.println("hello" + a);
                System.out.println("hello" + a + b); // "hello"+10,然後再和b進行拼接
                System.out.println(a + b + "hello");
        }
}

1.1.8 算數運算符++和- - 的用法
++,--運算符:對變量做加1或者減1的操作。
++或者--既可以放在變量的後面,也可以放在變量的前面。
單獨使用的時候,++或者--無論是放在變量的前面還是後面,結果是一樣的。
參與操作的時候:
                 如果++或者--在變量的後面,先拿變量參與操作,後變量做++或者--
                如果++或者--在變量的前面,先變量做++或者--,後拿變量參與操作
1.1.9 代碼案例六
public class OperatorDemo4 {
        public static void main(String[] args) {
                int a = 10;
                System.out.println("a:" + a);

                // 單獨使用
                // a++;
                // ++a;
                // System.out.println("a:" + a);

                // 參與操作使用
                // int b = a++;
                int b = ++a;
                System.out.println("a:" + a);
                System.out.println("b:" + b);
        }
}

2.1 賦值運算符
2.1.1 賦值運算符分類
基本的賦值運算符:=
擴展的賦值運算符:+=,-=,*=,/=,%=
+=:        a+=20;相當於a = (a的數據類型)(a + 20);
2.1.2 代碼案例七
package com.itheima_02;
/*
 * 賦值運算符:
 *                 A:基本        =
 *                 B:擴展        +=,-=,*=,...
 *
 * +=:
 *                 a+=20;
 *                 相當於
 *                 a = (a的數據類型)(a + 20);
 */
public class OperatorDemo {
        public static void main(String[] args) {
                // 把10賦值給int類型的變量a
                int a = 10;

                // += 把左邊和右邊的數據進行運算,最後賦值給左邊。左邊的只能是變量
                a += 10;// 相當於a = a + 10
                System.out.println("a:" + a);
                System.out.println("----------------------");

                short s = 10;
                // s += 20; // 相當於 s = s + 20;
                s = (short) (s + 20);
                System.out.println("s:" + s);
        }
}

3.1 關系運算符
3.1.1 基本使用及註意事項
關系運算符包含以下內容:
==,!=,>,>=,<,<=
關系運算符的結果都是boolean型,也就是要麽是true,要麽是false。
註意事項:
關系運算符“==”不能誤寫成“=”。
代碼案例八

package com.itheima_03;

/*
 * 關系運算符:
 *                 ==,!=,>,>=,<,<=
 *                 關系運算符的結果是boolean類型。
 *
 * 註意:
 *                 千萬不要把==寫成=
 */
public class OperatorDemo {
        public static void main(String[] args) {
                int a = 10;
                int b = 20;
                int c = 10;

                System.out.println(a == b);
                System.out.println(a == c);
                System.out.println("-----------------");
                System.out.println(a != b);
                System.out.println(a != c);
                System.out.println("-----------------");
                System.out.println(a > b);
                System.out.println(a > c);
                System.out.println("-----------------");
                System.out.println(a >= b);
                System.out.println(a >= c);
                System.out.println("-----------------");

                int x = 3;
                int y = 4;
                // System.out.println(x == y);
                // System.out.println(x = y);// 把y賦值給x,把x的值輸出
                boolean bb = (x == y);
                // 報錯
                // boolean cc = (x = y);
                int cc = (x = y);
        }
}

4.1 邏輯運算符
4.1.1 邏輯運算符概述
A:邏輯運算符有哪些
&,|,^,!
&&,||
B:案例演示
邏輯運算符的基本用法

C:註意事項:
a:邏輯運算符一般用於連接boolean類型的表達式或者值。
b:表達式:就是用運算符把常量或者變量連接起來的符合java語法的式子。
算術表達式:a + b
比較表達式:a == b(條件表達式)
D:結論:
&邏輯與:有false則false。
|邏輯或:有true則true。
^邏輯異或:相同為false,不同為true。
!邏輯非:非false則true,非true則false。
特點:偶數個不改變本身。
4.1.2 代碼案例九

package com.itheima_04;
/*
 * 邏輯運算符:用於連接關系表達式。
 * &,|,^,!
 * &&,||
 *
 * 與:&        有false則false
 * 或:|        有true則true
 * 異或:^ 相同則false,不同則true。(男女朋友)
 * 非:!        true則false,false則true
 */
public class OperatorDemo {
        public static void main(String[] args) {
                int a = 10;
                int b = 20;
                int c = 30;

                System.out.println((a > b) & (a > c));// false & false
                System.out.println((a < b) & (a > c)); // true & false
                System.out.println((a > b) & (a < c)); // false & true
                System.out.println((a < b) & (a < c)); // true & true
                System.out.println("---------------");
                System.out.println((a > b) | (a > c));// false | false
                System.out.println((a < b) | (a > c)); // true | false
                System.out.println((a > b) | (a < c)); // false | true
                System.out.println((a < b) | (a < c)); // true | true
                System.out.println("---------------");
                System.out.println((a > b) ^ (a > c));// false ^ false
                System.out.println((a < b) ^ (a > c)); // true ^ false
                System.out.println((a > b) ^ (a < c)); // false ^ true
                System.out.println((a < b) ^ (a < c)); // true ^ true
                System.out.println("---------------");
                System.out.println((a > b)); // false
                System.out.println(!(a > b)); // !false
                System.out.println(!!(a > b)); // !!false
        }
}

4.1.3 邏輯運算符&&與&的區別
A:&&和&的區別?
a:最終結果一樣。
b:&&具有短路效果。左邊是false,右邊不執行。
&是無論左邊是false還是true,右邊都會執行
B:||和|的區別?
a:最終結果一樣
b:||具有短路效果.左邊是true,右邊不執行
|是無論左邊是false還是true,右邊都會執行
4.1.4 代碼案例十:

package com.itheima_04;

/*
 * &&和&的結果一樣
 * ||和|的結果一樣
 *
 * &&和&的區別:
 *                 &&如果左邊是false,右邊不執行。
 *                 &無論左邊是true還是false,右邊都會執行。
 */
public class OperatorDemo2 {
        public static void main(String[] args) {
                int a = 10;
                int b = 20;
                int c = 30;

                System.out.println((a > b) && (a > c));// false && false
                System.out.println((a < b) && (a > c)); // true && false
                System.out.println((a > b) && (a < c)); // false && true
                System.out.println((a < b) && (a < c)); // true && true
                System.out.println("---------------");
                System.out.println((a > b) || (a > c));// false || false
                System.out.println((a < b) || (a > c)); // true || false
                System.out.println((a > b) || (a < c)); // false || true
                System.out.println((a < b) || (a < c)); // true || true
                System.out.println("---------------");

                int x = 3;
                int y = 4;
                // System.out.println((x++ > 4) & (y++ > 5)); // false & false
                System.out.println((x++ > 4) && (y++ > 5)); // false && false
                System.out.println("x:" + x);
                System.out.println("y:" + y);
        }
}

5.1 三元運算符
5.1.1 三元運算符概述
A:格式
(關系表達式)?表達式1:表達式2;
如果條件為true,運算後的結果是表達式1;
如果條件為false,運算後的結果是表達式2;
B:示例:
獲取兩個數中大數。
int x=3,y=4,z;
z = (x>y)?x:y;//z變量存儲的就是兩個數的大數
5.1.2 代碼案例十一

package com.itheima_05;
/*
 * 三元運算符:
 *
 * 格式:
 *                 (關系表達式)?表達式1:表達式2;
 * 執行流程:
 *                 A:計算關系表達式的值,看是true還是false
 *                 B:如果是true,表達式1就是運算結果
 *                       如果是false,表達式2就是運算結果
 */
public class OperatorDemo {
        public static void main(String[] args) {
                int a = 10;
                int b = 20;

                int c = (a > b) ? a : b;
                System.out.println("c:" + c);
        }
}

5.1.3 代碼案例十二(比較兩個數是否相同)

package com.itheima_05;

/*       
 * 三元運算符的練習
 * 比較兩個整數是否相同
 */
public class OperatorTest {
        public static void main(String[] args) {
                // 定義兩個int類型的變量
                int a = 10;
                int b = 20;

                boolean flag = (a == b) ? true : false;
                // boolean flag = (a == b);
                System.out.println(flag);
        }
}

5.1.4 代碼案例十三(獲取三個數中的最大值)

package com.itheima_05;
/*
 * 獲取三個整數中的最大值
 */
public class OperatorTest2 {
        public static void main(String[] args) {
                // 定義三個int類型的變量
                int a = 10;
                int b = 30;
                int c = 20;

                // 先比較兩個整數的大值
                int temp = ((a > b) ? a : b);
                int max = ((temp > c) ? temp : c);
                System.out.println("max:" + max);
        }
}

第2章 運算符