12

让你彻底搞懂Java字符串常量池底层原理的12个问题

不经意间刷到一篇字符串常量池博文,看完后发现存在不少错误,兴趣一来顺便又去搜了几篇,发现都大同小异,或多或少都有些问题,所以Bug君吹掉了键盘上的灰,拾掇拾掇就来了!

其实要彻底搞懂字符串常量池底层原理,只需要搞懂我精心设置的12道题即可,废话不多说,直接上题!关卡12道,欢迎冲关,如果冲关成功,那恭喜道友,你已至字符串常量池陆地神仙境。

【提示】为了码友们保持一致,请基于JDK1.7+完成冲关!

// 1public static void main(String[] args) {    String s1 = "Bug";    String s2 = "B" + "ug";    System.out.println(s1 == s2);    System.out.println(s2 == s2.intern());}
// 2public static void main(String[] args) {    String s1 = "Bug";    String s2 = new String("Bug");    System.out.println(s1 == s2);    System.out.println(s2 == s2.intern());}
// 3public static void main(String[] args) {    String s1 = new String("Bug");    String s2 = new String("Bug");    System.out.println(s1 == s2);    System.out.println(s2 == s2.intern());}
// 4public static void main(String[] args) {    String s1 = "B";    String s2 = s1 + "ug";    System.out.println(s2 == s2.intern());}
// 5public static void main(String[] args) {    String s1 = "i";    String s2 = s1 + "nt";    System.out.println(s2 == s2.intern());}
// 6public static void main(String[] args) {    final String s1 = "B";    String s2 = s1 + "ug";    System.out.println(s2 == s2.intern());}
// 7public static void main(String[] args) {    String s0 = "Bug";    String s1 = "B";    String s2 = s1 + "ug";    System.out.println(s0 == s2);    System.out.println(s2 == s2.intern());}
// 8public static void main(String[] args) {    String s0 = "Bug";    final String s1 = "B";    String s2 = s1 + "ug";    System.out.println(s0 == s2);    System.out.println(s2 == s2.intern());}
// 9public static void main(String[] args) {    String s1 = "B";    String s2 = "ug";    String s3 = s1 + s2;    System.out.println(s3 == s3.intern());}
// 10public static void main(String[] args) {    String s0 = "Bug";    String s1 = "B";    String s2 = "ug";    String s3 = s1 + s2;    System.out.println(s3 == s3.intern());}
// 11public static void main(String[] args) {    final String s1 = "B";    final String s2 = "ug";    String s3 = s1 + s2;    System.out.println(s3 == s3.intern());}
// 12public static void main(String[] args) {    String s0 = "Bug";    final String s1 = "B";    final String s2 = "ug";    String s3 = s1 + s2;    System.out.println(s3 == s3.intern());}

有不确定的答案一定要打开你的IDE亲自验证一下哦!这样印象会更深刻,相信你一定会发现新大陆!所以,答案和全面解析我们下期见!

13
发表评论
留言与评论(共有 0 条评论) “”
昵称:
匿名发表 登录账号
         
   
验证码:

相关文章

推荐文章

10
11