Java SilverのStringクラスのコンスタントプール纏め
Stringクラスのみコンスタントプールという仕組みがあるようで、同じ文字列なら、インスタンスを使いまわすという仕組みがあるようです。これをコンスタントプールと言います。
以下、同一性、同値性の確認例です。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class Main { | |
public static void main(String[] args) { | |
String str1 = "aa"; | |
String str2 = "aa"; // 使いまわすため同一インスタンスとなる | |
System.out.println(str1 == str2); // 同一のため、true | |
System.out.println(str1.equals(str2)); // 同値のため、true | |
} | |
} |
ただ、意図的にnewしてインスタンス生成すると別々のインスタンスとなるので、この辺引っかけ問題があります。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class Main { | |
public static void main(String[] args) { | |
String str1 = "aa"; | |
String str2 = new String("aa"); // newすると別インスタンスになる | |
System.out.println(str1 == str2); // 同一インスタンスではないため、false | |
System.out.println(str1.equals(str2)); // 同値のため、true | |
} | |
} |
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント