Java的基本型別和引用型別

a-bit發表於2020-12-09

1、基本資料型別

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

No.資料型別大小/位可表示資料範圍預設值
1byte(位元組型)8-128~1270
2short(短整型)16-32768~327670
3int(整型)32-2147483648~21474836470
4long(長整型)64-9223372036854775808~92233720368547758070
5float(單精度)32-3.4E38~3.4E380.0
6double(雙精度)64-1.7E308~1.7E3080.0
7char(字元)160~255'\u0000'
8boolean(布林)-true或false

false

 

2、引用資料型別

引用資料型別非常多,大致包括:
類、 介面型別、 陣列型別、 列舉型別、 註解型別、 字串型

例如,String型別就是引用型別。
簡單來說,所有的非基本資料型別都是引用資料型別。

 

 

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在棧中的記憶體被釋放掉

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

相關文章