A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

林文杰

初级黑马

  • 黑马币:19

  • 帖子:6

  • 精华:0

© 林文杰 初级黑马   /  2018-4-16 23:42  /  873 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

字符串的内容是放在方法区中的常量池中的。
所以,直接定义初始化和通过构造方法初始化字符串,使得两者对象所指的内容是不一样的。
比如如下代码:
---通用代码忽略--
String s1=new String(“hello”);
String s2=”hello”;
String s3=”hello”;
System.out.println(“s1==s2:”+(s1==s2);
System.out.println(“s1==s3:”+(s1==s3);
System.out.println(“s2==s3:”+(s2==s3);
打印结果:
s1==s2:false
s1==s3:false
s2==s3:true
其中:s1指向的是堆中对象的地址,而s2和s3指向的是方法区常量池中“hello”的地址
具体内存地址数据大概指向图如下:




1 个回复

倒序浏览
写的挺好的,加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马