各位大佬,最近关于string的问题始终没有想明白,希望有大神能够指点。
这里有几个问题:
1、
String a = "a"; a.concat("b"); System.out.println(a); //输出:a a = "b"; System.out.println(a); //输出:b a = new String("c"); System.out.println(a); //输出:c
string源码里是final修饰的类,我看到源码中concat方法是返回一个新字符串对象,知道第一个输出是a,但是后面为什么还是可以直接赋值或者new对象?
2、上面那种重新赋值得到的a究竟是引用变了,指向了新的字符串,还是改变了原来的字符串内容?
3、为什么重新用final修饰以后,
final String a = "a"; a = "b"; //编译通过 a = new String("c"); //编译错误
string类的final和这里的fianl究竟是怎么回事呢?
4、为什么源码里final修饰的char[]也可以直接赋值?
public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character storage. */ private final char value[]; /** Cache the hash code for the string */ private int hash; // Default to 0
public String(String original) { this.value = original.value; this.hash = original.hash; }
慕标琳琳
红糖糍粑
相关分类