一、基本型別:儲存在棧中,儲存速度比較快
byte,char,short,int,long,float,double,boolean
二、包裝類
Byte(1位元組),
character(2位元組),
Short(2位元組),
Integer(4位元組),
Long(8位元組),
Float(4位元組),
Double(8位元組),
Boolean
這些包裝類都在java.lang包裡,其中SIZE屬性記錄二進位制位數,MIN_VALUE和MAX_VALUE記錄取值範圍。儲存在堆中,因為使用final修飾,所以無法繼承類以及重寫任何方法。
三、int型值可以賦給所有數值型別的變數
long型值可以賦給long、float、double型別的變數;
float型值可以賦給float、double型別的變數;
double型值只能賦給double型別變數。
把一個能表示更大範圍或者更高精度的型別,轉換為一個範圍更小或者精度更低的型別時,
就需要使用強制型別轉換。
例如:把一個double型值賦值給一個long型別變數,編譯時會報錯,即使這個值沒有超出long型別的取值範圍
long l = 1.0D;
除非使用強制型別轉換
long l=(long) 1.0D;
注意:未帶有字元字尾標識的整數預設為int型別;未帶有字元字尾標識的浮點數預設為double型別。
四、byte,char,short,int四種基本型別及其包裝類(需要Java5.0/1.5以上版本支援)可以用於switch語句,其它型別編譯會報錯。
注意:enum(列舉型別,Java5.0以上版本可用)可用於swith語句
public class Test {
static enum e{
A,B
}
public static void main(String[] args) {
switch (Test.e.A) {
case A:
System.out.println(“A”);
break;
case B:
System.out.println(“B”);
break;
}
}
}
結果:A
運算子對基本型別的影響
1.當使用 、-、*、/、%運算子對基本型別進行運算時,遵循如下規則:
兩個運算元中,先考慮是否有一個是double型別的,是的話,另一個和結果 將會被轉換成double型別。以此考慮float,long,除此之外兩個運算元(包括byte、short、int、char)都將會被轉換成int型別。
2.當使用 =、-=、*=、/=、%=、運算子對基本型別進行運算時,遵循如下規則:
運算子右邊的數值將首先被強制轉換成與運算子左邊數值相同的型別,然後再執行運算,且運算結果與運算子左邊數值型別相同。
面試涉及題目:
short s1=1;s1=s1 1;有什麼錯?short s1=1;s1 =1;有什麼錯?
解析:
short s1=1;//正確,int賦值給short
s1=s1 1;//編譯錯誤,因為s1 1 結果int,轉換為short,報錯
s1=1 1;//正確,1 1是個編譯時可以確定的常量,’ ‘運算在編譯時就被執行了,而不是在程式執行的時候,這個語句的效果等同於s1=2
s1 =1;//正確,1首先被強制轉換為short型,然後再參與運算,並且結果也是short型別
3.當使用“==”運算子在基本型別和其包裝類物件之間比較時,遵循如下規則:
1). 只要兩個運算元中有一個是基本型別,就是比較它們的數值是否相等。
2). 否則,就是判斷這兩個物件的記憶體地址是否相等,即是否是同一個物件。
測試驗證:
int a = 1;
int b = new Integer(1);
Integer c = 1;
Integer d = new Integer(1);
//有一個是基本型別
System.out.println(“a==b ” (a==b));
System.out.println(“a==c ” (a==c));
System.out.println(“a==d ” (a==b));
System.out.println(“b==c ” (b==c));
System.out.println(“b==d ” (b==d));
//兩個都是包裝類物件
System.out.println(“d==c ” (d==c));
結果:
a==b true
a==c true
a==d true
b==c true
b==d true
d==c false
写评论
很抱歉,必須登入網站才能發佈留言。