歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java教程:基本類型和引用類型

Java中數據類型可分為兩大類:引用類型(reference)和基本類型(primitive)。

1)基本類型

基本類型有8種:boolean、char、byte、short、int、long、float、double。它們都有相應的包裝類,這些包裝類都屬於引用類型,它們依次是:Boolean、Character、Byte、Short、Integer、Long、Float、Double。

2)引用類型

所有Java對象都是通過對象引用(Object References)進行訪問的,類似於C++中的指針,這個引用指向堆heap中的某塊區域,實際的對象存在於heap中。

例如,聲明如下代碼:

int prim = 10;

Integer refer = new Integer(10);

這兩者在內存中的布局如下圖所示:


至此,有人可能會想:當這兩種類型作為函數參數傳遞時,到底是值傳遞(value)還是引用傳遞(reference),還是兩種類型各自為政?其實Java中的函數參數都是以值方式傳遞的。見代碼片段:

[java]
  1. import java.awt.Point;  
  2.   
  3. /** 
  4.  * Java中參數都以傳值方式傳遞,而不是傳引用方式傳遞 
  5.  * @author ASCE1885 
  6.  * 
  7.  */  
  8. public class PassByValue {  
  9.       
  10.     public static void modifyPoint(Point pt, int in) {  
  11.         //這裡的pt是入參pt的引用的副本,而不是入參pt的副本,即Java以傳值方式傳遞pt的引用   
  12.         //也就是說,pt和入參pt現在指向的是同一個Point對象,詳見圖示   
  13.         pt.setLocation(55);  
  14.         in = 15//這裡的in其實是入參in的一個副本,所有的更改都是對in而言,跟入參in無關   
  15.         System.out.println("During modifyPoint " + "pt = " + pt + "and in = " + in);  
  16.     }  
  17.       
  18.     public static void main(String[] args) {  
  19.         Point p = new Point(0,0);  
  20.         int i = 10;  
  21.           
  22.         System.out.println("Before modifyPoint " + "p = " + p + "and i = " + i);  
  23.         modifyPoint(p, i);  
  24.         System.out.println("After modifyPoint " + "p = " + p + "and i = " + i);  
  25.           
  26.     }  
  27.   
  28. }  

 







上面代碼的輸出是:

Copyright © Linux教程網 All Rights Reserved