一个例题,了解包装类

news2024/9/22 17:32:22

下列代码输出什么,为什么?

public class Test3 {
    public static void main(String[] args) {
        Integer a1 = 100;
        Integer a2 = Integer.valueOf(100);
        Integer a3 = new Integer(100);
        System.out.println(a1 == a2);
        System.out.println(a1 == a3);
        System.out.println(a1.equals(a3));
        System.out.println("--------------------");
        Integer b1 = 200;
        Integer b2 = Integer.valueOf(200);
        Integer b3 = new Integer(200);
        System.out.println(b1 == b2);
        System.out.println(b1 == b3);
        System.out.println(b1.equals(b2));
        System.out.println("--------------------");
        Float c1 = 100f;
        Float c2 = Float.valueOf(100f);
        Float c3 = new Float(100f);
        System.out.println(c1 == c2);
        System.out.println(c1 == c3);
        System.out.println(c1.equals(c3));
    }
}

输出:

理由:
首先  Integer a1 = 100;
Integer a2 = Integer.valueOf(100) ;
Integer a3 = new Integer(100)
第一种写法和第二种写法没有本质区别,第二种写法是手动装箱,用valueOf这个方法,根据这个方法来实现的,第一种方法是自动装箱,我们不写valueOf方法,java会自动帮我们写.
第二种和第三种写法都是手动装箱,但是还是有一些区别的:
valueOf这样写,返回的是什么是根据valueOf内部方法来决定的,而new 是直接创建了一个新的对象把值存入到对象的某个属性中.
所以a1 ==  a2 为 true,原因是在Inteager.valueOf中,在-128 到 127 之间会直接返回一个现成的对象,这个对象里面存入了对应的值,如果不在这个范围,就重新new一个对象,把值存入到对象的某个属性中,
100在这个范围内,所以 a1 和 a2 指向的是同一个对象,而a3重新new了一个对象,a1和a3指向的是俩个不同的对象,所以返回值为false,而equals方法中判断的是a1和a3想对应的值知否相同,所以这里是true
下面同理,b1,b2,b3不在-128到127这个范围,都是直接创建了一个对象,所以它们指向的对象并不相同,虽然值相同,所以前俩个为false,equals判断的是值是否相同,这里b1和b3的值都是200,返回true

同样的,c1,c2,c3也是同理,只是这里Float的valueOf方法,没有返回判断区间什么的说法,都是直接new对象,把值放入到对象中的

Integer.valueOf的源码:

 Float.valueOf的源码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/132622.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分离编译、类型萃取、变参模板

分离编译 一个程序由若干个源文件共同实现,每个源文件单独编译生成目标文件,最后将所有的目标文件链接起来形成单一可执行文件的过程称之为分离编译模式。模板不支持分离编译 编译器报的这种错误属于链接性错误,也就是当程序预处理、编译、汇…

Sutherland–Hodgman 算法介绍(简单易懂)

目录 一、算法介绍 二、算法描述 三、计算细节补充 四、算法总结 一、算法介绍 我们使用Sutherland–Hodgman算法来裁剪多边形的边,一般是给你一个多边形顶点序列(P1,P2,P3,P4,…Pn)让你裁剪,最终裁剪掉裁剪多边形的外部部分(下图黑框就是裁剪多边形…

大中型政企机构网络安全建设发展趋势研究报告

声明 本文是学习大中型政企机构网络安全建设发展趋势研究报告. 下载地址而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 研究背景 大中型政企机构是网络安全保护的重中之重,也是国内网络安全建设投入最大,应用新技术、新产品最…

Proteus8仿真:51单片机25AA020A(SPI接口EEPROM)的使用

51单片机25AA020A实验内容25AA020A引脚功能SPI信号模拟8位写8位读EEPROM读写函数EEPROM写使能EEPROM写一个Byte实验程序例程main.c工程文件Microchip的25AA020A是一个2Kbit串行电可擦除可编程只读存储器(EEPROM)。内存可以通过一个简单的串行外围接口&am…

第三十讲:神州路由器路由重分发配置

RIP和OSPF协议是目前应用最广泛的路由协议,两种协议交接的场合也很多见,两种协议的重分布是比较常见的配置。主校区原来所采用的网络协议为OSPF,而分校区采用的路由协议是RIP,采用RIP和OSPF重分发技术可以解决此问题。 实验拓扑图…

HDLBits练习汇总-14-时序逻辑设计测试--状态机(二)

水箱问题(Exams/ece241 2013 q4) 一个大水库的水为几个用户服务。为了保持足够高的水位,三个传感器以5英寸的间隔垂直放置。当水位高于最高传感器S3时,输入流量应为零。当液位低于最低传感器(Si)时,流量应处于最大(公…

【技术分享】戴尔工作站安装Win10+Ubuntu20.04双系统避坑指南

文章目录引言1.安装前的几个注意事项(避坑指南)1.1.有多块硬盘,该如何分配给Win10和Ubuntu系统?1.2.Ubuntu分区应该怎么分?2.系统安装步骤2.1.下载系统镜像2.2.制作U盘启动盘2.3.进入Win10系统分配系统空间2.4.BIOS设置…

82.【LibraryManger】

图书管理系统(一)、搭建环境1.数据库语句2.导入需要的依赖(二)、配置文件3.创建MyBatis的xml文件 mybais-config.xml4.创建dao层接口以及dao层的 mapper.xml5.创建数据库的资源 database.properties6.创建spring的配置文件 spring-dao.xml【】7.创建service层的接口以及servcie…

查找

章节目录:一、线性查找1.1 概述1.2 代码示例二、二分查找2.1 概述2.2 代码示例三、插值查找3.1 概述3.2 代码示例四、斐波那契查找4.1 概述4.2 代码示例五、结束语一、线性查找 1.1 概述 线性查找又称顺序查找,是一种最简单的查找方法,它的…

若依框架:前端登录组件与图像验证码|用户登录逻辑

在上一篇《若依框架:前端项目结构与初始页面渲染流程》中,我们探讨了与“vue.config.js文件配置、.env模式和环境变量配置、vue-router全局导航守卫配置、vue-router路由配置简介”相关的内容,书接上回,我们继续探讨若依前端项目的…

【C语言进阶】字符函数与字符串函数

目录 1、函数介绍 1.1 strlen 1.2 strcpy 1.3 strcat 1.4 strcmp 1.5 strncpy 1.6 strncat 1.7 strncmp 1.8 strstr 1.9 strtok 1.10 strerror 【补】字符分类函数: 1.11 memcpy 1.12 memmove 1.13 memcmp 1.14 memset 1、函数介绍 1.1 strlen siz…

基于卷积神经网络的高光谱分类(1D、2D、3D-CNN)

算法原理 卷积神经网络(Convolutional Neural Networks,CNN)是深度学习中最常见的一种 算法,它具有强大的特征学习能力。CNN 通过结合局部感知区域、共享权重、空间或者 时间上的降采样来充分利用数据本身包含的局部性等特征&…

绘图仪 与 示波器 Plotter Oscilloscope

【后台管理,这哪里是广告了?图都是百度搜的,又没有销售信息,就事论事而已!】 Plotter : 对低频信号持续测量并绘制到一张很长的纸上,通常是卷纸。 常见的比如传统心电图机(图左&am…

『分分钟玩转VueRouter●下』我对VueRouter在项目中如何使用的理解

路由的设置会根据系统中用户角色的数量而有所不同,大致分为三种单角色同权限、单角色不同权限、多角色。这里的角色均是只一种身份,而不是用户量。接下来的讲解纯属个人见解,大型项目会将不同权限的用户直接分开开发不同的系统。如果是小型多…

c++基础——for循环

for循环是循环的一种 以下是 for 循环的结构: for (初始化; 判断条件; 更新) {循环体; } 执行顺序: for 语句的三个部分中,任何一个部分都可以省略。其中,若省略了判断条件,相当于判断条件永远为真。 for (int i …

fpga实操训练(从模块到系统开发)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们学习了fpga的一些基本操作,熟悉了这些操作,基本上说fpga已经入门了。但是距离我们用fpga开发产品,这中…

Faster RCNN网络源码解读(Ⅷ) --- RPN网络代码解析(下)RegionProposalNetwork类解析

目录 一、代码作用(rpn_function.py) 二、代码解析 2.1 RegionProposalNetwork类 2.1.1 正向传播过程forward 接着上篇博客的2.1.2节 2.1.2 assign_targets_to_anchors 2.1.3 det_utils.Matcher传入参数 2.1.4 compute_loss 2.1.5 smooth_l1_lo…

你真的会正确使用wait和notify么?

目录 wait和notify原理 API wait 与 sleep的区别 wait 和 notify的正确使用 step1 step2 step3 step4 step5 总结waitnotify wait和notify原理 当我们线程获取某个对象的monitor锁的时候就会成为owner线程,当owner线程条件不满足的时候,就会调用wait方法,该线程就会进…

惠州市政企信息化(互联网)市场调研报告

1.引言 1.1.编写目的 据广东省惠州市惠东县的政企信息化市场调研的客观性数据,分析相关数据,确定市场规模、市场潜力、市场需求,以及需求价值,为后续的市场决策、服务组合决策提供依据,也作为未来根据市场变化而调整…

Nacos 注册中心

Nacos 注册中心 目录概述需求:设计思路实现思路分析1.增加 Maven 依赖2.Client端配置注册中心3.Server端配置注册中心4.Nacos 注册中心参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c…