OCA第7部分的Java难题
生活随笔
收集整理的這篇文章主要介紹了
OCA第7部分的Java难题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在OCA系列的Java Puzzlers的這一部分中,我將展示定義字符串的多種方法以及與此相關的潛在驚喜。 創建字符串的兩種基本類型是使用new關鍵字和僅使用字符串文字來創建。
String strWithNew = new String( "hey" ); String strWithLiteral = "ho" ;由于經常使用字符串,因此JVM使用字符串池并使用其中的值,因此不必一次又一次為相同的值創建新對象。 因此,看到相同字符串文字的對象地址相同就不足為奇了。
public class Puzzler { public static void main(String[] args) { String s1 = "myString" ; String s2 = "myString" ; System.out.println(s1 == s2); // true } }好吧,這應該也一樣吧?
public class Puzzler { public static void main(String[] args) { String s1 = new String( "myString" ); String s2 = new String( "myString" ); System.out.println(s1 == s2); } }并不是的。 這將打印“ false”。 因此,如果我使用文字“ myString”創建一個新字符串,則將其放置在字符串池中。 如果我使用new關鍵字創建它,則不會在池中搜索它,并且在創建它時,也不會將其放在字符串池中。
public class Puzzler { public static void main(String[] args) { String s1 = new String( "myString" ); String s2 = new String( "myString" ); String s3 = "myString" ; String s4 = "myString" ; System.out.println(s1 == s2); System.out.println(s2 == s3); System.out.println(s3 == s4); System.out.println(s1 == s4); } }我希望你能猜出上面發生了什么。 s1創建一個新字符串,并且不將其放入池中,s2執行相同的操作。 s3看一看字符串池,看不到myString并將其創建并放置在池中。 s4說:“好吧,它在游泳池里”。 因此,如果我們計算創建的字符串數,則為3,如果計算池中放置的內容,則為1(myString)。 false,false,true,false是打印到控制臺的內容。
翻譯自: https://www.javacodegeeks.com/2020/05/java-puzzlers-from-oca-part-7.html
總結
以上是生活随笔為你收集整理的OCA第7部分的Java难题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java,JavaFX的流利设计风格文本
- 下一篇: q7goodies事例_Java 8 F