美文网首页
2019-03-27面试

2019-03-27面试

作者: wasdzy111 | 来源:发表于2019-03-27 16:31 被阅读0次

    今天遇到一个面试,顺便学习加深印象,分享给大家……

    System.identityHashCode方法是java根据对象在内存中的地址算出来的一个数值,不同的地址算出来的结果是不一样的。
    1、一个接口中有一个变量,2个类实现这个接口,实现类中的接口中的这个变量地址一样吗?

    public interface MyInterFace {
        String str = "1111";
    }
    
    public class One  implements MyInterFace {
    }
    
    public class Two implements MyInterFace {
    }
    
    
    public class Main {
        public static void main(String[] args) {
            One one = new One();
            Two two = new Two();
    
            System.out.println(System.identityHashCode(one.str));
            System.out.println(System.identityHashCode(two.str));
        }
    }
    

    结论:一样的且不能修改 因为接口中的变量默认是final,public 修饰

    -----------1----------
    356573597
    356573597
    -----------------------
    

    2、一个父类有一个变量,2个子类继承父类,那么这个父类中的变量地址一样?

    public class MyClass {
        String obj = "22223";
    }
    
    public class One extends MyClass{
    }
    
    public class Two extends MyClass{
    }
    
    public class Main {
        public static void main(String[] args) {
            One one = new One();
            Two two = new Two();
            System.out.println("-----------2----------");
            System.out.println(System.identityHashCode(one.obj));
            System.out.println(System.identityHashCode(two.obj));
            System.out.println("---------------------");
        }
    }
    

    结论:因为是public的 是一样的额,且可以修改

    -----------2----------
    1735600054
    1735600054
    ---------------------
    

    3、一个父类中有构造方法、静态方法;一个子类有构造方法,静态方法,执行顺序是什么?

    //父类
    public class Three {
        public Three() {
            System.out.println("父类构造");
        }
        public static void go(){
            System.out.println("父类静态方法");
        }
    }
    
    
    public class ThreeSun extends Three {
        public ThreeSun() {
            System.out.println("子类构造方法");
        }
    
        public static void go() {
            System.out.println("子类静态方法");
        }
    }
    

    结论:先执行父类的,再执行子类的,父类的go()被子类屏蔽了

    父类构造
    子类构造方法
    子类静态方法
    

    4、直接new2个变量 和让2个变量等于一个常量 ,变量地址一样吗?

            String a = new String("1");
            String b = new String("1");
    
            String c = "1";
            String d = "1";
    
            System.out.println("-----------3----------");
            System.out.println(System.identityHashCode(a));
            System.out.println(System.identityHashCode(b));
    
            System.out.println(System.identityHashCode(c));
            System.out.println(System.identityHashCode(d));
    

    结论:

    -----------4----------
    356573597
    1735600054
    21685669
    21685669
    

    相关文章

      网友评论

          本文标题:2019-03-27面试

          本文链接:https://www.haomeiwen.com/subject/tqttbqtx.html