1. 程式人生 > >Java中的基本數據類型和引用數據類型的區別

Java中的基本數據類型和引用數據類型的區別

傳遞 做出 定義 精度 技術分享 text 數組類 float java

一、數據類型

Java中的數據類型分為兩大類,基本數據類型和引用數據類型。

1、基本數據類型

基本數據類型只有8種,可按照如下分類
①整數類型:long、int、short、byte
②浮點類型:float、double
③字符類型:char
④布爾類型:boolean

No. 數據類型 大小/位 可表示數據範圍 默認值
1 byte(字節型) 8 -128~127 0
2 short(短整型) 16 -32768~32767 0
3 int(整型) 32 -2147483648~2147483647 0
4 long(長整型) 64 -9223372036854775808~9223372036854775807 0
5 float(單精度) 32 -3.4E38~3.4E38 0.0
6 double(雙精度) 64 -1.7E308~1.7E308 0.0
7 char(字符) 16 0~255 ‘\u0000‘
8 boolean(布爾) - true或false false

2、引用數據類型

引用數據類型非常多,大致包括:
類、 接口類型、 數組類型、 枚舉類型、 註解類型、 字符串型

例如,String類型就是引用類型。
簡單來說,所有的非基本數據類型都是引用數據類型。

二、基本數據類型和引用數據類型的區別

1、存儲位置

基本變量類型

  • 在方法中定義的非全局基本數據類型變量的具體內容是存儲在棧中的

引用變量類型

  • 只要是引用數據類型變量,其具體內容都是存放在堆中的,而棧中存放的是其具體內容所在內存的地址
    ps:通過變量地址可以找到變量的具體內容,就如同通過房間號可以找到房間一般
public class Main{
   public static void main(String[] args){
       //基本數據類型
       int i=1;
       double d=1.2;
       
       //引用數據類型
       String str="helloworld";
   }
}

技術分享圖片

2、傳遞方式

基本變量類型

  • 在方法中定義的非全局基本數據類型變量,調用方法時作為參數是按數值傳遞
//基本數據類型作為方法參數被調用
public class Main{
   public static void main(String[] args){
       int msg = 100;
       System.out.println("調用方法前msg的值:\n"+ msg);    //100
       fun(msg);
       System.out.println("調用方法後msg的值:\n"+ msg);    //100
   }
   public static void fun(int temp){
       temp = 0;
   }
}

技術分享圖片

引用變量類型

  • 引用數據類型變量,調用方法時作為參數是按引用傳遞
//引用數據類型作為方法參數被調用

class Book{
    String name;
    double price;

    public Book(String name,double price){
        this.name = name;
        this.price = price;
    }
    public void getInfo(){
        System.out.println("圖書名稱:"+ name + ",價格:" + price);
    }

    public void setPrice(double price){
        this.price = price;
    }
}

public class Main{
   public static void main(String[] args){
       Book book = new Book("Java開發指南",66.6);
       book.getInfo();  //圖書名稱:Java開發指南,價格:66.6
       fun(book);
       book.getInfo();  //圖書名稱:Java開發指南,價格:99.9
   }

   public static void fun(Book temp){
       temp.setPrice(99.9);
   }
}

調用時為temp在棧中開辟新空間,並指向book的具體內容,方法執行完畢後temp在棧中的內存被釋放掉

技術分享圖片

開通博客園來的第一篇博文,有不對的地方請大家多多指正,我將會做出及時更改。

Java中的基本數據類型和引用數據類型的區別