Java提供的數據類型主要分為兩大類:基本數據類型和引用數據類型。
Java中的基本數據類型
名稱 | 大小 | 取值范圍 |
byte型 (字節) | 8bit | -128-127 (-2^7到2^7-1) |
short型 (短整型) |
16bit | -2^15到2^15-1 |
int型 (整形) | 32bit | -2^31到2^31-1 |
long型 (長整型) | 64bit | -2^63到2^63-1 |
float型 (單精度浮點型) | 32bit | |
double型 (雙精度浮點型) | 64bit | |
char型 (字符型) | 16bit | |
boolean型 (布爾型) | true和false | 只有兩種結果,要么為“真”要么為“假” |
Java中的引用數據類型:
Java作為面向對象的語言,Java中所有用class,interface,abstract class定義的都屬于Java的引用數據類型。
如何理解Java中的基本數據類型和引用數據類型:
1.Java的基本數據類型是由Java語言本身提供的數據類型,不需要用戶自己定義;
2.Java中的引用數據類型則是由用戶自己定義的,而引用數據類型的定義需要用到基本數據類型;
3.從內存關系上來說:
Java的的內存分為兩大塊:棧內存和堆內存
棧內存負責存儲方法中的基本數據類型變量和對象的引用變量
堆內存負責存儲通過new關鍵字產生的數據,也就是new關鍵字后面的類中的屬性和方法。
Java中基本數據類型存儲在棧內存中,而引用數據類型的類型名存儲在棧內存中,但是引用數據類型的內容則存儲在堆內存中。兩者之間通過地址來連接,實現互相的訪問。
4.數據由小范圍往大范圍轉換時,JVM會自動幫我們實現類型的轉換。比如:int i=10;long l=i;類似于這樣的數據轉換,Java的虛擬機可以自動幫我們來完成這個工作。但是當數據由大范圍往小范圍轉換時就需要手動的加上強制類型轉換。如果在轉過程中出現數據的溢出則根據小范圍的數據類型的值域進行變動。比如說把整形的-129賦值給byte這時候輸出byte的值就是127;如果把整形的128賦值給byte類型,那么輸出的就應該是-128。
Java中的參數傳遞:
基本數據類型:
1
2
3
4
5
6
7
8
9
10
|
public void test1(){ int i= 10 ; long l; l=i; System.out.println(i); //輸出值10 System.out.println(l); //輸出值10 l=i+ 1 ; System.out.println(i); //輸出值10 System.out.println(l); //輸出值11 } |
由于基本數據類型是變量名與變量值一同存儲在棧內存中,i 和 l 這兩個變量是互相獨立的,對 l 的賦值操作并不會影響 i 值。
引用數據類型:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
public class Book { private String name; public String getName() { return name; } public void setName(String name) { this .name = name; } } public class Test { public static void main(String[] args) { Book book1= new Book(); book1.setName( "《百年孤獨》" ); Book book2= new Book(); book2.setName( "《圍城》" ); System.out.println( "book1:" +book1.getName()); //輸出:book1:《百年孤獨》 System.out.println( "book2:" +book2.getName()); //輸出:book2:《圍城》 book1=book2; book1.setName( "《活著》" ); System.out.println( "book1:" +book1.getName()); //輸出:book1:《活著》 System.out.println( "book2:" +book2.getName()); //book2:《活著》 } } |
第一次new了兩個對象分別是book1,book2他們的書名分別是“百年孤獨”和“圍城”。然后通過賦值,book1也指向了與book2一樣的內存區域,這時無論是對book1 還是book2 進行操作影響的都是同一塊內存區域了。這也就是為什么后面的輸出都是一樣的原因了。另外book1原先開辟的內存空間由于沒有使用,JVM的垃圾回收機制會對其進行處理,將這些不用的內存空間進行釋放。
以上這篇Java的數據類型和參數傳遞(詳解)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。