datareader对象直接转化为int_Integer、new Integer() 和 int 比较的面试题

作者:chenxiangxiang来源:https://www.cnblogs.com/cxxjohnson/p/10504840.html

基本概念的区分:

1、Integer 是 int 的包装类,int 则是 java 的一种基本数据类型

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

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

4、Integer的默认值是null,int的默认值是0

Integer、new Integer() 和 int 的比较

1、两个 new Integer() 变量比较 ,永远是 false

因为new生成的是两个对象,其内存地址不同

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

2、Integer变量 和 new Integer() 变量比较 ,永远为 false。

因为 Integer变量 指向的是 java 常量池 中的对象,而 new Integer() 的变量指向 堆中 新建的对象,两者在内存中的地址不同。

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

3、两个Integer 变量比较,如果两个变量的值在区间-128到127 之间,则比较结果为true,如果两个变量的值不在此区间,则比较结果为 false 。

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

分析:

Integer i = 100 在编译时,会翻译成为 Integer i = Integer.valueOf(100),而 java 对 Integer类型的 valueOf 的定义如下:

0d01fe02dec1c922b58dd796c3b5783a.png

java对于-128到127之间的数,会进行缓存。

所以 Integer i = 127 时,会将127进行缓存,下次再写Integer j = 127时,就会直接从缓存中取,就不会new了。

4、 int 变量 与 Integer、 new Integer() 比较时,只要两个的值是相等,则为true

因为包装类Integer 和 基本数据类型int 比较时,java会自动拆包装为int ,然后进行比较,实际上就变为两个int变量的比较。

Integer i = new Integer(100); //自动拆箱为 int i=100; 此时,相当于两个int的比较int j = 100;System.out.print(i == j); //true

示例1:

7fa62f37cb2ed92f81a3a16860f1b158.png

答案是

i == i2 = truei == i3 = truei4 == i5 = truei6 == i7 = falsei5 == i8 = falsei9 == i10 = false

示例2:

37bf215956d8a9657b16305352708014.png

示例3:

Integer i01 = 59;int i02 = 59;Integer i03 =Integer.valueOf(59);Integer i04 = new Integer(59);

以下输出结果为false的是:

System.out.println(i01== i02);System.out.println(i01== i03);System.out.println(i03== i04);System.out.println(i02== i04);

解析:

i01 == i02 。i01.intValue()i02 两个值的比较5959 -->true;

i01 == i03 。由于 59在-128到127之间,所以,i01和i03的赋值操作返回的是同一个对象。都是从chche中返回的同一个对象,对象地址相同 true;

i03 == i04。i03是来自缓存值,i04是新new的对象 ,二者不是同一个对象,所以false。

i02 == i04。和第一个类似,true。

答案是 C 。

示例4:

与示例3的唯一不同,就是将值全部改成128。

Integer i01 = 128;int i02 = 128;Integer i03 = Integer.valueOf(128);Integer i04 = new Integer(128);

以下输出结果为false的是:

System.out.println(i01 == i02);System.out.println(i01 == i03);System.out.println(i03 == i04);System.out.println(i02 == i04);

答案:

truefalsefalsetrue

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

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

相关文章

个人推荐的SIP software Phone

开源免费的LinPhone,国内很多人基于他继续二次开发 http://www.linphone.org/ Zoiper 有免费的,有收费的,有SDK,支持SIP/IAX(没有NAT问题) 官方下载的免费版本里面就支持中文! 免费版本支持:for Window…

_Linux中功能强大的截图工具 - Flameshot

Flameshot 是一款功能强大但易于使用的屏幕截图软件,中文名称火焰截图。Flameshot 简单易用并有一个 CLI 版本,所以你也可以从命令行来进行截图。Flameshot 是一个Linux发行版中完全免费且开源的截图工具。通常Linux发行版中会默认自带一个截图工具&…

jquery动画 -- 1.加载指示器

该系列文章是我阅读《jQuery 1.4 Animation Techniques》后的总结,有兴趣的朋友可以去看原版书籍。 动画效果对于丰富网站的交互体验起到了不可或缺的作用,他可以让你的站点更酷,更吸引人。 什么时候使用动画: 1.当显示或隐藏页面…

centos7 安装redis_Redis6安装(上) - 单机单实例

首先下载新版的redis6并且上传到centos7:安装redis需要gcc的环境,和以往老版本不同,这里的gcc需要高一点的版本。 yum install gcc-c随后升级gcc版本 yum -y install centos-release-scl yum -y install devtoolset-9-gcc devtoolset-9-gcc-c…

手机输入法带拼音声调_word中拼音横向设置

前言在word编辑文字的时候,可以加注拼音,这对于陌生文字辨别读音非常有帮助,但是插入的拼音都是在文字上方的,那如果我们想要横向插入拼音的话,应该怎么操作呢?今天小编就给大家分享,在word中拼…

怎么在安卓布局里设置滚动字体_Get新技能|如何在手机上设置文字版拼音?

首先明确一点:安卓手机里的汉字带上拼音,是需要安装拼音字体,而不是拼音输入法。大部分安卓手机里的汉字带上拼音,可按如下步骤操作:注:视频后小总结1.对于大部分现在的手机来说,已经提供了换字…

HTTP、TCP、UDP、Socket (转)

先来一个讲TCP、UDP和HTTP关系的1、TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。在传输层中有TCP协议与UDP协议。在应用层有FTP、HTTP、TELNET、SMTP、DNS等协议。因此&#x…

windows 禁用ipv6服务_39.Dism++ Windows系统简洁优化

Dism的特点Dism无需任何Dism组件,即可兼容高低版本所有系统!而微软Dism则需要3个版本。Dism是Dism的交集,提供完全的图形化操作,几乎支持Dism的所有功能以及大量Dism原本所不支持的功能。管理更新、驱动、功能、Appx、可选功能、服…

windows功能_有 20 多种功能的 Windows 原生日历替代软件

Win 10 出来这么久了,不知道还有多少在用 XP 或者 Win 7 的朋友呢?今天小美要推荐的软件,是专门针对 Win 10 的,没有升级系统的小伙伴可能就无法使用了~这是一款用来替换 Windows 10 任务栏原生时间日历的软件,名字叫「…

小白学数据分析-----留存率是什么?

篇外话 前段时间比较忙碌,小白系列也因此停了一段时间,这期间做了不少分析,发现和总结了不少经验,自己觉得还是很有用,不过倒都是一些基础的东西。最近很多人都在问一些基础术语和计算方式,我懂得不多&…

nfc reader智能解码程序_更关注健康的高性价比智能手表 华米Amazfit Pop体验

现如今市面上有着种类繁多的智能手表产品,在软硬件各方面的体验上,华米的智能手表绝对是走在前列的,近期华米又发布了全新的智能手表:Amazfit Pop,双十一售价299元,这是一款专为爱运动,追求实用…

poj 3009 Curling 2.0 (dfs的应用)

http://poj.org/problem?id3009 (1)这是一个用球撞石头的游戏,撞到石头,石碎球停。在规定的10次抛球机会下,若求移动到终点就赢,否则算输了(出界直接算输)。 (2&#xf…

移动app测试的多样性_快速搞定APP移动端自动化测试

1. 何为数据驱动什么是参数化?什么又是数据驱动?经常有人会搞不明白他们的关系,浅谈一下个人的理解,先来看两个测试中最常见的场景:登录:不同的用户名,不同的密码,不同的组合都需要做…

ui自动化测试框架_浅谈前端(UI)自动化测试

作为一名测试开发从业者,自动化测试好像是绕不开的话题...。结合最近接触到的一些测开应聘同学聊到关于前端自动化测试及自己的理解,分享一下自己对UI自动化测试的认识,大概如下。测试分层的自动化测试思想自动化测试分层思想所倡导的是对系统…

【转发】响应式Web设计?怎样进行?

什么是响应式Web设计?怎样进行?眼下,几乎每个新客户都希望他们的网站可以有专门的移动设备版本。最完美的情况呐,就是为iPhone、iPad、黑莓、Kindle…各自打造一款——页面分辨率还必须兼容任何设备。谁知道未来5年内我们还需要为…

基于Asterisk的VoIP开发指南——(1)实现基本呼叫功能

说明: 本文档探讨基于Asterisk如何实现VoIP的一些基本功能,包括基本呼叫功能的方案选取、主叫号码透传、如何编写AsteriskAGI程序、Radius认证计费模块等。 本文档VoIP软终端使用X-Lite,其它终端均可以接入测试。 文章内容仅供参考,转载请注…

excel查重_发票查重工具,不止查重这么简单,你还可以体验这些新玩法

电子发票报销是目前所有行业的会计都要面对的一项重要工作,而目前电子发票报销的普遍方式都是打印报销,这样一来,会计就不得不面对企业员工将电子发票重复打印报销和篡改报销的风险,而其中,尤其以重复打印报销是会计不…

python导出dxf图_在PDMS中使用python直接生成管口方位图(开源分享第三集)

在PDMS中使用python直接生成管口方位图(开源分享第三集)距离上一次发推送已有5个月之久,上周立了冬,这二季我为五斗米折了腰,最近才缓过气来。令我没想到的是,大家竟然对这个主题这么有兴趣,有关注者几次在私信询问我什…

基于Asterisk的VoIP开发指南(2)——Asterisk AGI程序编写指南

5. Asterisk AGI程序编写指南 5.1概述 很多时候,我们需要在拨号方案中做某些业务逻辑的判断或者外部数据库的查询,根据具体地需要,有几种做法: 1.使用Asterisk的通道变量、Goto函数、Gotoif函数等实现某些简单跳转…

win7关闭休眠_【科普】笔记本电脑,待机/睡眠/休眠有啥区别?(ACPI SPM S0-S5)...

本文聊聊笔记本电脑话题下,经常有人问到的内容——关机 睡眠 休眠 这三个选项有什么区别?电脑可以不关机只合上盖子吗?花了俩小时,求个赞,希望有专栏能收这篇内容~先说答案:快速唤醒:开盖/操作鼠…