java oca_OCA第7部分中的Java难题
生活随笔
收集整理的這篇文章主要介紹了
java oca_OCA第7部分中的Java难题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
java oca
在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
java oca
總結
以上是生活随笔為你收集整理的java oca_OCA第7部分中的Java难题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: aspcms怎么上传图片(aspcms上
- 下一篇: java oca_OCA第6部分中的Ja