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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 推荐一款免费的数据库管理工具,比Navicat还要好用,功能还很强大

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 作者:不剪发的Tony老师 blog.csdn.net/horses/article/details/8968342…

    2021年6月25日
    82
  • 基于MATLAB语音信号的处理与滤波

    基于MATLAB语音信号的处理与滤波摘要:MATLAB是十分强大的用于数据分析和处理的工程实用软件,利用其来进行语音信号的分析、处理和可视化十分便捷。文中介绍了在MATLAB环境中如何驱动声卡采集语音信号和语音信号采集后的文档处理方法,并介绍了FFT频谱分析原理及其显示、MATLAB中相关函数的功能、滤波器的设计和使用。在此基础上,对实际采集的一段含噪声语音信号进行了相关分析处理,包括对语音信号的录取和导入,信号时域和频域方面的分析,添加噪声前后的差异对比,滤波分析,语音特效处理。结果表明利用MATLAB处理语音信号十分简单、方便且易于实现。

    2022年5月25日
    49
  • [灵魂拷问]MySQL面试高频100问(工程师方向)

    [灵魂拷问]MySQL面试高频100问(工程师方向)黑客技术点击右侧关注,了解黑客的世界!Java开发进阶点击右侧关注,掌握进阶之路!Python开发点击右侧关注,探讨技术话题!作者丨呼延十排版丨Java团长juejin….

    2022年9月17日
    0
  • Odin Inspector 系列教程 — Hide Reference Object Picker Attribute[通俗易懂]

    Odin Inspector 系列教程 — Hide Reference Object Picker Attribute[通俗易懂]HideReferenceObjectPickerAttribute特性:隐藏非Unity序列化引用类型属性上方显示的多态对象选择器。usingSirenix.OdinInspector;usingSystem.Collections.Generic;usingUnityEngine;publicclassHideReferenceO…

    2022年7月21日
    6
  • DeepFake技术–DeepFakes 概述(一)(二)

    DeepFake技术–DeepFakes 概述(一)(二)AI换脸技术——DeepFakes概述(一)编者按:本文由图普科技编译自ExploringDeepFakes。2017年12月,一个名为“DeepFakes”的用户在Reddit上发布了一个“假视频”,视频中的艺人其实是后期加上的,但是看起来几乎毫无破绽。他利用了深度学习和AI新技术,在成人电影中把演员的脸替换成某个艺人的脸,从而制作成了这个看上去以假乱真的视频。从视频发布以后…

    2022年5月26日
    61
  • idea2021激活码永久-激活码分享

    (idea2021激活码永久)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~83…

    2022年3月27日
    9.3K

发表回复

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

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