一、
public class Main {
private static class Dog {
private Dog(String name) {
this.name = name;
}
private String name;
}
public static void main(String[] args) {
List<Dog> src = new ArrayList<Dog>();
List<Dog> dest = new ArrayList<Dog>();
src.add(new Dog("aaa"));
for(Dog dog : src) {
dest.add(dog);
}
Dog dog = dest.get(0);
dog.name = "bbb";
System.out.println(src.get(0).name);
}
}
上面代码会输出aaa还是bbb?
二、
public class Main {
public static void main(String[] args) {
List<String> src = new ArrayList<String>();
List<String> dest = new ArrayList<String>();
src.add("aaa");
for(String s : src) {
dest.add(s);
}
String s = dest.get(0);
s = "bbb";
System.out.println(src.get(0));
}
}
与第一道差不多,这次是输出aaa还是bbb?
三、
public class Main {
private static class Dog {
private String name;
private Dog(String name) {
this.name = name;
}
@Override
public int hashCode() {
return name.hashCode();
}
}
public static void main(String[] args) {
Map<Dog, String> map = new HashMap<Dog, String>();
Dog dog = new Dog("haha");
map.put(dog, "I am haha");
System.out.println(map.containsKey(dog));
dog.name = "gaga";
System.out.println(map.containsKey(dog));
}
}
真的会输出两次true吗?
四、
public class Main {
public static void main(String[] args) {
Long i1 = 150L;
Long i2 = 150L;
System.out.println(i1 == i2);
Long i3 = 100L;
Long i4 = 100L;
System.out.println(i3 == i4);
}
}
用到的知识点:
一:浅拷贝
二:String的不可变性
三:HashMap底部实现原理
四:Integer、Long等类的缓存机制及其原因
转载请注明原文地址:http://blog.csdn.net/u012619640/article/details/50452794
本博客已停止更新,转移到微信公众号上写文章,欢迎关注:Android进阶驿站