java基本类型与引用数据类型_java基本数据类型与引用数据类型总结

昨天京东笔试的一道选择题,被坑了。最近一直在做笔试题,发现自己学了两年多的java,三大框架什么都会,却连基本的拆箱装箱都忘了。昨天考的引用数据类型,基本数据类型都不知道。看来得好好把基础复习几遍了。

总结:

两者之间的关系

0818b9ca8b590ca3270a3433284dd417.png

特点:

一、从概念方面来说

基本数据类型:变量名指向具体的数值

引用数据类型:变量名指向存数据对象的内存地址,即变量名指向hash值

二、从内存构建方面来说

基本数据类型:变量在声明之后java就会立刻分配给他内存空间

引用数据类型:它以特殊的方式(类似C指针)指向对象实体(具体的值),这类变量声明时不会分配内存,只是存储了一个内存地址。

三、从使用方面来说

基本数据类型:使用时需要赋具体值,判断时使用“==”号

引用数据类型:使用时可以赋null,判断时使用equals方法

如果面试官问Integer与int的区别:估计大多数人只会说道两点,Ingeter是int的包装类,int的初值为0,Ingeter的初值为null(昨天的坑点一)。但是如果面试官再问一下Integer i = 1;int ii = 1; i==ii为true还是为false?估计就有一部分人答不出来了,如果再问一下其他的,估计更多的人会头脑一片混乱。所以我对它们进行了总结,希望对大家有帮助。

首先看代码:

0818b9ca8b590ca3270a3433284dd417.png

1 packagecom.test;2 /**

3 *4 *@author刘玲5 *6 */

7 public classTestInteger {8

9 /**

10 *@paramargs11 */

12 public static voidmain(String[] args) {13 int i = 128;14 Integer i2 = 128;15 Integer i3 = new Integer(128);16 //Integer会自动拆箱为int,所以为true

17 System.out.println(i ==i2);18 System.out.println(i ==i3);19 System.out.println("**************");20 Integer i5 = 127;//java在编译的时候,被翻译成-> Integer i5 = Integer.valueOf(127);

21 Integer i6 = 127;22 System.out.println(i5 == i6);//true

23 /*Integer i5 = 128;24 Integer i6 = 128;25 System.out.println(i5 == i6);//false26 */ Integer ii5 = new Integer(127);27 System.out.println(i5 == ii5); //false

28 Integer i7 = new Integer(128);29 Integer i8 = new Integer(123);30 System.out.println(i7 == i8); //false

31 }32

33 }

0818b9ca8b590ca3270a3433284dd417.png

首先,17行和18行输出结果都为true,因为Integer和int比都会自动拆箱(jdk1.5以上)。

22行的结果为true,而25行则为false,很多人都不动为什么。其实java在编译Integer i5 = 127的时候,被翻译成-> Integer i5 = Integer.valueOf(127);所以关键就是看valueOf()函数了。只要看看valueOf()函数的源码就会明白了。JDK源码的valueOf函数式这样的:

1 public static Integer valueOf(inti) {2 assert IntegerCache.high >= 127;3 if (i >= IntegerCache.low && i <=IntegerCache.high)4 return IntegerCache.cache[i + (-IntegerCache.low)];5 return newInteger(i);6 }

看一下源码大家都会明白,对于-128到127之间的数,会进行缓存,Integer i5 = 127时,会将127进行缓存,下次再写Integer i6 = 127时,就会直接从缓存中取,就不会new了。所以22行的结果为true,而25行为false。

对于27行和30行,因为对象不一样,所以为false。

我对于以上的情况总结如下:

①无论如何,Integer与new Integer不会相等。不会经历拆箱过程,i3的引用指向堆,而i4指向专门存放他的内存(常量池),他们的内存地址不一样,所以为false   ②两个都是非new出来的Integer,如果数在-128到127之间,则是true,否则为false   java在编译Integer i2 = 128的时候,被翻译成-> Integer i2 = Integer.valueOf(128);而valueOf()函数会对-128到127之间的数进行缓存   ③两个都是new出来的,都为false   ④int和integer(无论new否)比,都为true,因为会把Integer自动拆箱为int再去比(昨天的坑点二)

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

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

相关文章

男朋友的内裤旧了不要扔,关键时刻有大用......

1 女生没有运动内衣不用愁翻翻衣柜总有办法▼2 孩子&#xff0c;你这家庭咋这么散装呢&#xff1f;▼3 这个原地打滑的本领也是一门技术▼4 三轮车夫&#xff1a;我顶不住了......▼5 有空不仅可以一起洗澡还可以一起拉屎▼6 哟&#xff01;哥们儿&#xff0c;我来陪你啦…

基于事件驱动架构构建微服务第9部分:处理更新

原文链接&#xff1a;https://logcorner.com/building-microservices-through-event-driven-architecture-part10-handling-updates-and-deletes/在本文中&#xff0c;我将讨论如何处理事件溯源系统上的更新。在前面的步骤中&#xff0c;我将系统的所有业务变化存储为事件&…

将字符串中的大写字母变成小写字母

/*字符串中大写字母变成小写&#xff0c;其余字符不变*/#include <stdio.h> #include <string.h>char* mystrlwr(char *s) {char *scopy s;while (*s) {if (*s > A && *s < Z) {*s *s a - A;}s;}return scopy; }char *mysed_strlwr(char *s) {cha…

理解离散傅立叶变换(一. 傅立叶变换的由来)

转自&#xff1a;http://blog.csdn.net/dznlong/article/details/2261150理解离散傅立叶变换&#xff08;一&#xff09;------傅立叶变换的由来关于傅立叶变换&#xff0c;无论是书本还是在网上可以很容易找到关于傅立叶变换的描述&#xff0c;但是大都是些故弄玄虚的文章&…

浅谈入行

2019独角兽企业重金招聘Python工程师标准>>> 2006年开始参加工作&#xff0c;从编码&#xff0c;到带人&#xff0c;再到设计&#xff0c;自己不知不觉也走过了许多个年头。在公司从外包&#xff0c;到国内前后也参加了十多个不同的项目&#xff0c;每年都会有一些新…

关于java的项目_关于java项目与javaweb项目

有时候在eclipse中导入web项目时&#xff0c;出现转不了项目类型的问题&#xff0c;导入后就是一个java项目。解决步骤&#xff1a;1、进入项目目录&#xff0c;可看到.project文件&#xff0c;打开并找到找到...代码段&#xff1b;在该代码段中加入如下标签内容并保存&#xf…

数学界再出变态神人!竟用一个比基尼方程,暴力吊打美国数学家!看完我惊了......

全世界只有3.14 % 的人关注了爆炸吧知识没时间了快上车&#xff01;最近&#xff0c;有粉丝给超模君发了一些图片。早跟你们要说&#xff0c;要好好学数学。现在好了&#xff0c;连沙发问题都不懂&#xff01;没办法&#xff0c;作为数学界屈指可数的老司机&#xff0c;是时候挺…

Envoy实现.NET架构的网关(四)集成IdentityServer4实现OAuth2认证

.NET网关与Gateway实战-Envoy与kong课程什么是OAuth2认证简单说&#xff0c;OAuth 就是一种授权机制。数据的所有者告诉系统&#xff0c;同意授权第三方应用进入系统&#xff0c;获取这些数据。系统从而产生一个短期的进入令牌&#xff08;token&#xff09;&#xff0c;用来代…

如何通过CCIE实验考试

CCIE全称Cisco Certified Internetwork Expert.既然敢称expert那应该水平不低。&#xff08;当然那个MCSX的也敢说是expert&#xff0c;可惜现在有越来越多的初学者一两个月就搞定了&#xff0c;已经都泛了&#xff09;.Cisco的考试一向比较严谨&#xff08;当然现在CCNA系列&a…

宏在使用过程余函数的区别1

#include<stdio.h>#define MAX(X,Y) ((X)>(Y)?(X):(Y))int max(int x, int y){ return x > y ? x : y;}int main(){ int a 10; int b 20;int ret1 MAX(a, b);//宏会直接把定义的替换过来//((a)>(b)?(a):(b))会进行一系列的运算。此刻算完后a11.b22,ret21i…

java中transferto_被朋友问到什么是零拷贝,我一脸懵逼…

前言我们的Web应用多多少少都会处理一些静态内容&#xff0c;需要先从磁盘中读取到数据&#xff0c;在不经过修改后将此数据写入到套接字&#xff0c;伪代码如下&#xff1a;read(file, tmp_buf, len);write(socket, tmp_buf, len);虽然看似简单&#xff0c;但是它的效率却不高…

20个天才般的走心设计,真是太牛了!

全世界只有3.14 % 的人关注了爆炸吧知识科技发展一日千里&#xff0c;每天都有很多实用的小物被发明出来。下面就是20个超聪明的日常小发明&#xff0c;看过后你一定也想拥有&#xff01;“页面”椅子&#xff0c;可以帮助用户调整座椅高度&#xff0c;灵感来自于书籍装上这个以…

Android拨号盘,支持T9搜索和号码搜索

之前做通讯录软件&#xff0c;其中在做拨号盘的时候一直为怎么实现T9输入烦恼&#xff0c;上网找了很多帖子&#xff0c;都没有满意的答案。不过最后终于是实现了&#xff0c;看社区内好像也有不少朋友需要&#xff0c;在此分享一下。这个是在我项目中提取出来的拨号盘案例&…

浅谈.Net异步编程的前世今生----异步函数篇(完结)

前言上一篇我们着重讲解了TPL任务并行库&#xff0c;可以看出TPL已经很符合现代API的特性&#xff1a;简洁易用。但它的不足之处在于&#xff0c;使用者难以理解程序的实际执行顺序。为了解决这些问题&#xff0c;在C# 5.0中&#xff0c;引入了新的语言特性&#xff0c;被称为异…

NSInteger,NSUInteger,NSNumber

2019独角兽企业重金招聘Python工程师标准>>> Objective-C入门教程10:数字类型&#xff08;NSInteger,NSUInteger,NSNumber&#xff09; 柳志超博客 Program Objective-C Objective-C入门教程10:数字类型&#xff08;NSInteger,NSUInteger,NSNumber&#xff09; p…

作业优先调度java代码_如何在触发它时在java代码中为hadoop作业设置优先级?

这是我的工作人员的外表。如何在触发这项工作时设定低优先级&#xff1f;public int run(String[] args) throws Exception {this.initJob();Path outputPath new Path(args[2]);FileInputFormat.setInputPaths(job, args[0]);FileOutputFormat.setOutputPath(job, outputPath…

听说麦当劳,买一个雪糕就送一个男友!

1 麦当劳买雪糕免费送男友&#xff01;▼2 当90后成了家长......▼3 不要跟有鼻子的人握手可能刚刚扣过鼻屎▼4 鸟&#xff1a;别瞎玩&#xff01;快开车&#xff01;▼5 凭实力当上群主&#xff01;▼6 要是有喜欢的女生千万不要问她闺蜜的意见▼7 终于&#xff0c;我们…

07公务员考试公共基础知识模拟试卷1及答案--A

本试题分两部分&#xff0c;第一部分为客观试题&#xff0c;第二部分为主观试题&#xff0c;客观试题60分&#xff0c;主观试题40分&#xff0c;满分100分。考试时间180分钟。第一部分客观试题 一 单项选择题 1&#xff0e;2006年12月29&#xff0c;十届全国人大常委会二十五次…

windows server 2008更新补丁失败排错

首先描述故障故障&#xff1a;1&#xff0c;windows服务器上丢失了共享磁盘。2&#xff0c;打开服务器管理器报错3&#xff0c;更新补丁报错&#xff0c;错误代码&#xff1a;800B01004&#xff0c;手动安装.net 3.5安装包同样报错话说这次出差帮客户解决问题。遇到了这样一个错…

WPF实现统计图

WPF开发者QQ群&#xff1a; 340500857 | 微信群 -> 进入公众号主页 加入组织有小伙伴提出需要实现统计图。 由于在WPF中没有现成的统计图控件&#xff0c;所以我们自己实现一个。PS&#xff1a;有更好的方式欢迎推荐。01—代码如下一、创建 Basi…