public class Test{
final static List<String> s=new ArrayList();
static{
s.add("sss");
}
public static void main(String[] a) {
for(String d:s){
System.out.println(d);
}
List<String> dd=s;
dd.add("dddddddddd");
for(String d:dd){
System.out.println(d);
}
for(String d:s){
System.out.println(d);
}
}
}
final在这里究竟起了什么作用?有谁能详细剖析一下?
final static List<String> s=new ArrayList();
static{
s.add("sss");
}
public static void main(String[] a) {
for(String d:s){
System.out.println(d);
}
List<String> dd=s;
dd.add("dddddddddd");
for(String d:dd){
System.out.println(d);
}
for(String d:s){
System.out.println(d);
}
}
}
final在这里究竟起了什么作用?有谁能详细剖析一下?
仁兄 believefym 不要后悔啊
说明s指向的内存地址不可变,但new ArrayList();不是常量,还是可以变的,比如s.add("fff");这样是可以的,不过要是s = new ArrayList();这样就是不行了,会抛出异常的