1. java語言有幾種數據類型怎樣申明和賦值
一、基本數據類型
整型:byte、short、int、long (在計算機中以二進制補碼格式存儲)
浮點型:float、double (在計算機中以IEEE754格式存儲)
字元型:char (在計算機中以unicode碼格式存儲)
布爾型:boolean (只有true和false兩個值)
二、 1.長整型:long
定義:long a=100;int b=a; (編譯出錯)
給a重新賦值:long a=2147483648; (編譯出錯)
定義:long a=2147483648L;(正確,說明此時可以是long型的取值范圍)
說明在long型的數據後不加L/l時,數據仍為long型,但其取值范圍卻是int型的取值范圍;數據後加L/l時,取值范圍才是long型的取值范圍。
2.浮點型:long
定義:float a=19; 輸出a時為19.0
定義:float a=19.1; (編譯出錯)
定義:float a=19.1f; (正確)
說明在 float型的數據後不加F/f,則數據不能有小數位,但輸出時,能夠輸出一位小數;若在float型的數據後加上F/f,則數據可以有小數位;
三、類型轉換(註:boolean型不會發生類型轉換,基本類型和復合類型不能相互轉換)
1.自動轉換
1)賦值轉換:用於短位元組的數據類型轉換成長位元組的數據類型(byte型的數據不能轉換成char型,short型和char型數據也不能相互轉換)
2)單目運算符提升
++、——運算符不會自動提升,+(正)、-(負)會將byte、short、char型的數據自動轉換成int型的數據
3)雙目運算符提升
如果有一個操作數是double型的,則把另一個轉換成double型;否則如果有一個操作數是float型的,則把另一個轉換成float型;否則 如果有一個操作數是long型的,則把另一個轉換成long型;否則兩個操作數都轉換成int型。
4)三目運算符<op1> ? <op2> : <op3>其中op1必須是boolean型的,而op2和op3兩操作數必須是能夠自動轉換成相同類型的數據,op2和op3會自動提升為兩操作數中位元組較長的一個,並且結果為提升後的類型。
如:byte a1=20;
short a2=10;
boolean b=true;
short c = b ?
a1 : a2;
結果為short型的數據c
2.強制轉換
例子:
int a;
byte b=(byte)a;
定義:a=-126;
(分析:int形的數據有4個位元組,而byte形的數據只有1個位元組,所以只取int型數據的最後一個位元組)
a的原碼: 10000000,00000000,00000000,01111110
補碼: 11111111,11111111,11111111,10000010
法一:r=(10000010)=130 (此時將 10000010 看成是純的二進制數去計算,而不考慮它的符號位); byte型數據范圍〔-128,127〕,由於 r>127,所以 r=r-M (若整型數據值域[-L,R],則M=L+R+1),如果r還不在byte型數據的取值范圍內,則繼續 r=r-M 直至r在其取值范圍內,取得r後,即為byte型的 b .此處r=-126,所以輸出b為-126.
法二:直接將int型數據的最後一個位元組看成是byte型數據的補碼形式,在將補碼轉換成原碼,即得到 b
四、邏輯運算符
1.&&和|| (&&的優先順序要高於||的)
特點:只要左操作數已經得出整個表達式的值,就不再計算右操作數的之值,左右操作數必須為boolean型的。
例子:
boolean test1= ++x==-1 && ++x==1 || ++x=2;
boolean test2= ++y==-1 || ++y==1 && ++y=2;
System.out.println(x+" "+test1);
System.out.println(y+" "+test2);
結果:1 false
2 true
2.&和| (邏輯位運算符)
特點:先把兩個操作數的值計算出來,然後再進行邏輯運算
int x=-1,y=-1;
boolean test1= ++x==-1 & ++x==1 | ++x=2;
boolean test2= ++y==-1 | ++y==1 & ++y=2;
System.out.println(x+" "+test1);
System.out.println(y+" "+test2);
結果: 2 false
2 true
五、移位運算
<< (左移)高位丟失、低位以0填充
>> (右移) 低位丟失、高位以符號位填充
>>> (無符號位右移) 低位丟失、高位以0填充
此運算符不會對左右兩操作數作算術提升,但會對左操作數進行單獨提升,若為byte、short、char、int型,則得到結果為int型,若為long型,則結果為long型,但左右操作數均不能為浮點型,否則出錯。
當左操作數為int型時,右操作數的低5位才有用,這樣可以防止移位超過int型所具有的位數,當左操作數為long型時,右操作數的低6位才有用。
例子:
int a=-2;
short b=-10;
int c=a>>b;
b的補碼:11111111,11111111,11111111,11110110
取b的最後5位, r=(10110)=22;
a的補碼:11111111,11111111,11111111,11111110
將a向右移動22位,再在高位補上1,得到 11111111,11111111,11111111,11111111 ,轉換成原碼得到 c=-1
六、賦值運算
1.簡單賦值運算
表達式: <變數>=<表達式>
左操作數可以事先沒有賦值
表達式的類型必須和變數的類型相同,或能賦值轉換成變數的類型,
2.組合賦值運算
表達式:<變數> op= <表達式>
int a=10;
double b=23.3;
a*=b;
左操作數事先一定要賦值
左邊的類型和右邊的類型不一定要相同,此處a*b得到的是double型的,組合運算符會自動把double型的值轉換成int型的值存入變數a中。
2. JAVA鐨勫熀鏈鏁版嵁綾誨瀷鍜屽紩鐢ㄦ暟鎹綾誨瀷鐨勫尯鍒
JAVA鐨勫熀鏈鏁版嵁綾誨瀷鍜屽紩鐢ㄦ暟鎹綾誨瀷鐨勫尯鍒錛
1銆佸熀鏈鏁版嵁綾誨瀷鏈夛細byte錛欽ava涓鏈灝忕殑鏁版嵁綾誨瀷錛泂hort錛氱煭鏁村瀷錛沬nt錛氭暣鍨嬶紱long錛氶暱鏁村瀷錛沠loat錛氭誕鐐瑰瀷錛沝ouble錛氬弻綺懼害嫻鐐瑰瀷錛沜har錛氬瓧絎﹀瀷錛沚oolean錛氬竷灝旂被鍨嬨
寮曠敤鏁版嵁綾誨瀷鏈夛細綾匯佹帴鍙g被鍨嬨佹暟緇勭被鍨嬨佹灇涓劇被鍨嬨佹敞瑙g被鍨嬨
2銆佸熀鏈鏁版嵁綾誨瀷鍦ㄨ鍒涘緩鏃訛紝鍦ㄦ爤涓婄粰鍏跺垝鍒嗕竴鍧楀唴瀛橈紝灝嗘暟鍊肩洿鎺ュ瓨鍌ㄥ湪鏍堜笂銆
鑰屽紩鐢ㄦ暟鎹綾誨瀷鍦ㄨ鍒涘緩鏃訛紝棣栧厛瑕佸湪鏍堜笂緇欏叾寮曠敤錛堝彞鏌勶級鍒嗛厤涓鍧楀唴瀛橈紝鑰屽硅薄鐨勫叿浣撲俊鎮閮藉瓨鍌ㄥ湪鍫嗗唴瀛樹笂錛岀劧鍚庣敱鏍堜笂闈㈢殑寮曠敤鎸囧悜鍫嗕腑瀵硅薄鐨勫湴鍧銆
3銆佸湪鏁版嵁鍋氫負鍙傛暟浼犻掔殑鏃跺欙紝鍩烘湰鏁版嵁綾誨瀷鏄鍊間紶閫掞紝鑰屽紩鐢ㄦ暟鎹綾誨瀷鏄寮曠敤浼犻掞紙鍦板潃浼犻掞級銆
3. Java瀹氫箟浜嗗摢浜涘熀鏈鏁版嵁綾誨瀷錛熷熀鏈鏁版嵁綾誨瀷鍜屽紩鐢ㄦ暟鎹綾誨瀷鐨勭壒鐐癸紵
1銆佸竷灝斿瀷 - boolean
1錛塨oolean綾誨瀷閫傜敤浜庨昏緫榪愮畻錛屼竴鑸鐢ㄤ簬紼嬪簭嫻佺▼鎺у埗錛
2錛塨oolean綾誨瀷鏁版嵁鍙鍏佽竧rue鎴杅alse錛0鎴栭潪0鐨勬暣鏁頒笉鑳芥浛浠true鍜宖alse銆
2銆佸瓧絎﹀瀷 - char
1錛塩har鍨嬫暟鎹鐢ㄦ潵琛ㄧず閫氬父鎰忎箟涓婄殑鈥滃瓧絎︹濓紱
2錛夊瓧絎﹀父閲忎負鐢ㄥ崟寮曞彿鎷璧鋒潵鐨勫崟涓瀛楃︼紱
3錛塉ava瀛楃﹂噰鐢║nicode緙栫爜錛屾瘡涓瀛楃﹀崰涓や釜瀛楄妭錛屽洜鑰屽彲鐢ㄥ嶮鍏榪涘埗緙栫爜褰㈠紡琛ㄧず錛
4錛塉ava璇璦涓榪樺厑璁鎬嬌鐢ㄨ漿涔夊瓧絎'\'鏉ュ皢鍏跺悗鐨勫瓧絎﹁漿鍙樹負鍏跺畠鐨勫惈涔夈
3銆佹暣鍨 - int銆乻hort銆乴ong銆乥yte
1錛塉ava鍚勬暣鏁扮被鍨嬫湁鍥哄畾鐨勮〃鏁拌寖鍥村拰瀛楁甸暱搴︼紝鍏朵笉鍙楀叿浣撴搷浣滅郴緇熺殑褰卞搷錛屼互淇濊瘉Java紼嬪簭鐨勫彲縐繪嶆э紱
2錛塉ava璇璦鏁存暟甯擱噺鐨勪笁縐嶈〃紺哄艦寮忥細
1錛夊嶮榪涘埗鏁存暟錛
2錛夊叓榪涘埗鏁存暟錛岃佹眰浠0寮澶達紱
3錛夊嶮鍏榪涘埗鏁存暟錛岃佹眰浠0x鎴0X寮澶淬
3錛塉ava璇璦鐨勬暣鍨嬪父閲忛粯璁や負int綾誨瀷錛屽0鏄巐ong綾誨瀷甯擱噺鍙浠ュ悗鍔'l'鎴'L'錛
4錛塉ava璇璦涓錛屾墍鏈夋暟閮芥槸甯︾﹀彿鐨勶紙姝c佽礋錛夈
綾誨瀷
瀛樺偍絀洪棿
鍙栧艱寖鍥
byte
1瀛楄妭
-128 ~ 127
short
2瀛楄妭
-215 ~ 215-1
int
4瀛楄妭
-231 ~ 231-1
long
8瀛楄妭
-263 ~ 263-1
4銆佹誕鐐瑰瀷 - float銆乨ouble
1錛変笌鏁存暟綾誨瀷綾諱技錛孞ava嫻鐐圭被鍨嬫湁鍥哄畾鐨勮〃鏁拌寖鍥村拰瀛楁甸暱搴︼紱
2錛塉ava嫻鐐圭被鍨嬪父閲忔湁涓ょ嶈〃紺哄艦寮忥細
1錛夊嶮榪涘埗鏁板艦寮忥紱
2錛夌戝﹁℃暟娉曞艦寮忥紱
3錛塉ava嫻鐐圭被鍨嬪父閲忛粯璁や負double綾誨瀷錛屽傝佸0鏄庝竴涓甯擱噺涓篺loat綾誨瀷錛屽垯闇瑕佸湪鏁板瓧鍚庨潰鍔'f'鎴'F'錛
4錛塮loat綾誨瀷鐨勭簿搴︿負6-7浣嶏紝double綾誨瀷鐨勭簿搴︿負15浣嶃
綾誨瀷
瀛樺偍絀洪棿
鍙栧艱寖鍥
float
4瀛楄妭
-3.403E38 ~ 3.403E38
double
8瀛楄妭
-1.798E308 ~ 1.798E308
4. Java的基本數據類型有哪些
整數類型:
byte:位元組佔用 1位元組 8位,用來表達最小的數據單位,儲存數據長度為 正負 127;
short:位元組佔用 2位元組 16位,儲存數值長度為 -32768-32767
int:位元組佔用 4位元組 32位,最為常用的整數類型,儲存長度為,-2^31-1~2^31 (21 億)
long:位元組佔用 8位元組 64位,當到達int數值極限時使用,儲存長度為 看圖片:
浮點數類型:
float:單精度浮點型 32位 取值范圍 3.4e-38~3.4e-38
double:雙精度浮點型 64位 ,java中默認的浮點類型 取值范圍 1.7e-308~1.7e-308
字元類型:
char:16位 ,java字元使用Unicode編碼;
布爾類型
boolean : true 真 和 false 假
引用數據類型:
類 class
介面 interface
5. Java中基本數據類型有哪些
byte:8位,最大存儲數據量是255,存放的數據范圍是-128~127之間。
short:16位,最大內數據存儲量是容65536,數據范圍是-32768~32767之間。
int:32位,最大數據存儲容量是2的32次方減1,數據范圍是負的2的31次方到正的2的31次方減1。
long:64位,最大數據存儲容量是2的64次方減1,數據范圍為負的2的63次方到正的2的63次方減1。
float:32位,數據范圍在3.4e-45~1.4e38,直接賦值時必須在數字後加上f或F。
double:64位,數據范圍在4.9e-324~1.8e308,賦值時可以加d或D也可以不加。
boolean:只有true和false兩個取值。
char:16位,存儲Unicode碼,用單引號賦值。