零基礎學Java第五章
阿新 • • 發佈:2020-09-16
一、Java運算子
運算子:對常量和變數進行操作的符號稱為運算子。
表示式:用運算子把常量或者變數連線起來符號java語法的式子就可以稱為表示式。不同運算子連線的式子體現的是不同型別的表示式。
例如:定義兩個int型別的變數a,b,做加法就是(a + b)
常用運算子:
算術運算子
賦值運算子
關係運算符
邏輯運算子
三元運算子
1. 算術運算子
1.1 算術運算子概述
對常量和變數進行操作的符號就是算術運算子。一般分為 +,-,*,/,%,++,--
package com.test.day02; /* * 運算子:對常量和變數進行操作的符號 * 表示式:用運算子連線起來的符合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.2.算數運算子取餘和除法的區別
%:取餘運算子。得到的是兩個相除資料的餘數。
/:除法運算子。得到是兩個相除資料的商。
使用場景: %:判斷兩個資料是否整除。
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.3.算數運算子取餘和除法的區別
字元參與運算
其實是拿該字元對應的數值來操作,這裡可以參考ASCII碼
‘a’ 97
‘A’ 65
‘0’ 48
字串參與運算
這裡其實做的不是加法運算,而是字串拼接。
字串和其他型別的資料做拼接,結果是字串型別的。
package com.test.day02; /* * 整數的加法。 * 字元參與加法操作。拿字元在計算機中底層儲存對應的資料值來參與運算的。 * '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"); } }
結果:
2. 賦值運算子
2.1 賦值運算子概述
基本的賦值運算子:=
擴充套件的賦值運算子:+=,-=,*=,/=,%=
+=: a+=20;相當於a = (a的資料型別)(a + 20);
package com.test.day02;
/*
* 賦值運算子:
* A:基本 =
* B:擴充套件 +=,-=,*=,...
*
* +=:
* a+=20;
* 相當於
* a = (a的資料型別)(a + 20);
*/
public class OperatorDemo3 {
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. 關係運算符
3.1 關係運算符概述
關係運算符包含以下內容:
==,!=,>,>=,<,<=
關係運算符的結果都是boolean型,也就是要麼是true,要麼是false。
注意事項:
關係運算符“==”不能誤寫成“=”
package com.test.day02;
/*
* 關係運算符:
* ==,!=,>,>=,<,<=
* 關係運算符的結果是boolean型別。
*
* 注意:
* 千萬不要把==寫成=
*/
public class OperatorDemo3 {
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. 邏輯運算子
4.1 邏輯運算子概述
1)邏輯運算子有哪些
&,|,^,!,&&,||
2)邏輯運算子的基本用法
程式中做重要的判斷,例如我們一批數字,4,8,6,1,3 我們需要在數字 3 且 1 的時候處理某種業務,就可以說是 3 && 1。具體可以看下面的程式碼示例
3)注意事項:
a:邏輯運算子一般用於連線boolean型別的表示式或者值。
b:表示式:就是用運算子把常量或者變數連線起來的符合java語法的式子。
算術表示式:a + b
比較表示式:a == b(條件表示式)
4)結論:
&邏輯與:有false則false。
|邏輯或:有true則true。
^邏輯異或:相同為false,不同為true。
!邏輯非:非false則true,非true則false。
特點:偶數個不改變本身。
package com.test.day02;
/*
* 邏輯運算子:用於連線關係表示式。
* &,|,^,!
* &&,||
*
* 與:& 有false則false
* 或:| 有true則true
* 異或:^ 相同則false,不同則true。(男女朋友)
* 非:! true則false,false則true
*/
public class OperatorDemo3 {
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.2 邏輯運算子概述邏輯運算子&&與&的區別,面試常問可以點此瞭解
1)&&和&的區別?
a:最終結果一樣。
b:&&具有短路效果。左邊是false,右邊不執行。
&是無論左邊是false還是true,右邊都會執行
2)||和|的區別?
a:最終結果一樣
b:||具有短路效果.左邊是true,右邊不執行
|是無論左邊是false還是true,右邊都會執行
package com.test.day02;
/*
* &&和&的結果一樣
* ||和|的結果一樣
*
* &&和&的區別:
* &&如果左邊是false,右邊不執行。
* &無論左邊是true還是false,右邊都會執行。
*/
public class OperatorDemo3 {
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. 邏輯運算子
5.1 邏輯運算子概述
1)格式:
(關係表示式)?表示式1:表示式2;
如果條件為true,運算後的結果是表示式1;
如果條件為false,運算後的結果是表示式2;
2)示例:
獲取兩個數中大數。
int x=3,y=4,z;
z = (x>y)?x:y;//z變數儲存的就是兩個數的大數
package com.test.day02;
/*
* 三元運算子:
*
* 格式:
* (關係表示式)?表示式1:表示式2;
* 執行流程:
* A:計算關係表示式的值,看是true還是false
* B:如果是true,表示式1就是運算結果
* 如果是false,表示式2就是運算結果
*/
public class OperatorDemo3 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = (a > b) ? a : b;
System.out.println("c:" + c);
}
}
比較兩個數是否相等
package com.test.day02;
/*
* 三元運算子的練習
* 比較兩個整數是否相同
*/
public class OperatorDemo3 {
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);
}
}
獲取三個數中的最大值
package com.test.day02;
/*
* 獲取三個整數中的最大值
*/
public class OperatorDemo3 {
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);
}
}