黑马程序员技术交流社区

标题: 关于字符串的问题?? [打印本页]

作者: 小蚊子    时间: 2013-12-14 23:54
标题: 关于字符串的问题??
String s = new String("abc");   String s1 = "abc"; 为什么s==s1是false     地址值不都是指向abc的么
作者: jing迪    时间: 2013-12-15 00:00
String s = new String("abc");   String s1 = "abc"; 为什么s==s1是false     地址值不都是指向abc的么
s是引用型变量,指向的是一个String对象 第一句话建立了2个对象 指向对内存中得String对象 堆内存中得String拿到的是"abc"这个字符串对象的地址值 ,而第二句话直接指向常量池中得"abc" 指向不一样  引用型变量==号是比较的地址值所以是false  希望对你有所帮助
作者: 唐侠君    时间: 2013-12-15 00:42
本帖最后由 唐侠君 于 2013-12-15 00:59 编辑

s==s1这种写法返回的结果比较的是地址值;你如果返回的结果比较的是String类中的参数内容就为true了。
String s = new String("abc");   创建了一个String对象s,并输入参数为“abc”;
String s1 = "abc"; 其实应该理解为String s1= new String("abc");   所以创建了两个对象s 和 s1,堆内存中就对应两个不同的地址值,所以结果为false。
作者: 丑男先生。    时间: 2013-12-15 08:27
String和StringBuffer他们都可以存储和操作字符串,即包含多个字符的字符串数据。   
String类是字符串常量,是不可更改的常量。而StringBuffer是字符串变量,它的对象是可以扩充和修改的。
作者: ζ丶凡σ    时间: 2013-12-15 17:42
come on ............




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2