Java中Integer和int的异同

 1 public void Test1() {
 2         int a = 128;
 3         Integer b = 128;
 4         Integer c = 128;
 5         //Integer会自动拆箱成int,所以为ture
 6         System.out.println(a==b);
 7         System.out.println(a==c);
 8     }
 9
10     @Test
11     public void Test2() {
12         Integer a = 127;
13         Integer b = 127;
14         System.out.println(a == b);//此处结果为true,应该没什么疑问Java在编译 Integer c时候编译成 Integer.valueOf(127)
15
16         Integer c = 128;
17         Integer d = 128;
18         System.out.println(c == d);//此处结果为false,
19         /*Integer.valueOf()方法基于减少对象创建次数和节省内存的考虑,缓存了[-128,127]之间的数字。
20         此数字范围内传参则直接返回缓存中的对象。在此之外,直接new出来。*///源码如下
21         /* public static Integer valueOf(int i) {
22                 assert IntegerCache.high >= 127;
23                 if (i >= IntegerCache.low && i <= IntegerCache.high)
24                     return IntegerCache.cache[i + (-IntegerCache.low)];
25                 return new Integer(i);
26             }*/
27     }
时间: 2024-10-07 06:00:06

Java中Integer和int的异同的相关文章

Java中Integer与int类型的装箱和拆箱

其实Integer与int类型的赋值与比较最关键的一点就是:这两个变量的类型不同.Integer是引用类型,int是原生数据类型.         我们分四种情况来讨论:         1) Integer与int类型的赋值                 a.把Integer类型赋值给int类型.此时,Integer类型变量的值会自动拆箱成int类型,然后赋给int类型的变量,这里底层则是通过调用intValue()方法来实现所谓的拆箱的.                 b.把int类型赋

java中integer和int类型的区别

int是java提供的8种原始数据类型之一.Java为每个原始类型提供了封装类,Integer是java为int提供的封装类.int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,例如,要想表达出没有参加考试和考试成绩为0的区别,则只能使用Integer.在JSP开发中,Integer的默认为null,所以用el表达式在文本框中显示时,值为空白字符串,而int默认的默认值为0,所以用el表达式在文本框中显示时,结果

Java中Integer和int比较大小出现的错误

Java在某一处维护着一个常量池,(我记得)在小于128的范围内,直接用 1 Integer i = 100; 2 int j = 100; 3 return i == j;//true 这里返回的是true. 但是>=128, 1 Integer i = 500; 2 int j = 500; 3 return i == j; //false 这里的常量池可以修改,在什么地方我忘了,可以百度一下,最好还是比较之前转换一下.

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中String转int型的方法以及错误处理

应要求,本周制作了一个判断一个年份是否是闰年的程序.逻辑很简单,这里就不贴代码了.可是,在这次程序编写中发现了一个问题. 在输入年份时,如果输入1)字母2)空3)超过Int上限时,就会抛exception. 问题出在String转Int型时. 首先,在java中String转换为Int主要有两种方法 1.Integer.parseInt(s) 2.Integer.valueOf(s).intValue(); 这两种方法略有不同,之后再跟大家分析. 首先我使用第一种方法,当测试数据为正常的年份时,

Java中字符转int

Java中字符转int 方法一代码: //直接使用静态方法,不会产生多余的对象,但会抛出异常 //parseInt 方法都有两个参数, 第一个参数就是要转换的对象, 第二个参数是进制基数, 可以是 2, 8, 10, 16, 默认以 10 进制处理 Integer.parseInt(s); 方法二代码: //Integer.valueOf(s) 相当于 new Integer(Integer.parseInt(s)),也会抛异常,但会多产生一个对象 Integer.valueOf(s).intV

java 中 Integer 比较 问题

对于 java 中 Integer  类型 比较 ,经常在面试中被提到 ,有时 还真的 让人 头疼.下面我来分析下.integer   比较问题. 解决 Integer 值比较问题.我想从以下几点说起. 1. Integer 的源码. 2.堆内存与常量池 从Integer 源码开 . 在  -128 到   127    之间 的 数    再次 再用 .或者赋值 直接从缓存中取. 例子如下 : Integer    a = 127  ; Integer   b=127; Integer   c