java什么是原生类_Java 基础 - 原生类型
更詳細(xì)的說明,請參考:?Java 原生類型與包裝器類型深度剖析,https://blog.csdn.net/justloveyou_/article/details/52651211
一. 原生類型與包裝器類型
1Byte = 8 Bits
二. 自動轉(zhuǎn)型與強(qiáng)制轉(zhuǎn)型
精度(低1-高5)
1
byte(1字節(jié))
Byte
short(2字節(jié))
Short
char(2字節(jié))
Character
2
int(4字節(jié))
Integer
3
long(8字節(jié))
Long
4
float(4字節(jié))
Float
5
double(8字節(jié))
Double
NA
boolean(未定)
Boolean
1、 自動轉(zhuǎn)型
自動轉(zhuǎn)型總原則:byte,short,char(同級)-> int -> long -> float -> double?(由低精度到高精度)
1.1 由低精度到高精度的自動轉(zhuǎn)換
具體可分為以下兩種情形:
1)從位數(shù)低的類型向位數(shù)高的類型轉(zhuǎn)換
byte b = 1;char c = 1;short s = 1;int i = 1;
c= b; //Error,同級
c = s; //Error,同級
s = c; //Error,同級
i = c; //OK
2) 從整型向浮點(diǎn)型的轉(zhuǎn)換
int i = 1;long t = 1;float f = 1;double d = 1;
f= i; //Ok
f = t; //Ok
d = f; //Ok
1.2 運(yùn)算符對基本類型的影響
具體可分為以下兩種情形:
1) 當(dāng)使用 +、-、*、/、%、==、>、< 等 等運(yùn)算符對基本類型進(jìn)行運(yùn)算時(shí),遵循如下規(guī)則:
兩個(gè)操作數(shù)中,先考慮是否有一個(gè)是double類型的。如果有,另一個(gè)操作數(shù)和結(jié)果 將會被轉(zhuǎn)換成double類型。再依次考慮float,long。除此之外,兩個(gè)操作數(shù)(包括byte、short、int、char)都將會被轉(zhuǎn)換成int類型。
byte b1 = 10 ; //OK,會檢查發(fā)現(xiàn)10沒有超過byte類型的最大值
byte b2 = 12; //OK,會檢查發(fā)現(xiàn)12沒有超過byte類型的最大值
byte b = b1 + b2; //Error,byte類型在計(jì)算時(shí)會自動提升為int類型,此時(shí)就會報(bào)錯(cuò),因?yàn)閎1+b2實(shí)際上是int類型,但是左側(cè)的變量為byte類型。
short s1=1; //OK,會檢查發(fā)現(xiàn)1沒有超過short類型的最大值
s1=s1+1; //Error,因?yàn)閟1+1 結(jié)果int,但左側(cè)變量為 short,報(bào)錯(cuò)
s1++; //OK,不會報(bào)錯(cuò),與s1=s1+1不同!!!,會檢查發(fā)現(xiàn)2沒有超過short類型的最大值
s1=1+1; //OK,1+1 是個(gè)編譯時(shí)可以確定的常量,'+'運(yùn)算在編譯時(shí)就被執(zhí)行了,而不是在程序執(zhí)行的時(shí)候,這個(gè)語句的效果等同于s1=2
2) 當(dāng)使用+=、-=、*=、/=、%=、i++、 ++i運(yùn)算符對基本類型進(jìn)行運(yùn)算時(shí),遵循如下規(guī)則:
運(yùn)算符右邊的數(shù)值將首先被強(qiáng)制轉(zhuǎn)換成與運(yùn)算符左邊數(shù)值相同的類型,然后再執(zhí)行運(yùn)算,且運(yùn)算結(jié)果與運(yùn)算符左邊數(shù)值類型相同。自增(減)運(yùn)算也類似。
short s1=1; //OK,會檢查發(fā)現(xiàn)1沒有超過short類型的最大值
shorts2;
s1+=1; //OK,正確,1首先被強(qiáng)制轉(zhuǎn)換為short型,然后再參與運(yùn)算,并且結(jié)果也是short類型
s2= ++s1; //OK,正確,s2的值為2
2、強(qiáng)制轉(zhuǎn)型
強(qiáng)制轉(zhuǎn)換的格式是在需要轉(zhuǎn)型的數(shù)據(jù)前加上 “( )”, 然后在括號內(nèi)加入需要轉(zhuǎn)化的數(shù)據(jù)類型。主要發(fā)生于以下兩種情形:
由高精度向低精度轉(zhuǎn)換
一種類型到另一種類型轉(zhuǎn)換,則必須使用強(qiáng)制類型轉(zhuǎn)化(同級之間:byte,short,char)
byte b = 3;int i = 3;long t = 3;float f = 3;char c = 3;short s = 3;
i= (int) f; //OK,由高精度向低精度轉(zhuǎn)換
t = (long) f; //OK,由高精度向低精度轉(zhuǎn)換
b = (byte) i; //OK,由高精度向低精度轉(zhuǎn)換
i= b; //OK,由低精度向高精度轉(zhuǎn)換,自動轉(zhuǎn)型
System.out.println(c==s); //OK,true,c 和 s 自動轉(zhuǎn)型為int,然后比較
b= (byte) s; //OK,一種類型到另一種類型轉(zhuǎn)換
c = (char) b; //OK,一種類型到另一種類型轉(zhuǎn)換
c = (char) s; //OK,一種類型到另一種類型轉(zhuǎn)換
特別需要注意的是,強(qiáng)制轉(zhuǎn)換常常會導(dǎo)致二進(jìn)制位的截取,甚至?xí)?dǎo)致意想不到的結(jié)果:
int i = 128;byte b = (byte)i;
System.out.println(b);//-128(即-0)
---------------------
作者:書呆子Rico
來源:CSDN
原文:https://blog.csdn.net/justloveyou_/article/details/52651211
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!
總結(jié)
以上是生活随笔為你收集整理的java什么是原生类_Java 基础 - 原生类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人们平时吃的洋葱是植物的哪部分?蚂蚁庄园
- 下一篇: 谷歌已向 Pixel 设备推出安卓 13