1. 程式人生 > >Java基礎(1)-資料型別

Java基礎(1)-資料型別

越努力越幸運

 一.java的基本資料型別

short byte char int double float long boolean

 

 面試官:int是多少位元組?

答:4個位元組。

面試官:那int在32位的jvm中是多少位元組,int在64位的jvm中是多少位元組?

答:回答不上來.......

正確回答:都是4個位元組,就是因為這個也是java平臺無關性的原因之一。

自動轉換 強制轉換

   short s1=1; s1=s1+1;//1

short s2=1;
s2+=1;//2

對於註釋1來說,在s1+1運算時自動提升為int型別,所以將int賦值給short型別會出現型別轉換錯誤,除非加上強轉。 對於註釋2來說,+=是java語法的規定符,所以java編譯器會對它進行特殊型別處理,可以正確編譯執行。

Java的Integer和int有什麼區別 int是java內建基本資料型別之一,java為每個基本型別都提供了一個封裝類,Integer就是int的封裝類; int變數的預設值為0,Integer預設值為null,Integer能區分出未賦值和值為0的區別; Integer類內部提供了一些關於操作整數的方法。

二.自動裝箱與自動拆箱

Java基本型別儲存在棧中,因此它們的存取速度要快於儲存在堆中的對應包裝類的例項物件。從Java5.0(1.5)開始,JAVA虛擬機器(JavaVirtual Machine)可以完成基本型別和它們對應包裝類之間的自動轉換。因此我們在賦值、引數傳遞以及數學運算的時候像使用基本型別一樣使用它們的包裝類,但這並不意味著你可以通過基本型別呼叫它們的包裝類才具有的方法。另外,所有基本型別(包括void)的包裝類都使用了final修飾,因此我們無法繼承它們擴充套件新的類,也無法重寫它們的任何方法。

基本型別的優勢:資料儲存相對簡單,運算效率比較高

包裝類的優勢:有的容易,比如集合的元素必須是物件型別,滿足了java一切皆是物件的思想

三.int integer包裝類

相互轉換:

1.Integer轉換成int的方法

Integer i = new Integer(10);  int k = i.intValue(); 即Integer.intValue();

2.int轉換成Integer

int i = 10;

Integer it = new Integer(i);

3.String轉換成int的方法

String str = "10";   Integer it = new Interger(str);  

int i = it.intValue();  

即:int i = Integer.intValue(string);

4.int轉換成String

int i = 10;

(1)String s = String.valueOf(i);

(2)String s = Ingeger.toString(i);

(3)String s = "" + i;

5.String轉換成Integer

String str = "10";

Integer it = Integer.valueOf(str);

6.Integer轉換成String

Integer it = new Integer(10);

String str = it.toString();

7.String轉換成BigDecimal

BigDecimal bd = new BigDecimal(str);

注:在建立一個interger物件的時候,interger原始碼中規定如果數值滿足一定的範圍的時候,如果之前已經建立過一個相同值的數值範圍的時候,就直接返回之前建立的那個就可以了,如果不是指定範圍中的,就每一個建立interger物件(即使數值相同),也必須新建立一個,會浪費堆記憶體空間。