資料型別和運算子
- 資料型別
- 布爾型別
- 字串型別String
- 拼接字符'+'
- 轉義字符
- 運算子
- 加減乘除
- 模運算
- 增量賦值運算子
- 自增運算子和自建運算子
- 賦值運算子
- 判斷運算子
- 邏輯判斷符
- 按位運算子
- 移位運算
- 條件運算子
- 運算子優先級
資料型別
布爾型別
Java當中的bool型別也是兩個:true(真) 和false(假)
不同于C語言,在C語言中,我們可以將一個數字放在bool型別中,0為假,非0為真
int fun(){
return 1;
}
bool a = fun();
在Java中,bool型別沒有具體的值,如果按照上述C語言的寫法,則會出錯,true就是true,false就是false,沒有其他的值,
System.out.println(true);
System.out.println(false);
輸出結果如下:
true
false
在JVM規范中,并沒有規定bool型別大小,但是在有的書中,bool型別是1個位元組大小,有的書中是1個位元位大小,
字串型別String
在Java中,沒有指標,但是有單獨的字串型別String
String 也叫參考型別
String str = "abcde";
System.out.println(str);
拼接字符’+’
System.out.println("hello"+"world");
執行結果
helloworld
+可以將兩個字串拼接
但是如下代碼的執行結果卻不同
System.out.println("hello"+10+20);
System.out.println(10+20+"hello");
System.out.println("hello"+(10+20));
System.out.println(10+""+20+"hello");
執行結果如下:
hello1020//10和20被拼接成了字串
30hello//10和20先作和,變成30
hello30//括號括了起來加和之后變成字串
1020hello
//變成字串,因為10和20中間有一個空字串使得10和20沒有加和
轉義字符
轉義字符’'和C語言一樣
會和下一個字符合為另一個字符
比如我們熟知的\n換行
如果要列印\n,可以用雙轉義
System.out,println("\\n");
輸出結果如下:
\n
運算子
加減乘除
+,-,*,/,是我們最常見的運算子,這些運算子效果就是你想的那樣,只不過唯一要注意’'號,除號需要注意除數不能為0,并且如果涉及到小數計算建議使用double,因為在計算機語言之中1/2=0,因為1和2都是整形,結果也只會是整形,
模運算
‘%’模運算,起作用是求余數
int a = 5%2;
上面代碼中,a的值是1,因為5/2 == 2余1,所以a等于1.
增量賦值運算子
增量賦值運算子,+=,-=,*=,/=等等
和C語言之中的混合運算子一樣
a+=3 <==>a = a+3;
并且在Java中,增量賦值會自帶強制型別轉換,
short a = 2;
int s = (int)a+2;//需要強制型別轉換
int b = 0;
b+=a;//不需要,因為已經自動轉換型別了
自增運算子和自建運算子
++和–,其等價于a+=1和a-=1;
自增運算子分為前置和后置
舉個例子:
int a = 0;
int b = a++;
//等價于int b = a;a = a+1;
int c = --a;
//等價于 a = a-1;int b = a;
賦值運算子
‘=’就是賦值運算子,其作用是將右邊的值賦給左邊
判斷運算子
判斷運算子有==,!=,<=,>=,<,>,
其為bool運算式,結果是bool型別的
int a = 0;
boolean c = false;
c = a==0;//a==0為真,c = true;
c = a!=0;//a==0為假,c = false;
c = a>0;//a>0為假,c = false;
c = a<0;//a<0為假,c = false;
c = a>=0;//a>=0為真,c = true;
c = a<=0;//a<=0為真,c = true;
邏輯判斷符
|| :邏輯或
運算式1||運算式2||運算式3……
從左向右判斷,如果有一個為真,則停止判斷回傳真,否則回傳假,
&& :邏輯與
運算式1&&運算式2&&運算式3……
從左向右判斷,如果有一個為假,則停止判斷回傳假,否則回傳假,
!:邏輯取反
!運算式1;
如果運算式1為真,回傳false,如果運算式1為假,回傳true,
注意:所有的運算式必須是bool運算式!!!
按位運算子
按位與&,按位或|,按位異或^,按位取反~
按位與,a&b,對于兩個數a和b,每一個二進制位,如果均為1則對應二進制位也放1,否則放0
1101 & 0011 = 0001
按位或,a|b,對于兩個數a和b,每一個二進制位,如果均為0則對應二進制位也放0,否則放0
1101 & 0011 = 1111
按位異或,a^b,對于兩個數a和b,每一個二進制位,如果相同則為0,否則放1
1101 & 0011 = 1110
按位取反,~a,對于每一個二進制位,除了符號位也就是第一位,其他所有的位1變0,0變1.
~1101 = 1010
移位運算
左移<<,右移>>和無符號右移>>>
左移運算子,將其二進制位左移x個單位,不足的補0
0101 0101 << 2(左移兩位)
結果是01 010100
右移運算子,將其二進制位右移x個單位,不足的補符號位
1101 0101 >> 2(右移兩位)
結果是111101 01
無符號右移,將其二進制位右移X個單位,不足的無論是負數也好正數也好全部補0
1101 0101 >>> 2(無符號右移兩位)
結果是001101 01
PS:沒有無符號左移
條件運算子
條件運算子就是三目運算子
運算式1 ?運算式2:運算式3
運算式1,2,3必須是bool運算式
如果運算式1為真則回傳運算式2,如果運算式1為假,回傳運算式3.
運算子優先級
運算子存在優先級,但是大多時候不必去深究,可以通過括號來先計算內部的運算式,靈活運用括號來防止運算子優先級造成的問題,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/316603.html
標籤:java
