int与Integer,long与Long的区别以及装箱与拆箱的理解

int与Integer,long与Long的区别以及装箱与拆箱的理解

1,从数据类型看:int和long是基本数据类型,对其赋值属于数值引用,只能对其进行数值运算

Integer和Long是对象类型,既然是对象那就有属性,有方法,这都是基本数据类型不包含的.

2,在实际使用中,对二者要注意的便是,int和long的默认值是0,使用时不用对其做null判断,也就不会出现NoPointerException这种异常,反之,Integer和Long的默认值是null,当对其使用toString()等方法时,如果不判断null就很有可能出现空指针异常.

再者在定义表结构时,如果设主键为自增长型的,那只能是int或long.至于其它字段要看情况了,如果不能为null,且是数字型的那就设定为基本数据类型的,

3,拆箱与装箱

Java的基本数据类型有

boolean char byte short int float long double

对应的对象(即包装类)为

Boolean Character Byte Short Integer Float Long Double

所谓的拆箱就是对象类型转基本数据类型时,会隐式的调用valueOf()方法去比较值的大小. 

装箱就是在进行类似Integer a=100时类似的操作时,就如同执行了Integer a=new Integer(100)的构造方法去创建a这个对象.

Integer a=100;//属于自动装箱,把值直接赋给一个对象.在自动打包时,127~-128的数值在内存会供重用
Integer b=100;
System.out.println(a==b);//true 虽然比较的是两个对象,但是jdk5.0后,对-128-127这个范围内的整形对象进行了缓存,实际是自动调用了两个Integer的valueOf()方法
Integer c=1000;
Integer d=1000;
System.out.println(c==d);//false 比较的是两个对象,虽然值一样,但是引用地址不一样,且不再-128-127之间所以不会默认调用valueOf方法
System.out.println(c.equals(d));//true 比较的是两个对象的值
int e=1000;
System.out.println(e==c);//true c自动拆包,对象c隐式的调用了valueOf()方法,即自动拆包,比较二者的值
Integer f=new Integer(e);//非自动打包
System.out.println(f==e);//true 同上
Integer g=new Integer(c);
System.out.println(g==c);//false 虽然c对象作为入参放大到了g对象的构造函数里面,但是默认的构造函数参数是int类型,所以c自动拆包了,因此g和c是对象之间的比较
System.out.println(g.equals(c));//true 比较值
Long al=127l;
Long bl=127l;
System.out.println(al==bl);//true -128-127之间,同int
Long cl=128l;
Long dl=128l;
System.out.println(cl==dl);//false 不再-128-127之间,同int

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/106343.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 正则匹配中文数字

    正则匹配中文数字正则匹配中文数字运营导入小说时遇到小麻烦,想要在章节目录前面加一些符号,word等工具搜半天没搜到,就想着用正则匹配试一下,于是用notepad++试了一下,正则匹配中文数字章节。表达式为:(第[\u4e00-\u9fa5\u767e\u5343\u96f6]{1,10}章)追加的内容\1笔记正则匹配中文个位数,\u4e00-\u9fa5百千零u767e\u534…

  • 查看sqlite_sqlite数据库手机版

    查看sqlite_sqlite数据库手机版这是什么用于SQLite的数据库浏览器(DB4S)是一种高质量,可视化的开源工具,用于创建,设计和编辑与SQLite兼容的数据库文件。DB4S适用于想要创建,搜索和编辑数据库的用户和开发人员。DB4S使用熟悉的类似电子表格的界面,并且不必学习复杂的SQL命令。控件和向导可供用户使用:创建并压缩数据库文件 创建,定义,修改和删除表 创建,定义和删除索引 浏览,编辑,添加和删除记录 搜索记录 导入和导出记录为文本 从CSV文件导入和导出表格 从/到SQL转储文件导入和导出数据库

  • Windows 64位下安装Redis详细教程

    Windows 64位下安装Redis详细教程

    2021年10月10日
  • hdu 4455 Substrings (DP 预处理思路)「建议收藏」

    hdu 4455 Substrings (DP 预处理思路)

  • 国内常用DNS「建议收藏」

    国内常用DNS「建议收藏」//DNS1:114.114.114.114国内移动,电信,联通通用DNS//DNS2:223.5.5.5阿里//DNS3:223.6.6.6阿里//DNS4:180.76.76.76百度

  • linux文件复制和移动[通俗易懂]

    linux文件复制和移动[通俗易懂]linux文件复制和移动    文件复制cp(copy)    命令格式:cpsrcdest    cpfile1file2file3(多文件时,最后面是dest,其他都是src)    允许出现的情况是:        1.复制一个文件到一个文件        2.复制多个文件到一个目录    案例:    a.将文件复制到文件夹下,保

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号