字符額 “+” 操作
是拿字符在計算機底層對應的數值來進行計算的
-
‘A’ = 65 A-Z是連續的
-
'a' = 97 a-z是連續的
-
'0' = 48 0-9是連續的
算數表達式中包含多個基本數據類型的值的時候,整個算數表達式的類型會自動進行提升。
提升規則:
-
byte類型,shot類型、char類型將被提升到int類型
-
整個表達式的類型自動提升到表達式中最高等級操作數同樣的類型,等級循序:byte,short,char→int→long→float→double
public static void main(String[] args) { int i = 10; char c = 'A'; //A的值是65 ,char 類型的賦值用單引號 c='a'; //'a'的值是97 c='0'; //‘0’的值是48 System.out.println(i + c); //char ch=i+c; //報錯。因為char類型會自動提升為int類型 int j=i+c; System.out.println(j); //int k=10+13.14; // 報錯,因13.14是double類型,10是int類型的,double類型的等級比int類型的要高,所以結果應該是double類型的 double k=10+13.14; System.out.println(k); }
字符串的 “+” 操作
當“+”操作出現的字符串時,這個“+”是字符串連接符,而不是算數運算符。 例如:“test” + 666, 結果是test666 在“+”操作中,如果出現了字符串,這個“+”就是連接運算符,否則就是算數運算符。當連續進行+操作時,從左到右逐個執行。 例如:1+99+test 結果是100test
public static void main(String[] args) { System.out.println("test" + "str"); System.out.println("test" + 666); System.out.println(666 + "test"); System.out.println("test" + 100 + 1); System.out.println(1 + 100 + "test"); /*字符串的 + 操作,當“+”操作出現的字符串時,這個“+”是字符串連接符,而不是算數運算符。 例如:“test” + 666, 結果是test666 在“+”操作中,如果出現了字符串,就是連接運算符,否則就是算數運算符。當連續進行“+”操作時,從左到右逐個執行。 例如:1+99+test 結果是100test */ }
賦值運算符
符號 | 作用 | 說明 |
---|---|---|
= | 賦值 | a=10,將10賦值給a |
+= | 加后賦值 | a+=b,將a加b后,所得值再賦值給a |
-= | 減后賦值 | a-=b,將a減b后,所得值再賦值給a |
*= | 乘后賦值 | a*=b,將a乘b后,所得值再賦值給a |
/= | 除后賦值 | a/=b,將a除以b后,所得值再賦值給a |
%= | 取余后賦值 | a%=b,將a除以b后,所得余數再賦值給a |
注意:紅色是擴展賦值運算符,擴展的賦值運算符,底層隱含了強制類型轉換。
例如:
short s=10; s+=20;//結果是30,雖然s是short類型,20是int類型,但底層自動進行類型轉換,所以編譯通過 //s=s+20;//編譯報錯,因10是int類型,無法與short類型進行運算 s=(short)(s+20);//進行強制類型轉換就可以進行編譯了