int和Integer有什么区别

2023-05-16

面试中会问道int和Integer的区别,这里我们详细说一下

  • Integer是int的包装类;int是基本数据类型。
  • Integer变量必须实例化后才能使用;int变量不需要。
  • Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值。
  • Integer的默认值是null;int的默认值是0

关于Integer和int的深入比较

1、由于Integer变量实际上是对一个Integer对象的引用,所以两个通过new生成的Integer变量永远是不相等的(因为new生成的是两个对象,其内存地址不同)。

Integer i = new Integer(100);
Integer j = new Integer(100);
System.out.print(i == j); //false

2、Integer变量和int变量比较时,只要两个变量的值是向等的,则结果为true(因为包装类Integer和基本数据类型int比较时,Java会自动拆包装为int,然后进行比较,实际上就变为两个int变量的比较)

Integer i = new Integer(100);
int j = 100System.out.print(i == j); //true

3、非new生成的Integer变量和new Integer()生成的变量比较时,结果为false。(因为 ①当变量值在-128~127之间时,非new生成的Integer变量指向的是java常量池中的对象,而new Integer()生成的变量指向堆中新建的对象,两者在内存中的地址不同

Integer i = new Integer(100);
Integer j = 100;
System.out.print(i == j); //false

4、对于两个非new生成的Integer对象,进行比较时,如果两个变量的值在区间-128到127之间,则比较结果为true,如果两个变量的值不在此区间,则比较结果为false

Integer i = 100;
Integer j = 100;
System.out.print(i == j); //true
Integer i = 128;
Integer j = 128;
System.out.print(i == j); //false

对于第4条的原因:
java在编译Integer i = 100 ;时,会翻译成为Integer i = Integer.valueOf(100);,而java API中对Integer类型的valueOf的定义如下:

public static Integer valueOf(int i){
    assert IntegerCache.high >= 127;
    if (i >= IntegerCache.low && i <= IntegerCache.high){
        return IntegerCache.cache[i + (-IntegerCache.low)];
    }
    return new Integer(i);
}

如果有收获!!! 希望老铁们来个三连,点赞、收藏、转发。
创作不易,别忘点个赞,可以让更多的人看到这篇文章,顺便鼓励我写出更好的博客
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

int和Integer有什么区别 的相关文章

随机推荐

  • 小米商城项目(springboot+thymeleaf)

    starsea mall 项目是一套电商系统 xff0c 包括 starsea mall 商城前台系统及商城后台系统 xff0c 基于 Spring Boot 2 X 及相关技术栈开发 前台商城系统包含首页登录 商品分类 新品上线 首页轮播
  • Idea解决SVN的代码冲突

    解决冲突 当B用户代码提交发生冲突后 xff0c 可以再次选择更新 xff1a 选择OK xff1a 弹窗如下 xff1a 如果选择Merge xff0c 则弹出版本差异的窗口 xff0c 让用户自行查看差异后再选择以哪个版本的修改为准 x
  • Axiso解决跨域访问

    首先请检查下你的 Vue 版本 xff0c Vue2 和 Vue3 跨域方式不同 xff1a vue V 2 X or 3 X 一 Vue2 版本 这里以访问 Ve2x 的一个公告API为例 xff0c 直接访问如下 xff1a span
  • SpringBoot集成Spring Security(1)——入门程序

    本篇文章环境 xff1a SpringBoot 2 0 43 Mybatis 43 Spring Security 5 0 注意 xff1a SpringSecurity 5 0 43 版本变动较多 xff0c 且不兼容之前版本 xff0c
  • Windows下MongoDB 3.x 的安装及配置

    一 登录Mongodb官网 https www mongodb com try download community 下载安装包 二 安装MongoDB 安装比较简单 xff0c 类似于QQ xff0c 微信等软件 xff0c 中间主要是选
  • 如何获取 OSS AccessKeyId、AccessKeySecret

    开通阿里云oss xff1a https www aliyun com 1 点击概览 AccessKey oss控制台官网链接 xff1a https oss console aliyun com overview 2 出现下图 xff0c
  • vscode怎么使用git

    1 clone代码库 在vscode中输入快捷键 Ctrl 43 Shift 43 P 打开vscode的命令框 xff0c 在框中输入 git clone 并回车 xff0c 然后在文本框中输入git代码库的地址 2 修改clone下来的
  • Json与Java对象相互转化

    出现问题的原因 xff1a 在做项目中 xff0c 我们使用Hutool工具的Http请求调用远程服务器的接口 xff0c 返回Json字符串 xff0c 现在要把Json字符串转化为对象进行存储 xff0c 传给前端vue 访问远程返回的
  • 微信小程序基础

    文章目录 一 微信小程序介绍1 为什么是微信 程序2 官 微信 程序体验 二 微信小程序准备工作1 注册账号2 登录小程序3 获取APPID4 开发工具 三 第 个微信 程序1 打开微信开发者 具2 新建 程序项 3 填写项 信息4 成功5
  • 微信小程序之动态添加、删除指定view和获取input值

    遇到的问题 xff1a 动态的添加指定的view内容 嗯 很简单 wx for就搞定 xff01 xff01 动态添加的内容中有input xff0c 最终获取值的时候 xff0c 要获取到所有input的值并且是一个数组 动态删除指定的已
  • LibTorch:tensor.index_select()

    LibTorch中的tensor index select 方法与PyTorch中的用法类似 xff0c 作用都是在指定的tensor维度dim上按照index值索引向量 先看一下在LibTorch中的声明 xff1a inline Ten
  • 【微信小程序常见问题】bindtap事件传参 | wx.navigateTo()传参

    目的 xff1a 微信小程序中某个控件的点击事件bindtap触发时如何传参 举例实现 xff1a 1 wxml文件 这里的参数名是 item xff0c 参数值是 doubleperson lt view class 61 34 radi
  • 【微信小程序组件】自定义单选(多选)切换颜色按钮组件

    问题所在 xff1a 在小程序开发中 xff0c 官网提供的表单组件不足以满足我们的需求 xff0c 所以我们需要自定义组件 这里我们以按钮为例 需求 xff1a 1 默认按钮都不选中 xff0c 当点击一个按钮选中且按钮变色 xff0c
  • useGeneratedKeys=“true“作用

    使用 mysql 自增长序列 xff0c 新插入一条数据时 xff0c 怎么得到主键 xff1f 加入以下属性即可 xff1a useGeneratedKeys 61 true keyProperty 61 id id xff1a 根据自己
  • 【毕业设计】便宜购商城管理系统(Springboot+Jsp+支付宝+Echarts)

    便宜购商城项目是一套电商系统 xff0c 包括商城前台系统及商城后台系统 xff0c 基于 Spring Boot 2 X 及相关技术栈开发 前台商城系统包含首页登录 商品分类 首页轮播 商品搜索 商品展示 购物车 订单结算 订单流程 个人
  • IDEA中使用Debug调试详解

    在现在的开发中 xff0c 我们经常采用Debug来追踪代码的运行流程 xff0c 通常在程序运行过程中出现异常 xff0c 启用Debug模式可以分析定位异常发生的位置 xff0c 以及在运行过程中参数的变化 通常我们也可以启用Debug
  • nrm报错 [ERR_INVALID_ARG_TYPE]

    nrm 1 2 1报错 xff1a TypeError ERR INVALID ARG TYPE The 34 path 34 argument must be of type string Received undefined at va
  • SVN下载、拉取远程库、上传代码及注意问题

    1 下载SVN客户端 首先进入在SVN官网 xff0c 下载SVN客户端 xff1b 官网地址 xff1a https tortoisesvn net downloads html 选择 Downloads xff0c 选择自己电脑对应的版
  • vscode / idea 使用SVN及查看历史记录

    一 vscode使用 SVN 1 在vscode插件中心搜索svn 进行安装 xff08 我这里已经安装完毕了 xff09 注意 xff1a 插件安装成功 xff0c 需要重新启动软件 安装成功后会出现如下的图标 xff1a 2 桌面右键使
  • int和Integer有什么区别

    面试中会问道int和Integer的区别 xff0c 这里我们详细说一下 Integer是int的包装类 xff1b int是基本数据类型 Integer变量必须实例化后才能使用 xff1b int变量不需要 Integer实际是对象的引用