Java基础问题(一)

来源:互联网 发布:如何把淘宝店铺关闭 编辑:程序博客网 时间:2024/06/03 18:08

一、

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

0 1