數據類型
布爾類型
Java當中的bool類型也是兩個:true(真) 和false(假)
不同于C語言,在C語言中,我們可以將一個數字放在bool類型中,0為假,非0為真
1
2
3
4
|
int fun(){ return 1 ; } bool a = fun(); |
在Java中,bool類型沒有具體的值,如果按照上述C語言的寫法,則會出錯,true就是true,false就是false,沒有其他的值。
1
2
|
System.out.println( true ); System.out.println( false ); |
輸出結果如下:
true
false
在JVM規范中,并沒有規定bool類型大小,但是在有的書中,bool類型是1個字節大小,有的書中是1個比特位大小。
字符串類型String
在Java中,沒有指針,但是有單獨的字符串類型String
String 也叫引用類型
1
2
|
String str = "abcde" ; System.out.println(str); |
拼接字符'+'
1
|
System.out.println( "hello" + "world" ); |
執行結果
helloworld
+可以將兩個字符串拼接
但是如下代碼的執行結果卻不同
1
2
3
4
|
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,可以用雙轉義
1
|
System.out,println( "\\n" ); |
輸出結果如下:
\n
運算符
加減乘除
+,-,*,/,是我們最常見的運算符,這些運算符效果就是你想的那樣,只不過唯一要注意''號,除號需要注意除數不能為0,并且如果涉及到小數計算建議使用double,因為在計算機語言之中1/2=0,因為1和2都是整形,結果也只會是整形。
模運算
‘%'模運算,起作用是求余數
1
|
int a = 5%2; |
上面代碼中,a的值是1,因為5/2 == 2余1,所以a等于1.
增量賦值運算符
增量賦值運算符,+=,-=,*=,/=等等
和C語言之中的混合運算符一樣
a+=3 <==>a = a+3;
并且在Java中,增量賦值會自帶強制類型轉換。
1
2
3
4
|
short a = 2 ; int s = ( int )a+ 2 ; //需要強制類型轉換 int b = 0 ; b+=a; //不需要,因為已經自動轉換類型了 |
自增運算符和自建運算符
++和–,其等價于a+=1和a-=1;
自增運算符分為前置和后置
舉個例子:
1
2
3
4
5
|
int a = 0 ; int b = a++; //等價于int b = a;a = a+1; int c = --a; //等價于 a = a-1;int b = a; |
賦值運算符
‘='就是賦值運算符,其作用是將右邊的值賦給左邊
判斷運算符
判斷運算符有==,!=,<=,>=,<,>。
其為bool表達式,結果是bool類型的
1
2
3
4
5
6
7
8
|
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.
運算符優先級
運算符存在優先級,但是大多時候不必去深究,可以通過括號來先計算內部的表達式,靈活運用括號來防止運算符優先級造成的問題。
總結
到此這篇關于Java基礎之數據類型與運算符的文章就介紹到這了,更多相關Java數據類型與運算符內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/byte_weibo/article/details/120763489