Java的Integer和int有什么区别

Java的int和Integer有什么区别 Integer是int数据类型不同、默认值不同、内存中的存储方式不同、实例化方式不同、变量比较的方式不同。包装类的存在解决了基本数据类型无法做到的事情。(泛型参数、序列化、类型转换、高频区间数据缓存等) 阅读详情

Java是面向对象的编程语言,一切都是对象,但是为了编程的方便还是引入了基本数据类型,为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从Java 5开始引入了自动装箱/拆箱机制,使得二者可以相互转换,对应如下:

原始类型:boolean,char,byte,short,int,long,float,double

包装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double

顺便一提,Java中的基本数据类型只有以上8个,除了基本类型(primitive type),剩下的都是引用类型(reference type)。

所以最基本的一点区别是:Ingeter是int的包装类,int的初值为0,Ingeter的初值为null。除此之外还有区别,请看代码:

[java]  view plain  copy
  1. public class TestInteger {  
  2.     public static void main(String[] args) {  
  3.         int i = 128;  
  4.         Integer i2 = 128;  
  5.         Integer i3 = new Integer(128);  
  6.         System.out.println(i == i2); //Integer会自动拆箱为int,所以为true  
  7.         System.out.println(i == i3); //true,理由同上  
  8.         Integer i4 = 127;//编译时被翻译成:Integer i4 = Integer.valueOf(127);  
  9.         Integer i5 = 127;  
  10.         System.out.println(i4 == i5);//true  
  11.         Integer i6 = 128;  
  12.         Integer i7 = 128;  
  13.         System.out.println(i6 == i7);//false  
  14.         Integer i8 = new Integer(127);  
  15.         System.out.println(i5 == i8); //false  
  16.         Integer i9 = new Integer(128);  
  17.         Integer i10 = new Integer(123);  
  18.         System.out.println(i9 == i10);  //false  
  19.     }  
  20. }  

为什么i4和i5比是true,而i6和i7比是false呢?关键就是看valueOf()函数了,这个函数对于-128到127之间的数,会进行缓存, Integer i5 = 127时,会将127进行缓存,下次再写Integer i6 = 127时,就会直接从缓存中取,就不会new了。所以i4和i5比是true,而i6和i7比是false。

而对于后边的i5和i8,以及i9和i10,因为对象不一样,所以为false。

以上的情况总结如下:

1,无论如何,Integer与new Integer不会相等。不会经历拆箱过程,new出来的对象存放在堆,而非new的Integer常量则在常量池(在方法区),他们的内存地址不一样,所以为false。

2,两个都是非new出来的Integer,如果数在-128到127之间,则是true,否则为false。因为java在编译Integer i2 = 128的时候,被翻译成:Integer i2 = Integer.valueOf(128);而valueOf()函数会对-128到127之间的数进行缓存。

3,两个都是new出来的,都为false。还是内存地址不一样。

4,int和Integer(无论new否)比,都为true,因为会把Integer自动拆箱为int再去比。


参考自:http://www.cnblogs.com/liuling/archive/2013/05/05/intAndInteger.html和http://blog.youkuaiyun.com/jackfrued/article/details/44921941

WKWebView 白屏问题,WKWebView request body丢失问题 1,WKWebView 白屏问题 WKWebView 自诩拥有更快的加载速度,更低的内存占用,但实际上 WKWebView 是一个多进程组件,Network Loading 以及 UI Rendering 在其它进程中执行。初次适配 WKWebView 的时候,我们也惊讶于打开 WKWebView 后,App 进程内存消耗反而大幅下降,但是仔细观察会发现,Other Process 的内存占用会... 阅读详情

相关推荐

距离多普勒谱(RD谱)绘制方法及理解

RD谱是信号处理领域常用的图形。原始信号往往是一维时域序列,如何将其二维化,并进行变换生成RD谱呢?由于刚刚接触,查阅了网络上、老师手里的资料,发现RD谱的绘制方法并不统一,有些存在一定问题。在此,将心得体会记录下来。

mddh_123的博客 3万+

java基础:基本类型

java基本类型(含计算) 1、booelan(布尔类型) 2、char(字符类型) 3、整型 分类: 类型 在内存中占的位数 范围 byte 1位 在内存中占的位数 5、浮点型

lalala_dxf的博客 4324

从零开始使用CubeMX配置STM32使用lwip实现httpd服务器以及使用vscode编辑阅读keil代码(三)

使用stm32搭载lwip实现HTTPd服务器

qq_30623327的博客 5934

Java基础——八大基本数据类型

java基础:八大基本数据类型

wan的博客 1万+

2024年全国大学生电子设计竞赛A题_AC-AC变换电路并联运行

AC-AC变换电路并联运行(A 题)【本科组】

qq_74395263的博客 7841

PowerDesigner16.5下载和安装教程

一、软件下载 1.下载地址(不用复制,直接点击下载链接即可):链接:https://pan.baidu.com/s/1MSnWHWt3SO2Uz5dt9AANAg提取码:z9kk 二、软件安装 1.下载安装包(包含安装文件、汉化包、注册文件) 2.下载后文件内容如下 3....

cicong2374的博客 10万+

Java基本内容整理

一旦创建,字符串的内容(字符序列)无法修改。所有看似 “修改” 的操作(如拼接、替换),实际都会创建。(如循环拼接、插入、删除)时,String 的不可变性会导致频繁创建新对象,性能低下。结构为 “符号位(0 正 1 负)+ 数值绝对值的二进制”,是最直观的表示方式。(取反):0 变 1,1 变 0(单目运算符)。(与):同位全 1 则 1,否则 0。(或):同位全 0 则 0,否则 1。(异或):同位不同则 1,相同则 0。1. 基本类型(8 种,直接存储值)1. 整数型(无小数部分,可正可负)

Hz10220022的博客 1394

从0玩转Mamba神经网络:理论+实战的保姆级教程

Mamba神经网络是一种基于状态空间模型(SSM)的高效序列处理架构,相比Transformer具有更快的推理速度和更低的内存消耗。本文提供从理论到实践的完整指南,详细讲解Mamba的工作原理、与Transformer的差异,并给出基于PyTorch的文本分类实战示例。教程包含环境配置、数据处理、模型搭建、训练评估全流程,展示了Mamba在IMDb情感分析任务中的应用。文章还探讨了Mamba的性能优势及进阶方向,为开发者提供了探索这一新兴技术的实用指南。通过阅读本文,读者可以快速掌握Mamba的核心概念并上

FJN110的博客 318

java的基本类型

java的基本类型 八大基本类型 整数类型: byte(字节型):存放的数据范围是-128~127之间。 short(短整型):数据范围是-32768~32767之间。 int(整型):数据范围是负的2的31次方到正的2的31次方减1。 long(长整型):数据范围为负的2的63次方到正的2的63次方减1。 小数类型: float(单精度浮点型):直接赋值时必须在数字后加上f或F。 double(双精度浮点型):赋值时可以加d或D也可以不加。 布尔类型: boolean(

kk651的博客 2797

第2章: MMU Notifier 全局通知器的核心原理⭐

摘要 MMU Notifier机制是Linux内核中用于处理内存地址空间变化通知的关键框架。其设计遵循解耦与标准化、最小侵入性、高性能和安全性四大原则,采用三层架构实现上层应用、核心层与内存管理层的协作。框架提供两种通知模型:全局订阅的mmu_notifier和区间订阅的mmu_interval_notifier,分别适用于KVM虚拟化和GPU共享虚拟内存等不同场景。核心数据结构mmu_notifier_ops定义了设备驱动需要实现的回调函数集合,包括进程退出处理、页面老化管理、地址范围失效通知等功能。

图形/计算GPU的驱动与虚拟化技术分享园地 4566

基于STM32+Qt上位机设计的智慧停车场管理系统(207)

本项目设计了一套基于STM32+Qt上位机的智慧停车场管理系统。该系统融合了先进的嵌入式技术、图像识别技术、数据库技术和移动互联网技术,通过STM32硬件端实时采集车库现场信息,包括车牌识别、车位占用状态监测等,并将数据上传至Qt上位机进行处理与展示。利用MySQL数据库存储车辆出入库记录及车位使用情况,确保数据的安全性和可追溯性;通过Android手机APP为用户提供查询、支付等功能,实现远程交互与便捷服务。

3942

教妹学Java(九):一文搞懂Java中的基本数据类型

大家好,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员。本篇文章通过我和三妹对话的形式来谈一谈“Java 中的数据类型”。 教妹学 Java,没见过这么有趣的标题吧?“语不惊人死不休”,没错,本篇文章的标题就是这么酷炫,接受不了的同学就别点进来看了,所谓好奇心害死猫;能够接受的同学我只能说你赚到了,你不仅能在阅读的过程中感受到思维的乐趣,还真的能学习到知识。下面就由我来介绍一下故事的...

沉默王二 2万+

GEE:计算非水体概率影像(水体淹没次数)

本文记录了在GEE平台上使用哨兵数据计算沿海地区非水体概率图像的计算方法和代码。基于像素,概率范围0-100。首先使用哨兵数据(s2)和大津算法(OTSU)计算的水体指数阈值来提取水体,然后计算研究区非水体像素在时间段内出现的概率。

养乐多的博客 2142

Java-int和Integer的区别

在说int和Integer的区别之前,先要弄清楚两个问题: 一、java基本数据类型及其封装类 二、java自动拆箱和自动装箱 一、java基本数据类型及其封装类 数据类型 字节大小 封装类 byte 8位 Byte short 16位 Short int 32位 Interger long 64位 Long float 32位 Float double 64位...

T-bright的博客 2万+

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

java int和Integer的区别

1 区别 Integer是int的包装类,int则是java的一种基本数据类型 Integer变量必须实例化后才能使用,而int变量不需要 Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值 Integer的默认值是null,int的默认值是0 2 ==比较 2.1、由于Integer变量实际上是对一个Integer对象的引...

ZjfScorpio 1万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Java基础 - Integer和int的区别

一、int和Integer的区别 两者的区别主要体现在以下几个方面: 1、数据类型不同:int 是基础数据类型,而 Integer 是包装数据类型; 2、默认值不同:int 的默认值是 0,而 Integer 的默认值是 null; 3、内存中存储的方式不同:int 在内存中直接存储的是数据值,而 Integer 实际存储的是对象引用,当 new 一个 Integer 时实际上是生成一个指针指向此对象; 4、实例化方式不同:Integer 必须实例化才可以使用,而 int 不需要; 5、变量的比较方式不同:

java123456111的博客 3万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java中Int、Integer、new Integer()之间的区别

Java中有八种基本数据类型,Int是其中之一。而Integer是Int的封装,即Integer其实是一个对象。可以通过new来创建一个Integer对象,也可以直接将Int值赋给Integer变量。它们之间的区别如下: 一:Int Int是Java八种基本数据类型之一,一般大小为4字节32位,取值范围为2^-31—2^31。两个Int类型变量用“==”比较的是内容的大小。 例如:int a...

yuncaidaishu的博客 1万+

JAVA的integer与int有什么区别

java int与integer的区别 int与integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象 1.Java 中的数据类型分为基本数据类型和复杂数据类型 int 是前者而integer 是后者(也就是一个类);因此在类进行初始化时int类的变量初始为0.而Integer的变量则初始化为nu...

guangod的博客 5944

Java中 Int和Integer的区别

https://blog.youkuaiyun.com/DoWhatYouSay/article/details/82659239 int和Integer的区别 1、Integer是int的包装类,int则是java的一种基本数据类型 2、Integer变量必须实例化后才能使用,而int变量不需要 3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值 4、Integer的默认值是null,int的默认值是0 延伸: 关于Integer...

Move on 1380

Java中Integer和int的区别

各位小伙伴们无论在工作还是学习中,与Integer都有着过硬的交情,我说的没错吧,大家都知道他可以表示一个整数,而且也知道可以表示整数的还有int,只是使用Integer的次数要比int多得多,今天我们就来好好探究一下Integer与int的区别以及更深处的知识。

理想万岁万万岁的博客 2411

java中int和Integer什么区别

int 是基本类型,直接存数值   integer是对象,用一个引用指向这个对象   1.Java 中的数据类型分为基本数据类型和复杂数据类型   int 是前者>>integer 是后者(也就是一个类)      Integer 是对象类型 int是原始类型 适用场合有很大的不同 之所以要把int封装成Integer 型 是因为很多方法参数就只接收对象类型(Object)

L12345678999的专栏 3159

Java中int和Integer的区别

int和Integer的区别 1、Integer是int的包装类,int则是java的一种基本数据类型 2、Integer变量必须实例化后才能使用,而int变量不需要 3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值 4、Integer的默认值是null,int的默认值是0 注: 由于Integer变量实际上是对...

Heliumfly的博客 493

java中int与int和integer的区别?

int与integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象. 1.Java 中的数据类型分为基本数据类型和复杂数据类型(包装类型): int属于基本数据类型,而integer属于包装数据类型, 正因为如此,int在初始化时值为0,而integer初始化时值为null, int在初始化时,直接可以写in...

潇洒不放纵的博客 2492

JAVA中int 是什么意思,java中int和Integer什么区别

java中int和Integer的区别 一看就懂int 是基本类型,直接存数值integer是对象,用一个引用指向这个对象1.Java 中的数据类型分为基本数据类型和复杂数据类型int 是前者>>integer 是后者(也就是一个类)Integer 是对象类型 int是原始类型 适用场合有很大的不同 之所以要把int封装成Integer 型 是因为很多方法参数就只接收对象类型(Obj...

weixin_35291771的博客 4700

Java中int跟Integer的区别

在了解int跟Integer的区别与联系之前需要先了解Java的自动装箱跟拆箱机制,可以看我的另一篇文章Java中自动装箱与拆箱详解。Integer是int的包装类。Java为每一种基本数据类型都配备了相应的包装类,如下表所示: 基本数据类型 byte short int long float double char boolean 对应的包装类 Byte

解忧杂货铺 1166
上一篇: 静态变量与实例变量的区别
下一篇: Math.round(11.5)等于多少?Math.round(-11.5)等于多少?
ole_triangle_java
博客等级 码龄10年 82粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值