首页 > 其他分享 >int 和 Integer 有什么区别?

int 和 Integer 有什么区别?

时间:2023-07-27 15:00:12浏览次数:23  
标签:变量 区别 int 数据类型 new Integer 默认值

int 和 Integer 有什么区别,以及以下程序结果
(1)Integer 是 int 的包装类,int 则是 java 的一种基本数据类型
(2)Integer 变量必须实例化后才能使用,而 int 变量不需要
(3)Integer 实际是对象的引用,当 new 一个 Integer 时,实际上是生成一个指针指向此对象;而 int
则是直接存储数据值
(4)Integer 的默认值是 null,int 的默认值是 0
(5)java 在编译 Integer i = 100 ;时,会翻译成为 Integer i = Integer.valueOf(100)。而 java API 中对 Integer
类型的 valueOf 的定义如下,对于-128 到 127 之间的数,会进行缓存,Integer i = 127 时,会将 127 这
个 Integer 对象进行缓存,下次再写 Integer j = 127 时,就会直接从缓存中取,就不会 new 了

public class Test01 {
    public static void main(String[] args){
	Integer a = 127;
	Integer b = 127;
	Integer c = 128;
	Integer d = 128;
	System.out.println(a==b); //true
	System.out.println(c==d); //false
 }
 }

一、区别:
1.Integer是int的包装类,int则是java的一种基本的数据类型;

2.Integer变量必须实例化之后才能使用,而int变量不需要实例化;

3.Integer实际是对象的引用,当new一个Integer时,实际上生成一个指针指向对象,而int则直接存储数值

4.Integer的默认值是null,而int的默认值是0。

区别 interger int
数据类型不同 Integer是int的包装类 int则是java的一种基本的数据类型
使用方法不同 Integer变量必须实例化之后才能使用 int变量不需要实例化
存储数值方式不同 Integer实际是对象的引用 int则直接存储数值
默认值不同 Integer的默认值是null int的默认值是0

二、Integer和int的比较
  1.由于Integer实际是对一个Integer对象的引用,所以两个通过new生成的Integer变量永远是不相同的,因为New生成的是两个不同的对象,其内存地址不同。下面运行的结果为false
image

  2.Integer变量和int变量进行比较时,只要两个变量的值相等,则结果就为True,(因为包装类Integer和基本数据类型比较的时候,java会自动拆箱为int,然后进行比较,实际上就是两个int变量进行比较),下面运行的结果为true

image

  3.非new生成的Integer变量和new Integer生成的Integer变量比较的时候,结果为false(因为非new生成的Integer变量指向的是Java常量池中的对象,而new出来的对象指向的是堆中新建的对象,两者内存地址不同),下面返回的是false

image

  4.两个非new出来的Integer对象,进行比较的时候,如果两个变量的值区间在-127~128之间的时候,则返回的结果为true,如果两个变量的变量值不在这个区间,则比较的结果为false。下面返回的是true
image
 下面返回的是false
image

三、java 基本类型与引用类型的区别:
  1.基本数据类型保存原始值,引用数据类型保存的是引用值(引用值就是指在对象中所处的地理位置)

标签:变量,区别,int,数据类型,new,Integer,默认值
From: https://www.cnblogs.com/sili-future/p/17584968.html

相关文章

  • ios和安卓测试有什么区别
    iOS和安卓测试的区别1.流程概述下面是iOS和安卓测试的一般流程,包括准备、编写测试用例、执行测试用例和分析测试结果。具体流程如下所示:步骤描述1准备测试环境2编写测试用例3执行测试用例4分析测试结果2.准备测试环境针对iOS和安卓测试的准备工作......
  • script setup lang="ts">和export default { setup() {区别是什么
    scriptsetuplang="ts">和exportdefault{setup(){区别是什么setup是Vue3新增的语法糖,可以让我们使用更简洁的代码来编写组件。它在编译时会将代码转换为使用setup函数的形式,省略了传统Vue组件中的template、data、methods等属性的定义。模板<template><......
  • Inpaint Anything:一键进行多种图像修补
    本文分享自华为云社区《绘制一切》,作者:雨落无痕。绘制一切-InpaintAnything相关链接:Notebook案例地址:绘制一切AIGallery:https://developer.huaweicloud.com/develop/aigallery/home.html也可通过AIGallery,搜索【绘制一切】一键体验!InpaintAnything通过一键点击标记选......
  • java 动态生成int数组
    Java动态生成int数组在Java中,动态生成int数组是一种常见的需求。动态生成数组意味着在程序运行时根据需要创建数组,并根据特定的条件来初始化数组的大小和元素。这种灵活性使得程序能够根据实际情况动态调整数组的大小和内容,提高程序的效率和可扩展性。使用ArrayList动态生成int数......
  • C#中(&&,||)与(&,|)的区别详解
    对于(&&,||),运算的对象是逻辑值,也就是True/False&&相当与中文的并且,||相当于中文的或者。(叫做逻辑运算符又叫短路运算符)运算结果只有下列四种情况。True&&True=True(左边为true,再验证右边也为true,返回结果true)假如这是一个查询条件,则执行。True&&False=False......
  • 《Win32篇》空项目、Win32项目、MFC项目、Win32控制台的区别
    空项目、Win32项目、MFC项目、Win32控制台的区别参考链接:https://www.cnblogs.com/MCSFX/p/13267287.html参考链接:https://www.zhihu.com/question/20524989/answer/17575697空项目控制台控制台没有窗口,控制台与有窗口的(例如:win32、mfc)交互方式不同,前者是CML(命令模式),后者是G......
  • ==与equals区别
    publicclassll{publicstaticvoidmain(String[]args){Strings1="abc";Strings2="abc";Strings3=newString("abc");Strings4="a"+"b"......
  • startInternal One or more listeners failed to start
    IDEA启动项目一直报错startInternalOneormorelistenersfailedtostart,修改了tomcat端口号也不行,网上各种方法尝试也不好使。这时关注IDEA启动TOMCATLOCALHOSTlog日志,查看日志中报错信息,针对性修改错误......
  • for...in 循环和 for...of 循环的区别
    JavaScript中的for...in循环和for...of循环是两种不同的迭代方式,用于遍历数据结构中的元素。它们具有一些区别:for...in循环:用于遍历对象的可枚举属性(包括原型链上的属性)。迭代的是键(属性名),而非值。不保证迭代顺序,因为对象的属性顺序在规范中并未定义。比较适合用于遍......
  • 分布式事务两阶段提交和三阶段提交有什么区别?
    在分布式事务中,通常使用两阶段协议或三阶段协议来保障分布式事务的正常运行,它也是X/Open公司定义的一套分布式事务标准。X/Open公司是由多家国际计算机厂商所组成的联盟组织,它建立之初是为了向UNIX环境提供标准。分布式事务是指在分布式系统中,多个节点之间进行的事务操作......