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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • netstat 命令详解

    netstat 命令详解netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。语法选项netstat[选项]-a或–all:显示所有连线中的Socket;-A<网络类型>或–<网络类型>:列出该网络类型连线中的相关地址;

    2022年5月7日
    51
  • [转]使用控件的RenderControl()方法导出Excel

    [转]使用控件的RenderControl()方法导出Excel//使用控件的RenderControl()方法生成HTML表格stringstrName=”HuaMingCe”;Response.Clear();Response.Buffer=true;Response.Charset=”utf-8″;Response.AppendH…

    2022年7月20日
    13
  • 智能交通焕发勃勃生机,未来会呈现哪些巨变?[通俗易懂]

    智能交通焕发勃勃生机,未来会呈现哪些巨变?

    2022年1月22日
    64
  • 字与字节的关系_一个比特等于多少字节

    字与字节的关系_一个比特等于多少字节之前一直认为1个字等于2个字节,刚在书中发现有个说法说,4个字节作为一个字,与之前记忆的1个字等于2个字节相违背,这才“较真”好好查了下相关的概念。基本概念字:计算机进行数据处理时,一次存取、加工和

    2022年8月2日
    6
  • hashmap的实现原理面试_jvm面试题总结及答案

    hashmap的实现原理面试_jvm面试题总结及答案①HashMap的工作原理HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。HashMap使用链表来解决碰撞问题,当发生碰撞了,对象将会储存…

    2025年10月21日
    4
  • 只看这一篇就够:快速了解联邦学习技术及应用实践[通俗易懂]

    只看这一篇就够:快速了解联邦学习技术及应用实践[通俗易懂]随着大数据的进一步发展,重视数据隐私和安全已经成为了世界性的趋势,同时,大多数行业数据呈现数据孤岛现象,如何在满足用户隐私保护、数据安全和政府法规的前提下,进行跨组织的数据合作是困扰人工智能从业者的一大难题。而“联邦学习”将成为解决这一行业性难题的关键技术。今天和大家分享下咱们微众银行AI团队主导的新一代联邦学习技术及应用,并详细介绍联邦学习落地的全球首个工业级开源平台——Federated…

    2025年6月26日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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