Integer的自动拆装箱的陷阱(整型数-128到127的值比较问题)

public static void main(String[] a) {
        test1();        
    }

    static void test1() {
        // Integer的自动拆装箱的陷阱(整型数-128到127的值比较问题)
        out.println("-------------------");
        Integer x = new Integer(123);
        Integer y = new Integer(123);
        out.println(x == y);
        out.println(x.equals(y));

        out.println("-------------------");
        Integer z = Integer.valueOf(123);
        Integer w = Integer.valueOf(123);
        out.println(z == w);
        out.println(z.equals(w));

        out.println("-------------------");
        Long a = Long.valueOf(127);
        Long b = Long.valueOf(127);
        out.println(a == b);
        out.println(a.equals(b));

        out.println("-------------------");
        Long c = Long.valueOf(128);
        Long d = Long.valueOf(128);
        System.out.println(c == d);
        System.out.println(c.equals(d));
    }

输出:

-------------------
false
true
-------------------
true
true
-------------------
true
true
-------------------
false
true

Java里面对处在在-128127之间的Integer值,用的是原生数据类型int,会在内存里供重用,也就是说这之间的Integer值进行==比较时只是进行int原生数据类型的数值比较,而超出-128127的范围,进行==比较时是进行地址及数值比较。

在Kotlin中,写代码的时候不再有 int, long 等基本类型,Kotlin中统一都是引用类型。

源代码工程:https://github.com/EasyKotlin/kotlin_tutorials

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python小屋

常用正则表达式锦集与Python中正则表达式的用法

1、常用正则表达式 最简单的正则表达式是普通字符串,只能匹配自身 '[pjc]ython'可以匹配'python'、'jython'、'cython' '[a-...

33050
来自专栏zingpLiu

四句话总结JavaScript作用域

前言:JavaScript的作用域一直以来都是前端开发中比较难以理解的知识点,JavaScript6中新引入了 let 关键字,用于指定变量属于块级作用域,本次...

10420
来自专栏程序员互动联盟

【编程基础】C语言类型转换

我们在编程序的时候,经常会出现不同类型的数据之间需要计算、赋值,必然会出现类型转换问题。C语言的变量数据类型是可以转换的,转换的方法有两类,一种是自动转换,一种...

507130
来自专栏星汉技术

Scala语法介绍

34050
来自专栏python学习指南

Python迭代

本篇将介绍Python的迭代,更多内容请参考:Python学习指南 简介 在Python中,如果给定一个list或者tuple,我们可以通过for循环来遍...

21790
来自专栏烂笔头

Python标准库笔记(2) — re模块

目录[-] re模块提供了一系列功能强大的正则表达式(regular expression)工具,它们允许你快速检查给定字符串是否与给定的模式匹配(matc...

38040
来自专栏码云1024

JAVA 第二天 关键字

30370
来自专栏我是攻城师

Scala中的Map使用例子

32870
来自专栏土豆专栏

Java面试之数据类型(一)

封装类是引用类型,基本类型在传递参数的时候都是按值传递,而封装类型是按引用传递的(其实引用也是按值传递的,但是传递的是对象的地址)

20420
来自专栏前端知识分享

第191天:js---Array常用属性和方法总结

13820

扫码关注云+社区

领取腾讯云代金券