簡體   English   中英

Java中對象的初始化

[英]Initialization of object in Java

我正在學習 Java 中的一些基本 OOP 概念。 考慮以下代碼片段:

class my_class{
    int a;
    public my_class() {
    System.out.print(a+" ");
    a = 10;
    System.out.print(a);
    }
}
class Main{
    public static void main(String[] args) {
    my_class my_object = new my_class();
    }
}

以下代碼的輸出為: 0 10

根據我的理解:

  1. my_class是類的名稱
  2. my_object是我正在創建的對象的引用
  3. new運算符分配內存並返回它的地址,該地址存儲在my_object
  4. my_class()是構造函數,它使用默認值 0 初始化對象的字段,然后為其分配 10

現在考慮代碼:

class my_class{
    final int a;
    public my_class() {
    a=10;
    System.out.print(a);
    }
}
class Main{
    public static void main(String[] args) {
    my_class my_object = new my_class();
    }
}

根據我之前的理解,它應該創建my_object字段final int a設置為默認值 0,該值應該是不可更改的,並在a=10;處標記錯誤a=10; 但它可以工作並打印輸出: 10

我哪里錯了?

您可以初始化任何final一次場,無論是在構造函數(即,每個構造一次),或在其聲明。

(值得注意的是,如果您希望構造函數的參數在最終變量的值中起作用,則必須在構造函數中對其進行初始化——否則最終變量將毫無用處!)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM