int与Integer的爱恨情仇
int作为java中元老级的数据类型,可谓无处不在,自从jdk5诞生了Integer,从此不在孤单。
为什么要设计Integer呢?它与int有什么区别?
一、Integer是int的包装类型,是引用类型,int是值类型。
衍生出来的特点就是:
(1)Integer比较时比较地址,int比较时比较值,Integer与int比较又如何呢?留个疑问,下面再论。
(2)以对象的属性存在时,Integer初始默认值为null,int为0;在方法作用域内,变量是要手动进行初始化滴,若只声明,在后面使用的时候编译器是通不过的。
二、出于数据转换的考虑
Integer提供了两种方法,parseInt和valueOf,看下面:
String s = "1"
int a = Integer.parseInt(s)
Integer b = Integer.valueOf(s)
Integer c = Integer.valueOf(1)
1)parseInt接收String类型的入参,返回int
2)valueOf接收String和int类型的入参,返回Integer
ps:当然,你这样写也是成立的:int d = Integer.valueOf(s),编译器进行了隐式拆箱,将Integer转化为了int。
三、比较
1、int与Integer
int a = 1;
Integer b = 1;
a==b为true,b先进性拆箱,与a比较的是值
2、 Integer与Integer
Integer a = new Integer(1)
Integer b = 1
Integer c = 1
a==b? false
解:a存在于内存堆中,b存在于常量池中,地址不同。任何new都会产生新的对象;Integer b = 1进行了隐式的装箱(调用了valueOf方法)
b==c? true
解:在内存中,会有一块叫做常量池的区域,专门存放b和c这种形式定义的对象,初始化时会先去常量池中寻找1,若已经存在,直接指向1,若不存在,生成对象1放入常量池。
再看这个:
Integer d = 128
Integer e = 128
d==e?false
为什么这个不适合上面的常量池说法了呢?原因在于常量池指定了数值范围:-128~127。
超过了这个范围,就会生成新的对象。
3、比较两个Integer的值
Integer a = new Integer(1)
Integer b = new Integer(2)
可以这样:a.intValue() == b.intValue() 或者 a.equals(b)
四、获取最大值和最小值如此简单
int a = Integer.MAX_VALUE; 2^31-1
int b = Integer.MIN_VALUE; -2^31
五、使用场景的限制
1)很多方法参数就只接收对象类型
2)泛型只支持对象类型
3)考虑到数据库设计中某些数值列可以为null,持久话对象中使用引用类型,可接收null值
关注老姜谈技术,微信号:helojava,或者扫描下面二维码。

每日一帖,技术鸡汤。
int与Integer的爱恨情仇的更多相关文章
- pytorch和tensorflow的爱恨情仇之基本数据类型
自己一直以来都是使用的pytorch,最近打算好好的看下tensorflow,新开一个系列:pytorch和tensorflow的爱恨情仇(相爱相杀...) 无论学习什么框架或者是什么编程语言,最基础 ...
- Menu与ActionBar的爱恨情仇
最近在开发一款音乐播放器,在开发过程中遇到了一点小麻烦,通过android API搞清楚了Menu与ActionBar的爱恨情仇,写了个小Demo祭奠一下那些年我们陷进去的坑,有不对的地方请大神们批评 ...
- 注解:大话AOP与Android的爱恨情仇
转载:大话AOP与Android的爱恨情仇 1. AOP与OOP的区别 平时我接触多的就是OOP(Object Oriented Programming面向对象).AOP(Aspect Oriente ...
- 对json的爱恨情仇
本文回想了对json的爱恨情仇. C++有风险,使用需慎重. 本文相关代码在:http://download.csdn.net/detail/baihacker/7862785 当中的測试数据不在里面 ...
- String、StringBuilder、StringBuffer的爱恨情仇
第三阶段 JAVA常见对象的学习 StringBuffer和StringBuilder类 (一) StringBuffer类的概述 (1) 基本概述 下文以StringBuffer为例 前面我们用字符 ...
- pytorch和tensorflow的爱恨情仇之定义可训练的参数
pytorch和tensorflow的爱恨情仇之基本数据类型 pytorch和tensorflow的爱恨情仇之张量 pytorch版本:1.6.0 tensorflow版本:1.15.0 之前我们就已 ...
- web移动端fixed布局和input等表单的爱恨情仇 - 终极BUG,完美解决
[问题]移动端开发,ios下当fixed属性和输入框input(这里不限于input,只要可以调用移动端输入法的都包括,如:textarea.HTML5中contenteditable等),同时存在的 ...
- 除了love和hate,还能怎么表达那些年的“爱恨情仇”?
实用英语 帮你全面提高英语水平 关注 童鞋们每次刷美剧的时候,相信都会被CP感满满的男女主角虐得体无完肤吧. 可是,一到我们自己表达爱意或者恨意的时候,却苦于词穷,只会用love, like, hat ...
- [转帖]探秘华为(一):华为和H3C(华三)的爱恨情仇史!
探秘华为(一):华为和H3C(华三)的爱恨情仇史! https://baijiahao.baidu.com/s?id=1620703498823290828&wfr=spider&fo ...
随机推荐
- LNMP安装过程
LNMP一键安装包是什么? LNMP一键安装包是一个用Linux Shell编写的可以为CentOS/RadHat/Fedora.Debian/Ubuntu/Raspbian/Deepin VPS或独 ...
- web项目ajax技术一些总结
WEB项目中,最主要的就是前后端间的联络.有时需要不进行页面跳转的前提下请求后端方法(action),就需要用到ajax. 在这个博客中,我用到的都是原生的js的ajax,不是很喜欢用jquery的a ...
- ElasticSearch ik分词安装
1.下载对应版本的ES ik分词 https://github.com/medcl/elasticsearch-analysis-ik/releases 2.解压elasticsearch-analy ...
- 解决OracleConnection ORA-1017 和 HRESULT:0x8007000B 错误
试图加载格式不正确的程序. (异常来自HRESULT:0x8007000B) 解决方案: IIS下 winform下: ORA-1017 错误
- iOS-Xcode使用技巧
一.快捷键的使用 经常用到的快捷键如下: 新建 shift + cmd + n 新建项目 cmd + n 新建文件 视图 option + cmd + 回车 打开助理编 ...
- Tips for newbie to read source code
This post is first posted on my WeChat public account: GeekArtT Reading source code is always one bi ...
- 移动web app开发必备 - Deferred 源码分析
姊妹篇 移动web app开发必备 - 异步队列 Deferred 在分析Deferred之前我觉得还是有必要把老套的设计模式给搬出来,便于理解源码! 观察者模式 观察者模式( 又叫发布者-订阅者模 ...
- OpenCASCADE Hidden Line Removal
OpenCASCADE Hidden Line Removal eryar@163.com Abstract. To provide the precision required in industr ...
- exe4j的使用
下载:http://download.cnet.com/exe4j/3000-2070_4-144405.html 参考:http://blog.chinaunix.net/uid-25749806- ...
- 数据可视化-EChart2.0使用总结1
图表是企业级Web开发必不可少的一个功能点.也是“数据可视化的一个具体呈现”.今天看到阮一峰翻译的“数据可视化:基本图表”一文,同时梳理一下公司现在项目使用的EChart2.0类库.阮一峰的文章同时也 ...