第1章 運算符
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 staticvoid 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 staticvoid 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 staticvoid 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 staticvoid 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); } }
1.2 賦值運算符
1.2.1賦值運算符分類
基本的賦值運算符:=
擴展的賦值運算符:+=,-=,*=,/=,%=
+=: a+=20;相當於a = (a的數據類型)(a + 20);
1.2.2代碼案例七
package com.itheima_02; /* * 賦值運算符: * A:基本 = * B:擴展 +=,-=,*=,... * * +=: * a+=20; * 相當於 * a= (a的數據類型)(a + 20); */ public class OperatorDemo { public staticvoid 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); } }
1.3 關係運算符
1.3.1 基本使用及注意事項
關係運算符包含以下內容:
==,!=,>,>=,<,<=
關係運算符的結果都是boolean型,也就是要麼是true,要麼是false。
注意事項:
關係運算符“==”不能誤寫成“=”。
1.3.2 代碼案例八
package com.itheima_03; /* * 關係運算符: * ==,!=,>,>=,<,<= * 關係運算符的結果是boolean類型。 * * 注意: * 千萬不要把==寫成= */ public class OperatorDemo { public staticvoid 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); } }
1.4 邏輯運算符
1.4.1 邏輯運算符概述
A:邏輯運算符有哪些
&,|,^,!
&&,||
B:案例演示
邏輯運算符的基本用法
C:注意事項:
a:邏輯運算符一般用於連接boolean類型的表達式或者值。
b:表達式:就是用運算符把常量或者變量連接起來的符合java語法的式子。
算術表達式:a + b
比較表達式:a == b(條件表達式)
D:結論:
&邏輯與:有false則false。
|邏輯或:有true則true。
^邏輯異或:相同爲false,不同爲true。
!邏輯非:非false則true,非true則false。
特點:偶數個不改變本身。
1.4.2 代碼案例九
package com.itheima_04; /* * 邏輯運算符:用於連接關係表達式。 * &,|,^,! * &&,|| * * 與:& 有false則false * 或:| 有true則true * 異或:^ 相同則false,不同則true。(男女朋友) * 非:! true則false,false則true */ public class OperatorDemo { public staticvoid 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 } }
1.4.3 邏輯運算符&&與&的區別
A:&&和&的區別?
a:最終結果一樣。
b:&&具有短路效果。左邊是false,右邊不執行。
&是無論左邊是false還是true,右邊都會執行
B:||和|的區別?
a:最終結果一樣
b:||具有短路效果.左邊是true,右邊不執行
|是無論左邊是false還是true,右邊都會執行
1.4.4 代碼案例十:
package com.itheima_04; /* * &&和&的結果一樣 * ||和|的結果一樣 * * &&和&的區別: * &&如果左邊是false,右邊不執行。 * &無論左邊是true還是false,右邊都會執行。 */ public class OperatorDemo2 { public staticvoid 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); } }
1.5 三元運算符
1.5.1三元運算符概述
A:格式
(關係表達式)?表達式1:表達式2;
如果條件爲true,運算後的結果是表達式1;
如果條件爲false,運算後的結果是表達式2;
B:示例:
獲取兩個數中大數。
int x=3,y=4,z;
z = (x>y)?x:y;//z變量存儲的就是兩個數的大數
1.5.2代碼案例十一
package com.itheima_05; /* * 三元運算符: * * 格式: * (關係表達式)?表達式1:表達式2; * 執行流程: * A:計算關係表達式的值,看是true還是false * B:如果是true,表達式1就是運算結果 * 如果是false,表達式2就是運算結果 */ public class OperatorDemo { public staticvoid main(String[] args) { int a = 10; int b = 20; int c = (a > b) ? a : b; System.out.println("c:"+ c); } }
1.5.3代碼案例十二(比較兩個數是否相同)
package com.itheima_05; /* * 三元運算符的練習 * 比較兩個整數是否相同 */ public class OperatorTest { public staticvoid main(String[] args) { // 定義兩個int類型的變量 int a = 10; int b = 20; boolean flag= (a== b) ? true: false; // boolean flag = (a == b); System.out.println(flag); } }
1.5.4代碼案例十三(獲取三個數中的最大值)
package com.itheima_05; /* * 獲取三個整數中的最大值 */ public class OperatorTest2 { public staticvoid 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); } }