Java中String类为什么定义为final
2016-08-13 10:07
288 查看
String类用final定义,表示这个类不可被修改。当我们用String定义一个“aaa”时,在再定义一个“aaabbb”时,不是在原来的内存地址中修改”aaa为“aaabbb“的,是在另外的地址上存入“aaabbb”的。个人认为,将String类定义为final,最主要的原因是保证安全。
例如执行下面的程序:
public class Test1 {
public static void main(String[] args) {
String s = "hello";
String s1 = s + "world";
System.out.println(s);
System.out.println(s1);
StringBuffer ss = new StringBuffer("h");
StringBuffer ss1 = ss.append("w");
System.out.println(ss);
System.out.println(ss1);
}
}运行的结果为:
因为String类不可变,因此在s被赋值为hello时,再赋值world时,被存储在另外的内存地址上,所以s的值依然为hello。但是StringBuffer没有这样不可变的保护,所以会在原来的数据上进行修改,将ss的值改为hw。
例如执行下面的程序:
public class Test1 {
public static void main(String[] args) {
String s = "hello";
String s1 = s + "world";
System.out.println(s);
System.out.println(s1);
StringBuffer ss = new StringBuffer("h");
StringBuffer ss1 = ss.append("w");
System.out.println(ss);
System.out.println(ss1);
}
}运行的结果为:
因为String类不可变,因此在s被赋值为hello时,再赋值world时,被存储在另外的内存地址上,所以s的值依然为hello。但是StringBuffer没有这样不可变的保护,所以会在原来的数据上进行修改,将ss的值改为hw。
相关文章推荐
- 为什么Java匿名内部类的方法中用到的局部变量都必须定义为final
- 在java中String类为什么要设计成final?
- 为什么Java匿名内部类中的方法参数必须定义为final
- Java学习笔记(二十):关于String类为什么是final
- 在java中String类为什么要设计成final?
- 在java中String类为什么要设计成final?
- 为什么Java匿名内部类的方法中用到的局部变量都必须定义为final
- 在java中String类为什么要设计成final?
- String类为什么被定义为final类型
- 在java中String类为什么要设计成final?
- java中的String类为什么是final修饰的
- java中String类为什么要设计成final
- Java基础面试题1-String类为什么是final的
- java String类为什么是final的
- 【笔记】在java中String类为什么要设计成final?
- java中String类为什么要设计成final
- java中内部类访问局部变量为什么要定义局部变量为final
- 在java中String类为什么要设计成final
- 关于java为什么在Method中局部内部类或者匿名内部类调用Method中定义的变量要用final修饰?
- 为什么C++中的类不能定义自身类的对象,而java可以? 【转载】