常量缓存与integer比较_Java编程中 int 和 Integer 的区别

在Java编程语言当中,int和Integer都是用于存储整数的数据类型,Integer是int的包装类。这里我们给出了一个表,来比较int和Integer的区别。

99034e277632a37f94707564221858ba.png

int vs Integer

int 和 Integer 两者之间的主要区别是int是基本数据类型,而Integer是int的包装类,是引用的类型,它将基本数据类型int包装到一个对象中。int的主要目的是用于存储32位带符号的二进制整数,而Integer用于根据需要将int转换为对象,将对象转换为int。与Integer相比,int提供的灵活性较小,因为int只允许整数的二进制值。另一方面,Integer在存储和处理整数数据方面更加灵活。因为它继承了Object类,可以在具有Object引用或泛型的集合中使用它们,比如List。内存占用上来说,int需要32位(4字节)来存储。另一方面,Integer是一个对象,它除了存储数据以外,还要存储有关对象的元数据,因此占用的空间更大。有关类型转换,在Java中,不能直接通过强制转换将仅包含整数的字符串值分配给int变量,但是在使用Integer的情况下,可以使用 Integer(String) 构造函数将字符串分配给Integer类型的对象,甚至可以使用Integer提供的静态方法 parseInt(String) 来将String文字转换为int值。还有,我们也无法将int整数从十进制转换为其它进制。但是,在Integer中,我们可以分别使用toBinaryString(),toOctalString() 或 toHexString() 将其整数值直接转换为二进制,八进制和十六进制格式。

        Integer a = 10, b = 10, c = 1000, d = 1000;                System.out.println(a == b);        System.out.println(a.equals(b));        System.out.println(c == d);        System.out.println(c.equals(d));

这里我们还要特别注意一点,就是比较,看看上面这个例子,它的运行结果是:

truetruefalsetrue

对于很多朋友来说,这个结果都会很意外,不清楚为什么a==b返回true,但是c==d返回false,原因是Integer在加载的时候,会创建一个Integer数组在缓存区里,默认的包含Integer值为-128到127的对象,这个数组的上限大小是可以通过设置这个参数来更改的。

-Djava.lang.Integer.IntegerCache.high

当我们使用字面量,就是直接用数字,给integer赋值的时候,会调用Integer.valueOf这个方法,让我们来看一看这个方法的实现

    public static Integer valueOf(int i) {        if (i >= IntegerCache.low && i <= IntegerCache.high)            return IntegerCache.cache[i + (-IntegerCache.low)];        return new Integer(i);    }

不难看出,当i的值在缓存的范围内的时候,方法会直接返回常量池中对象的地址,在超出范围时,则会返回用构造方法创建的新的对象,所以,使用==运算符比较的时候的时候,在范围内会是true,范围外会是false。

这里我们要强调,==是比较地址,如果想要比较Integer对象的值的大小的时候,不要使用==,可以使用equals或者使用Integer类提供的另一个方法compareTo。

最后提一下,从Java5开始,编译器提供了自动装箱/拆箱的功能,编译器会在后台执帮我们在需要的时候自动把int转换为Integer,或者把Integer的对象转换成int。

以上就是int和Integer的基本区别。

我倒觉得你无趣
关注 关注
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【Python】数据类型 Number数字、String字符串、List列表、Tuple元组、Set集合、Dictionary字典
hanne_lovegood的博客
06-03 1295
Python数据类型 2021/6/3 周四 学习内容: Python数据类型、Number(数字)、String(字符串)、List(列表)、Tuple(元组)、Set(集合)、Dictionary(字典) 刚接触Python,主要是看菜鸟教程、w3school网站,以及电子工业出版社出版的Python编程入门指南上册的教材,并根据自己的情况对重点内容做的笔记,如有错误,欢迎在评论区指出,非常感谢! 一、数据类型 1. 标准数据类型 Python3有六个标准的数据类型: Number(数字)、Stri
JavaintInteger有什么区别
LSFZ88888的博客
09-10 248
我们最为常用的基本数据类型int和它的包装Integer,他们之间有什么区别?为何要单独讲述一遍. Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入不是对象的基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装型(wrapper class),int的包装就是Integer,从JDK 1.5开始引入了自动装箱/拆箱机制,使得二者可以相互转换。 Java语言为每个原始型提供了都提供了包装型: 原始型: boolean,c
学python能做什么型的工作-Python支持哪些数据类型
q6q6q的专栏
10-28 340
Python基本数据类型一般分为:数字、字符串、列表、元组、字典、集合这六种基本数据类型。数字数字型是不可更改的对象。对变量改变数字值就是生成/创建新的对象。Python支持多种数字型:整型(标准整型和长整型(Python2.7及之前的有这种型))、布尔型、双精度浮点型、十进制浮点型、复数。标准整型int,标准整型,在大多数32位机器上标准整型取值范围是-2^31到2^31-1,也就是-21...
Integer.parseInt()和Integer.valueOf()的区别
一蓑烟雨任平生
10-03 438
new Integer.valueof()返回的是Integer的对象。 Integer.parseInt() 返回的是一个int的值。 new Integer.valueof().intValue();返回的也是一个int的值。 parseInt public static int parseInt(String s, int radix) throws NumberFormatException 以第二个参数所指定基数将字符串参数分析为一个带符...
Python开发基础之Python常用的数据类型
lvjianzhaoa的博客
09-17 264
博文大纲 一、Python介绍 二、Python的变量 三、Python常用的数据类型1、数字2、字符串3、元组4、列表5、字典 一、Python介绍 Python是一种动态解释型的编程语言。Python它简单易学、功能强大、支持面向对象、函数式编程,可以在Windows、Linux等多种操作系统上使用,同时Python可以在Java、.net等开发平台上使用,因此,它也被成为“胶水语言”...
不属于python整数型_Python基础之数据类型详解
weixin_39955355的博客
11-23 1090
似于其他语言,Python也将需要表示和操作的数据划分成不同的数据类型。python的每个数据值都被称为一个对象(object),并且这个对象有三个属性值(唯一标识、数据类型、值),分别对应计算机内存地址、数据别、数据值。python数据类型如下:数字型与其他编程语言似,这里不再具体讲解。作为Python最重要的基础知识,下面主要梳理下字符串、列表、元组、字典、集合的核心知识点。首...
简单了解javaintInteger区别
08-25
非 new 生成的 Integer 变量和 new Integer() 生成的变量比较时,结果为 false,因为非 new 生成的 Integer 变量指向的是 Java 常量的对象,而 new Integer() 生成的变量指向堆新建的对象,两者在内存的地址...
Java基础——intinteger区别详解
weixin_43977020的博客
07-20 1058
int a = 1000;int b = 1000;a == b?再换成integer呢?int a = 1000,integer b =1000;a == b? integer实际是对象的引用,当new一个integer时,实际上是生成一个指针指向此对象,而int是直接存储数据值。
IntInteger区别
zxx862309181的博客
04-13 440
转自java面试题之intInteger区别 - 果冻迪迪 - 博客园 (cnblogs.com) intInteger区别 1、Integerint的包装int则是java的一种基本数据类型 2、Integer变量必须实例化后才能使用,而int变量不需要 3、Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值 4、Integer的默认值是null,int的默认值是0 延伸: 关于Integerint比较...
Java Integer.valueOf()和Integer.parseInt()的区别说明
08-18
Java Integer 有两个静态方法,Integer.valueOf(String s) 和 Integer.parseInt(String s),它们都可以将字符串转换为整型,但它们之间有着很大的区别。 首先,Integer.parseInt(String s) 将会返回 int ...
Python数据类型:数字、字符串、列表、字典、元组、集合及相应操作
weixin_47844457的博客
04-12 1457
数据类型 数字(number) 字符串(string) 列表(list) 字典(dictionary) 元组(tuple) 集合(sets) 数字 整型(intinteger) Python3只有一种整数int,表示为长整型,没有Python2的long; 可以表示正数、负数和零; 进制: 默认使用十进制; 使用起始标记后输出时转化为十进制; 进制 起始 基本数 二进制 0b 0~9 八进制 0o 0~7 十六进制 0x 0~9,A~F
Python 的几种常用数据类型
最新发布
很酷的站长的博客
12-30 2544
本文简略介绍 Python 每种数据类型的定义和使用场景,使得学习者获得对 Python 的数据类型的整体认识,在后续的小节详细介绍每种型的具体使用细节。
python数据类型有哪些是可阅读,python都有哪些数据类型
weixin_42131628的博客
03-26 325
python数据类型有:整型、长整型、浮点型、字符串型、布尔型、列表型、元组型、字典型、集合型。数据类型是每种编程语言必备属性,只有给数据赋予明确的数据类型,计算机才能对数据进行处理运算,因此,正确使用数据类型是十分必要的,不同的语言,数据类型似,但具体表示方法有所不同,以下是Python编程常用的数据类型:1. 数字型Python数字型主要包括int(整型)、long(长整型...
123213123
测试0901-1
05-14 492
你会找程序员做男 女朋友吗?
Python基本数据类型
weixin_34167819的博客
08-08 357
一、简介 Python基本数据类型一般分为:数字、字符串、列表、元组、字典、集合这六种基本数据类型。 其数字又包含整型(整型又包括标准整型、长整型(Python2.7及之前版本有))、浮点型、复数型、布尔型(布尔型就是只有两个值的整型)、这几种数字型。列表、元组、字符串都是序列。 二、各种数据类型详解 2.1、数字 数字型是不可更改的对象。对变量改变数字值就是生成/创建新的对象。...
Python:常用的数据类型
u012235980的博客
06-07 5248
Python常用的数据类型 Number 数据类型用于存储数值。1)整型(Int) - 通常被称为是整型或整数,是正或负整数,不带小数点。2)长整型(long integers) - 无限大小的整数,整数最后是一个大写或小写的L (注:只适用于python2,python3不区分,只有一种整数Int)3)浮点型(floating point real values) - 浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示............
Python 之数据类型
fenglepeng的博客
12-18 1181
数字字符串集合:无序,即无序存索引相关信息元组:有序,需要存索引相关信息,不可变列表:有序,需要存索引相关信息,可变,需要处理数据的增删改字典:无序,需要存key与value映射的相关信息,可变,需要处理数据的增删改。
Python常见的数据类型
m0_58429499的博客
07-05 3215
目录一、整数int整数的不同进制表示方式二、浮点数型float浮点数存储不精确性三、布尔型bool 布尔值可以转换为整数进行计算四、字符串型str字符串的定义英文为integer,简写为int,可以表示正数、负数和零。 运行结果 运行截图浮点数由整数部分和小数部分组成。 运行结果 运行结果可以传递给Decimal整型或字符串参数,但不能是浮点数据,因为浮点数据本身就不准确。 运行结果英文为boolean,简写为bool,可以表示真 (True) 或假 (False) 的值。(注
JavaLong与Integer比较错误解析及缓存机制
Java编程语言,Long和Integer是两种包装,分别对应于基本型long和int。当我们在代码对这两个包装的对象进行比较时,如果不注意,很容易犯错误。通常,我们习惯于使用`==`来比较两个变量是否相等,但在...
写文章

热门文章

  • 计算机上网的用户账号怎么查询,自己的宽带账号怎么查 7133
  • miracast和乐播投屏_【当贝市场】Windows 10 Mircast投屏到电视教程 4493
  • 计算机软件系统崩溃,电脑软件打开后闪退或崩溃怎么办 3442
  • 计算机无法启动怎么重装系统,电脑开不开机怎么重装系统教程 3338
  • 卸载小鲁温度监控有影响吗_振动和温度对轴承的影响,看看你都注意到了吗?... 3313

最新文章

  • python 调用 pip类
  • mysql 存储 json 用什么数据结构
  • 二进制中为什么负数是正数取反再加一
2024年3篇
2021年149篇
2020年16篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家上海艺术商场美陈批发福州玻璃钢雕塑多少钱怀化玻璃钢雕塑价格多少钱贵州商场美陈图片中山公仔玻璃钢雕塑玻璃钢伟人雕塑清远定制玻璃钢动物雕塑安徽玻璃钢雕塑销售厂家昆明步行街玻璃钢雕塑定做价格兴城玻璃钢关公雕塑园林景观玻璃钢雕塑制作厂家玻璃钢浮雕厂家招聘雕塑工美陈玻璃钢卡通雕塑哪家便宜浙江玻璃钢字母座椅雕塑玻璃钢雕塑用材料价格表玻璃钢艺术雕塑商场美陈纸杯图片河池玻璃钢卡通人物雕塑代理红色玻璃钢卡通雕塑批发商场美陈玩偶主题租赁玻璃钢运动雕塑供应玻璃钢雕塑上漆玻璃钢雕塑的价格.玻璃钢造型雕塑太原河南常用商场美陈研发上海户内玻璃钢雕塑玻璃钢浮雕卡通雕塑定做鹰潭玻璃钢动漫雕塑商场美陈英语克孜勒苏小区玻璃钢雕塑设计香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化