java 中 Integer 比较 问题

对于 java 中 Integer  类型 比较 ,经常在面试中被提到 ,有时 还真的 让人 头疼。下面我来分析下。integer   比较问题。

解决 Integer 值比较问题。我想从以下几点说起。

1. Integer 的源码。

2.堆内存与常量池

从Integer 源码开 。 在  -128 到   127    之间 的 数    再次 再用 。或者赋值 直接从缓存中取。

例子如下 :

Integer    a = 127  ;

Integer   b=127;

Integer   c=999;

Integer    d=999;

integer  f= new  Intger (999);

integer  t= new  Intger (999);

System.out.println(f==d);  // true  ;  对于 new 出来 的 和 没有 new 出来的  ,new 出来的   直接进行 拆箱 处理。转换的 integer  .

System.out.println(a=b);//    true     127 在   -128 到  127  之间   所以会想成

System.out.println(f==t) //      false   两个 new  出来的对象比较 都不想成 。

总结 :

对于Integer  比较   用 ==   比较 

1.对于 两个 都是 new 出来的对象 比较  一切都为 false   // Integer  a=new  Integer(10) ;   Integer  b=new Integer (10)     //false;

2. 对于  连个 Integer 不是被 new 出来的 比较 如果 在  128-127 之间  的数  为  true 。否则 为 false    Integer  a=2;  Integer b=2;  //true

3. 对于 一个 是    Integer  不是被 new  出来   和 Int   笔记     都为 true 。    如  int a=1111;   Integer  b=1111;

4.  对于 一个int  与 一个   new  出来的 Integer  比较         一切都为 false;

原文地址:https://www.cnblogs.com/yuruyi/p/10884278.html

时间: 2024-10-07 22:24:07

java 中 Integer 比较 问题的相关文章

java中Integer i1= 0; Integer i2= 0; 为什么可以用 == 符号呢

java中Integer i1= 0; Integer i2= 0;  有i1 == i2,且有i1 = 1;那么i2为什么不会变成1呢? 我这个时候的想法是:这是因为java中整型常量是基于int的,而java中有自动包装机制,也就是说看起来i1,i2是Integer类型,但是其底层还是基于int类型的(不能理解的话在java中还有一个地方那就是Arrays.asList(T...args) 他返回一个基于数组的List,如果在List中改变其大小,那么将会引发异常[UnsupportedOp

Java中Integer类的方法

字段摘要 static int MAX_VALUE              保持 int 类型的最大值的常量可取的值为 231-1. static int MIN_VALUE              保持 int 类型的最小值的常量可取的值为 -231. static int SIZE              以二进制补码形式表示 int 值的位数. static Class<Integer> TYPE              表示基本类型 int 的 Class 实例. 构造方法摘要

java中Integer包装类的详细讲解(java二进制操作,所有进制转换)

程序员都很懒,你懂的! 今天为大家分享的是Integer这个包装类.在现实开发中,我们往往需要操作Integer,或者各种进制的转换等等.我今天就为大家详细讲解一下Integer的使用吧.看代码: package com.herman.test; public class IntegerTest { public static void main(String[] args) { System.out.println("Integer中的常量***************************

java中Integer值比较不注意的问题

今天,帮人看代码时,发现这个问题,回顾起来,记录下来. 先来看一个代码片段 public static void main(String[] args) { Integer a1 = Integer.valueOf(60); //danielinbiti Integer b1 = 60; System.out.println("1:="+(a1 == b1)); Integer a2 = 60; Integer b2 = 60; System.out.println("2:=

JAVA中Integer类下的常用方法有哪些?

JAVA中Integer类下的常用方法有哪些?1.进制转换 n进制转10进制 字符串结果 Integer.parseInt(String s, int radix): radix范围为2-36(包括0-9,a-z) string输入为二进制字符串 System.out.println( Integer.parseInt("10000",2)); //16 2.int转二进制字符串 System.out.println( Integer.toBinaryString(789)); //1

JAVA中Integer对象的引用

JAVA中没有指针一说,但也有引用的概念.这里要说的主要是Integer是不是同一个对象. 1.先看一段代码: public static void main(String[] args){ Integer a1 = 100; Integer b1 = a1;//另一种也可以b1=100 Field field = null; try { field = a1.getClass().getDeclaredField("value"); } catch (NoSuchFieldExcep

Java中Integer和String浅谈

http://qxzxcjq-126-com.iteye.com/blog/883283 Java中的基本数据类型有八种:int.char.boolean.byte.long.double.float.short.Java作为一种面向对象的编程语言,数据在Java中也是一种对象.我们用基本数据类型创建的对象,如 int x = 0;这里的x只有值这个属性,没有(或者很少)有其他的方法.这在一些需要对数据进行操作时变的很不方便,程序员需要自己编写很多代码去实现一些常用的功能,增加了工作量及程序的大

Java中Integer的最大值和最小值

从JDK1.0开始,Integer中就定义了MIN_VALUE和MAX-VALUE两个常量: /** * A constant holding the minimum value an {@code int} can * have, -2<sup>31</sup>. */public static final int MIN_VALUE = 0x80000000; /** * A constant holding the maximum value an {@code int} c

从源码看java中Integer的缓存问题

在开始详细的说明问题之前,我们先看一段代码 1 public static void compare1(){ 2 Integer i1 = 127, i2 = 127, i3 = 128, i4 = 128; 3 System.out.println(i1 == i2); 4 System.out.println(i1.equals(i2)); 5 System.out.println(i3 == i4); 6 System.out.println(i3.equals(i4)); 7 } 这段代