不太懂来人指导下
每次 new 一个字符串就是产生一个新的对象,即便两个字符串的内容相同,使用 ”==” 比较时也为 ”false” 为啥第一个打印出来的是true?
每次 new 一个字符串就是产生一个新的对象,即便两个字符串的内容相同,使用 ”==” 比较时也为 ”false” 为啥第一个打印出来的是true?
2016-07-30
一种String s1 = "imooc";第二种通过new来创建。第一种的创建方式是在字符串常量池中。将imooc存放到字符串常量池里。s1是引用放在栈里。s1指向常量池的imooc(即s1存放的是imooc的地址)。当我们再次String s2 = "imooc"时。在量池中检查是否存在imooc。如果存在则不会在常量池中再放一个imooc。直接把s2指向imooc。所以s1和s2里面存的地址都是一样的。用==来判断当然返回true喽(==判断的是地址)。相反,new创建的每次new都在堆中放一个字符串进去。(new不就是新的意思吗?哈哈)。所以说第一种是很省空间的,当你需要很多一样的字符串时。希望能明白
举报