final修飾的物件的初始化方式

2021-09-27 07:41:11 字數 1742 閱讀 8228

首先我們先了解final關鍵字的作用,final可以修飾類、方法、變數

- final修飾的類不能有子類,即不能被繼承;

- final修飾的物件的引用位址不能改變,但引用所代表的物件的內容是可變的;

- final修飾的物件的方法不能被重寫;

- final修飾的物件的變數會變成常量,值不能被改變

而且final修飾的物件或者變數在使用之前必須要初始化,否則報錯

而非final修飾的物件或者變數如果在定義的時候沒有初始化,則虛擬機會自動根據其型別初始化成對應的值

執行結果如下,注意char型別的變數預設初始化的值為』\u0000』,是空字串(nul),它轉化為字串是乙個空格,但是它與空格、空字串、null和"null"都不同。

final修飾的物件的初始化方式分兩種情況

第一種情況:final修飾的成員物件有三種初始化方式

1.在定義變數時賦值

final修飾的引用型別所代表的物件的內容是可以改變的

執行結果為

2.宣告完變數後在構造方法中為其賦值

3. 宣告完變數後在構造**塊中為其賦值

如果採用此方式,就不能在構造方法中再次為其賦值,因為構造**塊中的**會在建構函式之前執行,如果在建構函式中再次賦值,

就會造成final變數的重複賦值

第二種情況: final修飾的類物件(靜態物件)

1. 在定義變數時初始化

2.在靜態**塊中初始化

成員變數可以在建構函式中賦值,但是類變數卻不可以。

因為成員變數屬於物件獨有,每個物件建立時只會呼叫一次建構函式,

這樣可以保證該成員變數只被初始化一次;

而類變數是該類的所有物件共有,每個物件建立時都會對該變數賦值

這樣就會造成變數的重複賦值。

final欄位的初始化過程

首先final欄位是一經初始化就無法改變的。其他屬性就不說了。final分為static和非static的。先說非static的final。final int i 10 看下面的一段 class atest 這裡呼叫的是構造器進行對final欄位初始化 問題出現了 類進行例項化的時候的先初始化變數也...

物件的初始化

今天除錯程式遇到的問題 public class singleton private static singleton singleton new singleton public static singleton getinstance public class a void execute 這段...

物件的初始化

分配與初始化 物件的初始化有兩種方法 一種是 類名new 第二種是 類名 alloc init 這兩種方法是等價的,不過,通常的cocoa慣例是使用alloc和init,而不使用new.一般情況下,cocoa程式設計師只是在他們不具備足夠的水平來熟練使用alloc和init方法時,才將new作為輔助...