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,一经查实,立即删除!

相关文章

【10】jQuery学习——入门jQuery选择器之表单选择器

这里我们要知道表单,但是在实际写jq的时候,用到貌似不是很多,所以这里我就直接转梦三秋网站上的课件啦。 当然等以后要用的时候,我们在拿出来研究下,毕竟表单这块,看起来真的很多,眼晕啊~~~ 选…

深度学习 用户画像_一文告诉你什么是用户画像

什么是用户画像用户画像,英文又叫 User Profile,我们经常看到在 PPT 中展现出高大上的用户画像,展现的方式是采用标签云的方式绘制一个人的形状,或者在一个人物形象旁边列出若干人口统计学属性,以此来表达“用户画像”…

个人推荐的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…

SIP消息路由

本文通过一个完整的SIP呼叫实例解释SIP头部的一些常见字段,在对这些字段的解释的同时也阐述了SIP消息的路由过程。下图是呼叫的消息流示意图和所有的消息头部(因为SDP和消息路由无关,故在此省略): atlanta.com . . . biloxi.com . prox…

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

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

WCF配置报错 在 ServiceModel 客户端配置部分中,找不到名称 和协定

<?xml version"1.0" encoding"utf-8" ?><configuration><system.serviceModel><client><endpoint address"net.tcp://192.168.6.101:8000/DataAccessService" binding"netTcpBinding" bindingConfigurat…

SIP基础协议总结

SIP协议是一个用于建立&#xff0c;更改和终止多媒体会话的应用层控制协议&#xff0c;大量借鉴了成熟的HTTP协议&#xff08;文本格式编码&#xff0c;Request消息中的method等&#xff09;&#xff0c;采用基于文本的UTF-8编码方式&#xff0c;可以承载与UDP或者TCP协议之上(…

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

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

HTTP、TCP、UDP、Socket (转)

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

Asterisk学习进阶

Asterisk学习进阶 介绍篇 抛开所有概念&#xff0c;首先从单词学起。估计很多人和我一样没有明白这个词是什么意思&#xff0c;或许猜测他还可能是一个组合词。其实它就是“*”&#xff0c;作为搞程序的我们看到这个东东想到的也许会是乘号&#xff0c;当然有另外一大帮人想到的…

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

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

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

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

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

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

Asterisk 学习进阶 2

Asterisk 学习进阶-2 这儿只是把添加的用户配置列出来。 [830] typefriend ; Friends place calls and receive calls context830 ; Context for incoming calls from this user ;secretblahpoly hostdynamic ; This peer regi…

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

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

poj 3009 Curling 2.0 (dfs的应用)

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

Asterisk学习进阶-3

配置就先说那么一些&#xff0c;其他也都是类似的配置&#xff0c;只是熟练程度问题了&#xff0c;原理相通&#xff0c;接下来就不在赘述功能配置&#xff0c;我们得花些精力来分析功能模块以及他们之间的相互配合问题&#xff0c;因为自己这些东西看的时间也不久&#xff0c;…