本贴最后更新于 499 天前,其中的信息可能已经天翻地覆

有一些知识,够硬,但是又好像没什么卵用。如果用来面试,求面试者的心理阴影面积。想到了几个:

1. Integer 与 ==

对于 Integer var=? 在 -128 至 127 之间的赋值,Integer 对象是在 IntegerCache.cache 产生,会复用已有对象,这个区间内的 Integer 值可以直接使用 == 进行 判断,但是这个区间之外的所有数据,都会在堆上产生,并不会复用已有对象

    public static void main(String[] args) {
        Integer a = -100;
        Integer b = 0-100;
        System.out.println(a == b); // true
        a = 128;
        b = 128;
        System.out.println(a == b); // false
        System.out.println(--a == --b); // true
    }

2. intern 与常量池

JDK1.7+ 后,intern() 实现不会再复制实例,只是在常量池中记录首次出现的实例引用。“java”已经在 sun.misc.Version 中声明

    public static void main(String[] args) {
        String s1 = new StringBuilder("ja").append("va").toString();
        System.out.println(s1.intern() == s1);
        String s2 = new StringBuilder("swi").append("ft").toString();
        System.out.println(s2.intern() == s2);
    }

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    2344 引用 • 6790 回帖 • 1180 关注
  • 面试

    多面试,少加班。

    112 引用 • 896 回帖 • 566 关注
  • integer
    1 引用 • 6 回帖
感谢    关注    收藏    赞同    反对    举报    分享