Java基础问题(一)

一、

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进阶驿站
Android进阶驿站

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章