Java Int和Integer有什么区别?
Int
int是我们常说的整型数字,是Java的8个原始数据类型(Primitive Type:boolean、byte、short、char、int、float、double、long)之一。Java语言虽然号称一切都是对象,但原始数据是例外。
Integer
Integer是int对应的包装类,它有一个int类型的字段存储数据,并且提供了基本操作,比如数学运算,int和字符串之间转换等。在Java5中引入了自动装箱和自动拆箱功能,Java可以根据上下文,自动进行转换,极大的简化了相关编程。
关于Integer的值缓存
这涉及Java5中的另一个改进。构建Integer对象的传统方式是直接调用构造器,直接new一个对象。但是根据实践我们发现大部分数据操作都是集中在有限的,较小的数值范围,因而在Java5中新增了静态工厂方法value of,在调用它的时候会利用一个缓存机制,带来了明显的性能改进。按照Javadoc,这个缓存默认值是-128到127。
补充1
原始数据类型和Java泛型并不能配合使用,也就是指Primitive Types和Generic不能混用,于是Java就设计了auto-boxing/unboxing机制,实际上就是primitive value与object之间的隐形转换机制,否则要是没哟这个机制,开发者就必须每次手动显式转换,这多麻烦呀。但是primitive value与object各自有各自的优势,primitive value在内存中存的是值,,所以找到primitive value的内存位置,就可以获得值;不像object存的是reference,找到object的内存位置,还要根据reference找下一个内存空间,要产生更多的IO,所以计算性能比primitive value 差,但是object具备generic的能力,,更抽象,解决业务问题编程效率高。于是Jvav设计者的初衷是这样的:如果开发者要计算,就使用primitive value;如果开发者要处理业务问题,应该使用object,采用Generic机制。反正Java有auto-boxing/unboxing机制,对开发者来讲也不需要注意什么。为了弥补object计算能力的不足,还设计了static valueof()方法提供缓存机制,算是一个弥补。
Java Int和Integer有什么区别?的更多相关文章
- java int 与 Integer之间的区别
int与integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象 1.Java 中的数据类型分为基本数据类型 ...
- Java int和Integer包装类的区别和比较
区别: ...
- Java int和integer有什么区别 (mybatis踩坑)
不要在实体类中使用int 我们都知道Integer是int的包装类,而int是基本数据类型.所以Integer类型的变量会初始化为null,int类型则会被初始化为0 . 所以在下面的动态拼接例子中: ...
- 【转】java int与integer的区别
java int与integer的区别 int与integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象 1 ...
- Java进阶(三十五)java int与integer的区别
Java进阶(三十五)java int与Integer的区别 前言 int与Integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而Integer是对象 ...
- 在java语言中int 和 Integer 有什么区别
在java语言中int 和 Integer 有什么区别 解答:int是基本数据类型,Integer是int的包装类,属于引用类型
- (转)Java进阶java int与Integer的区别
Java进阶java int与Integer的区别 前言 int与Integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而Integer是对象,用一个引 ...
- Hashtable,HashMap,TreeMap有什么区别?Vector,ArrayList,LinkedList有什么区别?int和Integer有什么区别?
接着上篇继续更新. /*请尊重作者劳动成果,转载请标明原文链接:*/ /*https://www.cnblogs.com/jpcflyer/p/10759447.html* / 题目一:Hashtab ...
- java int与integer的区别
int与integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象 1.Java 中的数据类型分为基本数据类型 ...
随机推荐
- ch4-持久存储
1.处理数据和打印 man = [] other = [] try: data = open('sketch.txt') for each_line in data: try: (role, line ...
- Python 循环退出
常用语句: break :退出整个循环,循环外的语句继续执行continue :退出本次循环,继续下一次循环pass :什么也不做,相当于在这里占个位置,以便以后修改代码sys.exit() :直接退 ...
- SaltStack 如何自定义 grains 信息
首先在 minion 上编辑 grains 配置文件,然后添加自定义的 grains: [root@localhost ~]$ cat /etc/salt/grains # 这个文件默认是没有的 ro ...
- php学习十:继承
在php中,我们常常会定义许多类,当多个类里面的方法或者属性出现重复的时候,会常常造成代码重复和冗杂的弊端,这个时候,我们可以用到继承(extends) 继承的特性: * 1.子类可以扩充属性* 2. ...
- 教程Xcode 下编译发布与提交App到AppStore
The proplem of Prepare for Upload for App store upload Application App store 增加新应用的步骤. 1. 访问iTunesCo ...
- Apktool源码解析——第一篇
著名的apktool是android逆向界用的最普遍的一个工具,这个项目的原始地址在这里http://code.google.com/p/android-apktool/,但是你们都懂的在天朝谷歌是无 ...
- Ubuntu14.04下安装DevStack
虚拟机中的网络配置 NET8 为nat net2 为host-only 虚拟机网络配置 # The primary network interface vmnet nat type auto eth0 ...
- oracle缩写与术语
术语 定义活动会话池 资源组或子计划允许的当前活动会话数ADDM Automatic Database Diagnostic Monitor(自动数据库诊断监视程序)ASM Automatic Sto ...
- Linux 安装 MantisBT 详解
https://www.cnblogs.com/qdwyg2013/p/6030157.html 在工作中,选用了MantisBT作为公司的BTS工具.MantisBT的作为一款缺陷跟踪管理系统,有以 ...
- HDU 5618 Jam's problem again(三维偏序,CDQ分治,树状数组,线段树)
Jam's problem again Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Othe ...