1. 程式人生 > 其它 >Java基礎1-1-2—java基礎語法(運算子)

Java基礎1-1-2—java基礎語法(運算子)

2、 運算子

2.1 算術運算子

運算子和表示式
運算子:對常量或者變數進行操作的符號
表示式:用運算子把常量或者變數連線起來符合java語法的式子就可以稱為表示式。
不同運算子連線的表示式體現的是不同型別的表示式。
舉例說明:

	int a = 10;
	int b = 20;
	int c = a + b;

+:是運算子,並且是算術運算子
a+b:是表示式,由於+是算術運算子,所以這個表示式叫算術表示式

/:整數相除,結果只能得到整數,如果想要得到帶有小數的結果,必須加入小數(浮點型別)的運算
%(取模)取餘數
注意事項:
/和%的區別:兩個資料做除法,/取結果的商,%取結果的餘數。
整數操作只能得到整數,要想得到小數,必須有浮點數參與運算。

2.2 字元的“+”操作

字元的“+”操作

public class Test{
	public static void main(String[] args){
		int a = 1;
		char b = 'a';
		System.out.println(a + b); //98
	}
}

a + b的運算中,a為int型別,b為char型別
當(byte short char int)在一起運算的時候,都會提升為int之後,再進行運算
但是,char屬於字元,字元是怎樣提升為int數值的呢?

為什麼要有這樣的碼錶?

'a' --- 97 'A' --- 65 '0' --- 48

2.3 字串的+操作

字串的“+”操作
當+操作中出現字串時,這個+是{字串連線符},而不是算術運算。
在+操作中,如果出現了字串,就是連線運算子,否則就是算術運算。當連續進行"+"操作時,從左到右逐個執行。

public static void main(String[] args){
	// 字串可以使用 + 號,跟【任意資料型別】拼接
	System.out.println("qwer" + 666);
	System.out.println("qwer" + true);
	//從左到右
	System.out.println(1 + 99 + "年");
	System.out.println("5+5=" + 5 + 5); //已經變成字串拼接了 最後就是5+5=55
	System.out.println("5+5=" + (5 + 5)); //提高運算優先順序 
}

2.4 案例-數值拆分

需求:鍵盤錄入一個三位數,將其拆分為個位、十位、百位後,列印在控制檯

public class Test{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		System.out.println("請輸入一個三位數");
		int num = sc.nextInt();
		int ge = num % 10;
		int shi = num / 10 % 10;
		int bai = num / 100;
		System.out.println("整數"+num+"個位為:" + ge);
		System.out.println("整數"+num+"十位為:" + shi);
		System.out.println("整數"+num+"百位為:" + bai);
	}
}

公式總結:
個位:數值 % 10
十位:數值 / 10 % 10
百位:數值 / 10 /10 % 10
千位:數值 / 10 / 10 / 10 % 10

2.5 自增自減運算子

自增自減運算子
++:變數自身+1
--:變數自身-1
++和--既可以放在變數的後邊,也可以放在變數的前面。
注意:單獨使用的時候,++和--無論是放在變數的前邊還是後邊,結果是一樣的

public static void main(String[] args){
	int a = 10;
	++a; 
	a++;
}

參與操作:
++在前:先對該變數做自增(++)或者自減(--),然後再拿變數參與操作。
++在後:先將該變數原本的值,取出來參與操作,隨後再進行自增(++),自減(--)。
++和--,只能操作變數不能操作常量

System.out.println(10++); //錯誤

2.6 賦值運算子

賦值運算子

注意事項:
擴充套件的賦值運算子隱含了強制型別轉換
擴充套件賦值運算子:
+= -= *= /= %=

public static void main(String[] args){
	int a = 10;
	a += 20; //將符號左右兩邊的資料,做加分運算,結果賦值給左邊
	System.out.println(a);
}

注意:

public static void main(String[] args){
	short a = 1;
	a += 1;	// a = (short)(a + 1); 注意:擴充套件賦值運算子底層會自帶強轉功能
	System.out.println(a); 
}

2.7 關係運算符

關係運算符(比較運算子)

> >=  < <= == !=
public static void main(String[] args){
	System.out.println(10 > 20); //false
}

2.8 邏輯運算子

邏輯運算子概述
在數學中,一個數據x,大於5,小於15,我們可以這樣來進行表示:5<x<15。
在java中,需要把上面的式子先進行拆解,再進行合併表達。
拆解為:x>5和x<15
合併後:x>5&x<15
邏輯運算子作用:用於{整合}多個比較表示式的條件
1、連線多個比較表示式
2、連線true或false
最終得到的結果都是boolean型別的true或false
邏輯運算子分類:
&(與):並且 遇false則false,只有符號左右兩邊同時為true,結果才為true。
|(或):或者 遇true則true,只有符號左邊兩邊同時為false,結果才為false。
!(非):取反 !false=true !!true=true
^(異或):相同為false,不同為true
應用場景:
需求:鍵盤錄入學生成績,如果是90-100之間,程式輸出(優秀)
判斷條件(score >= 90 & score <= 100)
需求:鍵盤錄入工人工號,只要3號5號7號。

public static void main(String[] args){
	int x = 10;
	System.out.println(x > 5 & x < 15); 
}

&其實就是一個邏輯運算子
我們可以這樣說,邏輯運算子,是用來連線關係表示式的運算子。
當然,邏輯運算子也可以直接連線布林型別的常量或者變數。

2.9 短路邏輯運算子

短路邏輯運算子

& 和 &&的區別:
&無論符號左邊是true還是false,右邊都要繼續執行
&&具有短路效果,符號左邊為false的時候,右邊就不執行了。
|和||的區別:
邏輯或|,無論左邊真假,右邊都要執行。
短路或||,如果左邊為假,右邊執行;如果左邊為真,右邊不執行。

2.10 三元運算子

三元運算子
格式:關係表示式?表示式1:表示式2;
執行流程:
首先計算關係表示式的值
如果值為true,取表示式1的值
如果值為false,取表示式2的值

public static void main(String[] args){
	int a = 10;
	int b = 20;
	int max = a > b ? a : b;
	System.out.println(max);
}

2.11 案例:三個和尚

需求:一座寺廟裡住著三個和尚,已知他們的升高分別為150cm、210cm、165cm。請用程式實現獲取三個和尚的最高升高。

public static void main(String[] args){
	int height1 = 150;
	int height2 = 210;
	int height3 = 165;
	
	int tempMax = a > b ? a : b;
	int max = tempMax > c ? tempMax : c;
	
	System.out.println(max);
	
	int result = a > b ? a : b > c ? a > b ? a : b : c;
	System.out.println(result);
}