黑马程序员技术交流社区
标题:
关于String的问题!
[打印本页]
作者:
七弦
时间:
2014-5-24 21:54
标题:
关于String的问题!
String这个类型的class为什么要定义成final?
作者:
leo_lzj
时间:
2014-5-24 22:14
明确两点:
1、一个双引号就是一个对象;
2、创建一个字符串并初始化赋值,则这个字符串值就固定存在了内存当中,不能被改变
举个例子:
public class Test2 {
public static void main(String[] args) {
String str="abc";
String str1=new String("abc");
str ="haha";
System.out.println(str);//打印 haha
System.out.println(str==str1);//flase
System.out.println(str.equals(str1));//flase
}
}
复制代码
上面代码中,
String str="abc";这一句创建了一个对象,String str1=new String("abc");创建了两个对象:一个abc,一个new均放在堆内存中,str和str1放在栈内存中;
实际上abc这个对象被创建后就固定了,不能不改变,因此String类型是finall,如果再给str赋值,改变的是str所引用的堆内存中haha的地址值,因此打印haha;
后面两句打印结果都为假,说明是两个不同的对象,不仅栈内存中地址不同,对象实体中的内容也不相同。
作者:
yinxjfly
时间:
2014-5-25 16:26
到位的回答!
作者:
路漫漫_求索
时间:
2014-5-25 23:59
String str = new String("abc");
String类创建的对象,一经创建就不可改变,所以是final
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2