美文网首页
Java基础解剖

Java基础解剖

作者: w黄杨w | 来源:发表于2017-05-26 13:45 被阅读0次

    类型

    • int[][] a = new int[][]{}; a是哪些类型的实例(使instanceof判断为true)

      • Object
      • int[][]
    • 对于object instanceof Boolean操作,若object为null,会不会抛出异常?若不会,其值是什么?
      答:不会抛出异常,其值是false

    内存模型

    • 包装类的比较问题
      Integer x = 1;
      Integer y = 1;
      Integer z = 2;
      System.out.println(x == y);       // true:编译器只为常量1分配一次空间(常量区)
      System.out.println(x.equals(y));  // true:包装类会覆盖实现为比较类型与内容
      System.out.println(x == z));      // false:常量1和2,在不同的地址空间
      System.out.println(x.equals(z));  // false:常量1和2,无论地址和值都不相等
    
      Integer x = new Integer(1);
      Integer y = new Integer(1);
      System.out.println(x == y);         // false:x和y指向堆空间上的不同对象
      System.out.println(x.equals(y));    // true:包装类会覆盖实现为比较类型与内容
    
    • volatile的作用
      • 根据JVM内存模型,线程会将主内存(物理内存)映射到本地内存(高速缓存),每个线程对主内存上修改(对象属性)对其他线程存在可见性问题(时效),volatile要求对直接在主内存读写,以此来保障可见性。
      • volatile可阻止编译器对指令的乱序优化

    常用工具类

    • System.out.println(new Date(0))的打印结果是?
      答:The Jan 08:00:00 CST 1970

    • 覆盖对象默认的equals方法后,是否需要覆盖其hashCode实现
      答:需要,基于HashMap规约,两个对象equals操作若为true,则需要有相同的hashcode。反之,没有要求。

    相关文章

      网友评论

          本文标题:Java基础解剖

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