要一直走下去

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

 

String str1 = “abc”;
String str2 = “abc”;
String str3 = “abc”;
String str4 = new String(“abc”);
String str5 = new String(“abc”);

 

 

 

面试题一:String str4 = new String(“abc”) 创建多少个对象?

str4:
字符串常量池:"abc" : 1个
堆:new String("abc") :1个
引用:str4 :1个
总共 :3个

 

面试题二:String str1 = new String("A"+"B") ; 会创建多少个对象? 

str1:
字符串常量池:"A","B","AB" : 3个
堆:new String("AB") :1个
引用:str1 :1个
总共 :5个


面试题三:String str2 = new String("ABC") + "ABC" ; 会创建多少个对象?

str2 :
字符串常量池:"ABC" : 1个
堆:new String("ABC") :1个
引用:str2 :1个
总共 :3个

 

 

 

当调用 intern() 方法时,编译器会将字符串添加到常量池中(stringTable维护),并返回指向该常量的引用

String s1 = "Hello";
String s2 = new StringBuffer("He").append("llo").toString();
String s3 = s2.intern();


System.out.println("s1 == s2? " + (s1 == s2)); // false
System.out.println("s1 == s3? " + (s1 == s3)); // true

1

posted on 2021-06-25 18:07  要一直走下去  阅读(320)  评论(0)    收藏  举报