歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java教程:基本類型和引用類型

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

日期:2017/3/1 10:30:27   编辑:Linux編程

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







上面代碼的輸出是:

Copyright © Linux教程網 All Rights Reserved