Java中Integer/Long/Double/Float大小比较

您所在的位置:网站首页 java中long和integer Java中Integer/Long/Double/Float大小比较

Java中Integer/Long/Double/Float大小比较

2023-08-11 12:05| 来源: 网络整理| 查看: 265

在开发的过程中,在jdk1.5后可以直接用==来做比较,后来发现不是这个样子的哈哈~ 先看一段代码与运行结束:

public static void main(String[] args) { Integer i1 = 1; Integer i2 = 1; System.out.println( "i1 == i2:" + (i1 == i2)); Long l1 = 1l; Long l2 = 1l; System.out.println("l1 == l2:" + (l1 == l2)); Double d1 = 1d; Double d2 = 1d; System.out.println("d1 == d2:" + (d1 == d2)); Float f1 = 1f; Float f2 = 1f; System.out.println("f1 == f2:" + (f1 == f2)); }

这里写图片描述 当看到这个结果,当然是没有问题的。我们再来看一下别一段代码与结果:

Integer i1 = 200; Integer i2 = 200; System.out.println( "i1 == i2:" + (i1 == i2)); Long l1 = 200l; Long l2 = 200l; System.out.println("l1 == l2:" + (l1 == l2)); Double d1 = 200d; Double d2 = 200d; System.out.println("d1 == d2:" + (d1 == d2)); Float f1 = 200f; Float f2 = 200f; System.out.println("f1 == f2:" + (f1 == f2));

这里写图片描述 这次全是false时,这时发现Integer的比较不能使用==,那么可以用equals可以进行比较吗?我们可以试一下:

Integer i1 = 200; Integer i2 = 200; System.out.println( "i1 == i2:" + (i1.equals(i2))); Long l1 = 200l; Long l2 = 200l; System.out.println("l1 == l2:" + (l1.equals(l2))); Double d1 = 200d; Double d2 = 200d; System.out.println("d1 == d2:" + (d1.equals(d2))); Float f1 = 200f; Float f2 = 200f; System.out.println("f1 == f2:" + (f1.equals(f2)));

这里写图片描述 ok,没有问题,它们是可以用equals进行比较的。那么为什么Integer/Long为1时,可以使用==比较,当为200时不能使用呢?我们看一下源代码:

public static Integer valueOf(int i) { assert IntegerCache.high >= 127; if (i >= IntegerCache.low && i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3