Java中int integer 区别和int的区别

Java中Integer和int的区别_百度知道
Java中Integer和int的区别
我有更好的答案
首先,int是基本数据类型,直接存数值;而Integer是对象,因此在类进行初始化时int类的变量初始为0,而Integer的变量则初始化为null。其次,Integer为复杂数据类型,可以用于对象的处理操作,而int则不行,需要转为Integer;因此就出现了自动装箱和拆箱。从某种意义上来讲,Integer 是一个类,是int的扩展,定义了很多的转换方法;此外,int可以直接用于运算,而Integer不行。简单来讲,可分为下面四条:1.int是基本的数据类型。2.Integer是int的封装类。3.int和Integer都可以表示某一个数值。4.int和Integer不能够互用,因为他们两种不同的数据类型。
采纳率:78%
来自团队:
一个是类,一个是原始类型。存放在虚拟机的位置不同。int初始值为0,Integer初始为null。应用中建议用Integer,因为这样可以知道数据库或者用户是没有输入还是为0.否则无法区分。
1、int是基本数据类型,integer是一种包装类,后者可存储前者并添加int不支持或不能正确支持的操作,为了实现泛型;int初值0,integer是null。
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。Integer和int的区别
Integer和int的区别1、Integer是int提供的封装类,而int是Java的基本数据类型;2、Integer默认值是null,而int默认值是0;3、声明为Integer的变量需要实例化,而声明为int的变量不需要实例化;4、Integer是对象,用一个引用指向这个对象,而int是基本类型,直接存储数值。
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!Java基础之int和Integer有什么区别
1 int与Integer的基本使用对比
(1)Integer是int的包装类;int是基本数据类型;
(2)Integer变量必须实例化后才能使用;int变量不需要;
(3)Integer实际是对象的引用,指向此new的Integer对象;int是直接存储数据值 ;
(4)Integer的默认值是null;int的默认值是0。
2 int与Integer的深入对比
(1)由于Integer变量实际上是对一个Integer对象的引用,所以两个通过new生成的Integer变量永远是不相等的(因为new生成的是两个对象,其内存地址不同)。
Integer i = new Integer(100);
Integer j = new Integer(100);
System.out.print(i == j); //false
(2)Integer变量和int变量比较时,只要两个变量的值是向等的,则结果为true(因为包装类Integer和基本数据类型int比较时,java会自动拆包装为int,然后进行比较,实际上就变为两个int变量的比较)
Integer i = new Integer(100);
int j = 100;
System.out.print(i == j);
(3)非new生成的Integer变量和new Integer()生成的变量比较时,结果为false。(因为非new生成的Integer变量指向的是java常量池中的对象,而new Integer()生成的变量指向堆中新建的对象,两者在内存中的地址不同)
Integer i = new Integer(100);
Integer j = 100;
System.out.print(i == j); //false
(4)对于两个非new生成的Integer对象,进行比较时,如果两个变量的值在区间-128到127之间,则比较结果为true,如果两个变量的值不在此区间,则比较结果为false
Integer i = 100;
Integer j = 100;
System.out.print(i == j); //true
Integer i = 128;
Integer j = 128;
System.out.print(i == j); //false
  对于第4条的原因: java在编译Integer i = 100 ;时,会翻译成为Integer i = Integer.valueOf(100)。而java API中对Integer类型的valueOf的定义如下,对于-128到127之间的数,会进行缓存,Integer i = 127时,会将127进行缓存,下次再写Integer j = 127时,就会直接从缓存中取,就不会new了。
public static Integer valueOf(int i){
assert IntegerCache.high &= 127;
if (i &= IntegerCache.low && i &= IntegerCache.high){
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
3 Java两种数据类型
3.1 Java两种数据类型分类
(1)基本数据类型,分为boolean、byte、int、char、long、short、double、float;
(2)引用数据类型 ,分为数组、类、接口。
3.2 Java为每个原始类型提供了封装类
  为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每 一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从Java 5开始引入了自动装箱/拆箱机制,使得二者可以相互转换。
基本数据类型: boolean,char,byte,short,int,long,float,double
封装类类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double
4 基本解析
4.1 自动装箱:将基本数据类型重新转化为对象
public class Test {
public static void main(String[] args) {
Integer num = 9;
  9是属于基本数据类型的,原则上它是不能直接赋值给一个对象Integer的,但jdk1.5后你就可以进行这样的声明。自动将基本数据类型转化为对应的封装类型,成为一个对象以后就可以调用对象所声明的所有的方法。
4.2 自动拆箱:将对象重新转化为基本数据类型
public class Test {
public static void main(String[] args) {
Integer num = 9;
System.out.print(num--);
  因为对象时不能直接进行运算的,而是要转化为基本数据类型后才能进行加减乘除。对比:
Integer num = 10;
int num1 =
5 深入解析
5.1 情况描述
public class Test {
public static void main(String[] args) {
Integer num1 = 128;
Integer num2 = 128;
System.out.println(num1==num2);
Integer num3 = 9;
Integer num4 = 9;
System.out.println(num3==num4);
  解析原因:归结于java对于Integer与int的自动装箱与拆箱的设计,是一种模式:叫享元模式(flyweight)。
  加大对简单数字的重利用,Java定义在自动装箱时对于值从–128到127之间的值,它们被装箱为Integer对象后,会存在内存中被重用,始终只存在一个对象。
而如果超过了从–128到127之间的值,被装箱后的Integer对象并不会被重用,即相当于每次装箱时都新建一个 Integer对象。
5.2 Integer源码解析
  给一个Integer对象赋一个int值的时候,会调用Integer类的静态方法valueOf,源码如下:
public static Integer valueOf(String s, int radix) throws NumberFormatException {
return Integer.valueOf(parseInt(s,radix));
public static Integer valueOf(int i) {
assert IntegerCache.high &= 127;
if (i &= IntegerCache.low && i &= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
  IntegerCache是Integer的内部类,源码如下:
* 缓存支持自动装箱的对象标识语义
* -128和127(含)。
* 缓存在第一次使用时初始化。 缓存的大小
* 可以由-XX:AutoBoxCacheMax = &size&选项控制。
* 在VM初始化期间,java.lang.Integer.IntegerCache.high属性
* 可以设置并保存在私有系统属性中
private static class IntegerCache {
static final int low = -128;
static final int
static final Integer cache[];
int h = 127;
String integerCacheHighPropValue =
sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high");
if (integerCacheHighPropValue != null) {
int i = parseInt(integerCacheHighPropValue);
i = Math.max(i, 127);
h = Math.min(i, Integer.MAX_VALUE - (-low) -1);
cache = new Integer[(high - low) + 1];
for(int k = 0; k & cache. k++)
cache[k] = new Integer(j++);
private IntegerCache() {}
6 参考链接
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!Java中Integer和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表达式在文本框中显示时,结果为0,所以,int不适合作为web层的表单数据的类型。 在Hibernate中,如果将OID定义为Integer类型,那么Hibernate就可以根据其值是否为null而判断一个对象是否是临时的,如果将OID定义为了int类型,还需要在hbm映射文件中设置其unsaved-value属性为0。 另外,Integer提供了多个与整数相关的操作方法,例如,将一个字符串转换成整数,Integer中还定义了表示整数的最大值和最小值的常量。int 是基本类型。Integer是引用类型。。比如int a= 5;Integer b = 5;对于a你只能用来做计算。。比如加减乘除b你可以用来做很多事情,因为他是一个对象,他有很多方法,你可以像使用String对象那样使用它。java.lang.Integer是一个类.对它的操作要通过类的方法int是JAVA缺省的8中基本数据类型之一.不是类的对象.int是基本数据类型,Integer是对int进行了封装的一个类。声明为int的变量不需要实例化,声明为Interger的变量需要实例化
int是基本类型,Integer是包装类,也就是类。Integer
为什么java中使用int
而不像vb中那样使用Integerint是面向机器底层的数值类型,是Primitive类型的数据类型,而Integer是int的Warpper类,是面向对象的即OOP的对象类型。int
一般只用在数值计算中,而Integer是用在Java的其它要使用对象的地方,比如Map的Key与Value,List与Set的Element若要保存数值信息都要把int包装成Integer对象使用。Java
提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。原始类型
封装类boolean
Booleanchar
Characterbyte
Integerlong
Floatdouble
引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。对象引用实例变量的缺省值为
null,而原始类型实例变量的缺省值与它们的类型有关。int
一般做为数值参数就够了integer
一般做类型转换的时候用的较多Integer是int的封装类,里面有很多进行处理的静态方法
Integer是对象而int不是,内存的分配位置也不一样int是一种基本数据类型,而Integer是相应于int的类类型,称为对象包装。
实现这种对象包装的目的主要是因为类能够提供必要的方法,用于实现基本数据类型的数值与可打印字符串之间的转换,以及一些其他的实用程序方法;
另外,有些数据结构库类只能操作对象,而不支持基本数据类型的变量,包装类提供一种便利的方式,能够把基本数据类型转换成等价的对象,从而可以利用数据结构库类进行处理。
int a=1;这是基本数据类型是能参与运算的.而Integer b= new Integer(1);c=b.Float a= new Float(null);是可以的用Float初始化一个对象这个a有很多方法而就没有因为原始没有引用类int 是基本类型,直接存数值integer是对象,用一个引用指向这个对象1.Java 中的数据类型分为基本数据类型和复杂数据类型int 是前者&&integer 是后者(也就是一个类)2.初始化时&&int i =1;Integer i= new Integer(1);(要把integer 当做一个类看)int 是基本数据类型(面向过程留下的痕迹,不过是对java的有益补充)Integer 是一个类,是int的扩展,定义了很多的转换方法类似的还有:float Fdouble Dstring String等举个例子:当需要往ArrayList,HashMap中放东西时,像int,double这种内建类型是放不进去的,因为容器都是装object的,这是就需要这些内建类型的外覆类了。Java中每种内建类型都有相应的外覆类。java 提供两种不同的类型:引用类型(或者封装类型,Warpper)和原始类型(或内置类型,Primitive)。Int是java的原始数据类型,Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。 int 是基本类型,(int)(Math.Random()*100)就是一个数,可以进行加见乘除。 Integer是class ,那么 new Integer(temp)就是一个对象了,可以用到Integer这个class的方法,例如用intvalue()可以返回这个int的值。
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。找不到答案?
java中int和Integer有什么区别,哪个在公司中比较常用?
java中int和Integer有什么区别,什么时候用int,什么时候用后者,哪个在公司中比较常用?
按投票排序
按时间排序
<dd id="vote_num_
前者是java定义的元数据类型,后者是这个类型的包装类。后者定义的对象在比较值是否相等要用equals方法
int 是基本数据类型(面向过程留下的痕迹,不过是对Java的有益补充)Integer 是一个类,是int的扩展,定义了很多的转换方法类似的还有:float Float、double Double、string String等 。举个例子:当需要往ArrayList,HashMap中放东西时,像int,double这种内建类型是放不进去的,因为容器都是装object的,这是就需要这些内建类型的外覆类了。Java中每种内建类型都有相应的外覆类。Java中int和Integer关系是比较微妙的。关系如下:1、int是基本的数据类型;2、Integer是int的封装类;3、int和Integer都可以表示某一个数值;4、int和Integer不能够互用,因为他们两种不同的数据类型;
1.从定义上来看int 是基本类型,直接存数值(类似的还有float、double、String、char)Integer是对象,用一个引用指向这个对象(类似的有Float、Double、String)2.从复杂度来看,Java 中的数据类型分为基本数据类型和复杂数据类型int 是前者;Integer 是后者(也就是一个类)3.初始化的方式不同int i =1;Integer i= new Integer(1);//integer 是一个类int 是基本数据类型(面向过程留下的痕迹,不过是对java的有益补充);Integer 是一个类,是int的扩展,定义了很多的转换方法注意:类似的还有:float Fdouble DString等,其中String较为特殊,基本类型和复杂类似关键字相同。例如,当需要往ArrayList,HashMap中放东西时,像int,double这种内建类型是放不进去的,因为容器都是装 object的,这是就需要这些内建类型的外覆类了。Java中每种内建类型都有相应的外覆类。Java中int和Integer关系是比较微妙的。关系如下:int是基本的数据类型;Integer是int的封装类;int和Integer都可以表示某一个数值;int和Integer不能够互用,因为他们两种不同的数据类型;举例说明ArrayList A_List=new ArrayList();int n=40;Integer In=new Integer(n);A_List.add(n);//errorA_List.add(In);//ok
登录后可回答问题,请
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...
RDS是一种稳定可靠、可弹性伸缩的在线数据库服务。支持MySQL、SQL Server、PostgreSQL、高...

我要回帖

更多关于 int long 区别 的文章

 

随机推荐