JavaRush /Java Blog /Random-TW /喝咖啡休息#105。為什麼 Java 中的字串是不可變的?Java中的介面與多重繼承

喝咖啡休息#105。為什麼 Java 中的字串是不可變的?Java中的介面與多重繼承

在 Random-TW 群組發布

為什麼 Java 中的字串是不可變的?

來源:Dev.to 在理解為什麼 Java 中的字串是不可變的之前,我們需要思考為什麼我們要讓某些東西不可變? 喝咖啡休息#105。 為什麼 Java 中的字串是不可變的? Java中的介面與多重繼承 - 1不可變意味著一旦創建我們就無法更改它。我們可以想到使某些東西不可變的唯一原因是一起使用時的同步。這就是字串不可變的原因。在Java中, String物件是共享的,並且緩存在String Pool中。它是堆上儲存字串的特定位置,如果字串具有相同的值,則在多個執行緒之間共用這些字串。例如:在字串池中,如果已經存在一個值為“test”的字串,並且程式想要建立另一個具有相同值的字串對象,那麼它將獲得相同的引用,而不是創建一個新的字串物件。現在我們知道字串是如何儲存在堆上的。讓我們看看為什麼它們沒有變化。
  1. 不變性的第一個原因是線程安全。由於行在行池中的多個執行緒之間共享,因此我們需要限制任何隨機執行緒來更改它。對行的任何更改都可能影響訪問同一行的其他線程。如果一個執行緒想要新一行的值,它需要建立另一行並引用它。

  2. 通常我們會使用String作為Map中的鍵。如果字串是可變的,任何人都可以更改字串的值,而我們將遺失實際的金鑰。

Java中的介面與多重繼承

資料來源:Dev.to 讓我們了解什麼是多重繼承。多重繼承是一些物件導向程式語言的功能,其中一個物件或類別可以從多個父物件或父類別繼承功能。 喝咖啡休息#105。 為什麼 Java 中的字串是不可變的? Java中的介面與多重繼承 - 1如上圖所示,多重繼承子類別可以有兩個或多個基類,但要實現這一點,我們需要一個介面。

介面

Java 中的介面是類別的藍圖。它有靜態常數和抽象方法。也就是說,介面只能包含抽象方法和變量,不能有方法體。它不能以與抽象類別相同的方式創建。

那我們要在哪裡聲明這些方法的主體呢?

方法體根據程式設計師的要求在需要該方法的類別內部聲明。

如何聲明接口?

可以使用interface關鍵字來聲明介面。句法:
interface interface_name {abstract methods}

筆記

為了在類別中使用聲明的接口,我們必須使用implements關鍵字。

執行?

首先,我們將建立一個列印接口,並在其中建立一個抽象print()方法;
interface printgib{
void print();
}
現在我們已經有了一個可供類別使用的接口,因此讓我們建立類別abcgk並在其中實作該介面。
public class abc implements printgib{
public void print(){                     //1st implementation of print
System.out.println("I love you 3000");
}
public static void main(String[] args){
abc obj = new abc();
gk obj1 = new gk();
obj.print();
obj1.print();
}
}

class gk implements printgib{
public void print(){                   //2nd implementation of print
System.out.println("I am Gk");
}
}
如上面的程式碼所示,我們實作了多重繼承並實作了一個介面。現在運行程式碼,儲存檔案並...
javac file_name.java
java abc

結果:

喝咖啡休息#105。 為什麼 Java 中的字串是不可變的? Java中的介面與多重繼承 - 2
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION