String修飾的類不能被修改到底是什麼意思?

2021-08-21 08:06:06 字數 589 閱讀 5730

string是字串常量,檢視原始碼我們很容易知道string是被final修飾,一旦申明不可以變改變,那就有疑惑了,那既然string類不可以被修改,那平時我們申明變數

string s="abc";

s="efg";

system.out.println(s);

很容易可以得出efg;

而string是被final修飾,應該不能被改變?

其實這裡應該明白一件事,string不是八大基本資料型別,它是乙個引用型別,

它申明變數

string s1="abc";
其是類似於

string s2=new string("abc");
這裡是s1其實是乙個位址引用,申明s1="abc"後,它會去方法區的字串常量池建立乙個「abc」。然後在棧中生成乙個指向「abc」的位址。

而如下修改變數的方式

string s="abc";

s="efg";

改變的只是將s指向下乙個物件「efg」;而原來的物件「abc」並沒有被改變。

static修飾的方法不能被重寫可以被繼承

今天我們談談為什麼抽象類中不能有靜態的抽象方法以及static修飾的方法不能被重寫可以被繼承 1 static修飾的方法不能被重寫可以被繼承 我們知道static修飾的方法為靜態方法,可以直接使用類名.方法名進行呼叫,即該方法不屬於某個物件屬於該類。我們根據下面的例子在看看static修飾的方法是否...

不能被繼承的類

不能被繼承的類,就是子類在呼叫父類的建構函式的時候失敗就沒法被整合了,所以可以把析構函式定義為private,因為在呼叫建構函式的時候,會先檢查析構函式,如果析構是private的,那麼建構函式也沒法被呼叫。這個問題和另一篇文章類似我們通過設定共有的static函式來構造和析構。class a a ...

不能被繼承的類

題目 用c 設計乙個不能被繼承的類。分析 乙個類被繼承後,在生成派生類物件時,派生類會主動呼叫父類的建構函式,所以如果父類的建構函式被設定成私有時,派生類的物件就無法構建。一 直接將建構函式設為私有函式 class sealedclass static void deleteinstance sea...