float与double类型参数区别_8大基本数据类型及包装类,不知道这些点别说自己是大佬...

一般地,当需要使用数字的时候,我们通常使用内置数据类型,如:byte、int、long、double 等。然而,在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情形。为了解决这个问题,Java 语言为每一个内置数据类型提供了对应的包装类。所以Java语言预定义了8种包装类型:

byte -> Byte

short -> Short

int -> Integer

long -> Long

float -> Float

double -> Double

char -> Character

boolean -> Boolean

例如:

Integer.toBinaryString()可得到一个整数的二进制代码

Integer.toHexString()可得到一个整数的十六进制代码

Integer.parseInt()可将一个String转换成int

Integer.toString()可将一个int转换成String

字符串和数值类型的转换

字符串 -> 数值: XXX.parseXXX(), 如Integer.parseInt()
数值 -> 字符串: toString(), String.valueOf()

java中的自动装箱与拆箱

/**

* @author YY哥哥

* java中的自动装箱与拆箱

* 简单一点说,装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。

*/

public class TestDemo {

public static void main(String[] args) {

/**

Integer x= 128; // 装箱,相当于 Integer.valueOf(128);

int y = x; //相当于 x.intValue() 拆箱

System.out.println(y);

*/

/**

对于–128到127(默认是127)之间的值,被装箱后,会被放在内存里进行重用

但是如果超出了这个值,系统会重新new 一个对象

*/

Integer x = 200;

Integer y = 200;

/**

注意 == 与 equals的区别

== 它比较的是对象的地址

equals 比较的是对象的内容

*/

if(x==y) {

System.out.println("true");

} else {

System.out.println("false");

}

}

}

Java 会对 -128 ~ 127 的整数进行缓存,所以当定义两个变量初始化值位于 -128 ~ 127 之间时,两个变量使用了同一地址:

Integer a=123;

Integer b=123;

System.out.println(a==b); // 输出 true

System.out.println(a.equals(b)); // 输出 true

当两个 Integer 变量的数值超出 -128 ~ 127 范围时, 变量使用了不同地址:

a=1230;

b=1230;

System.out.println(a==b); // 输出 false

System.out.println(a.equals(b)); // 输出 true

Java 中 int 和 Integer 的区别

1. int 是基本数据类型,int 变量存储的是数值。Integer 是引用类型,实际是一个对象,Integer 存储的是引用对象的地址。

Integer x = new Integer(100);

Integer y = new Integer(100);

System.out.print(x == y); //false

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

2. int 和 Integer 所占内存比较:

Integer 对象会占用更多的内存。Integer 是一个对象,需要存储对象的元数据。但是 int 是一个原始类型的数据,所以占用的空间更少。

3. 非 new 生成的 Integer 变量与 new Integer() 生成的变量比较,结果为 false。

/**

* 比较非new生成的Integer变量与new生成的Integer变量

*/

public class TestDemo {

public static void main(String[] args) {

Integer i= new Integer(200);

Integer j = 200;

System.out.print(i == j);

//输出:false

}

}

解释:非 new 生成的 Integer 变量指向的是 java 常量池中的对象,而 new Integer() 生成的变量指向堆中新建的对象,两者在内存中的地址不同。所以输出为 false。

4. 两个非 new 生成的 Integer 对象进行比较,如果两个变量的值在区间 [-128,127] 之间,比较结果为 true;否则,结果为 false。

/**

* 比较两个非new生成的Integer变量

*/

public class TestDemo {

public static void main(String[] args) {

Integer x1 = 127;

Integer y1 = 127;

System.out.println(x1 == y1);//输出:true

Integer x2 = 128;

Integer y2 = 128;

System.out.println(x2 == y2);//输出:false

}

}

解释:java 在编译 Integer x1 = 127 时,会翻译成 Integer x1 = Integer.valueOf(127)。

5. Integer 变量(无论是否是 new 生成的)与 int 变量比较,只要两个变量的值是相等的,结果都为 true。

/**

* 比较Integer变量与int变量

*/

public class TestDemo {

public static void main(String[] args) {

Integer x1 = 200;

Integer x2 = new Integer(200);

int y = 200;

System.out.println(x1 == y);//输出:true

System.out.println(x2 == y);//输出:true

}

}

解释:包装类 Integer 变量在与基本数据类型 int 变量比较时,Integer 会自动拆包装为 int,然后进行比较,实际上就是两个 int 变量进行比较,值相等,所以为 true。

54621a78ee014d5768653f6b6a240c73.gif

谢谢大家关注

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

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

相关文章

宣布EAXY:在Java中简化XML

Java中的XML库是一个雷区。 操作和读取XML所需的代码量令人震惊,使用不同的库遇到类路径问题的风险很大,并且命名空间的处理带来了很多混乱和错误。 最糟糕的是,情况似乎并没有改善。 一位同事让我意识到JOOX库。 这是解决这些问题的一个很好…

9-客户端集成IdentityServer

1-创建客户端的webapi项目 E:\coding\netcore\IdentityServerSample>dotnet new webapi --name IdentityCredentialApi 2-在需要启用授权的方法上增加Authorize标签 3-使用nuget工具安装 IdentityServer4.AccessTokenValidation 4-启用客户端授权, 需要配置连接…

js parseInt()与Number()区别

说到转换成数字类型,我首先想到的是parseInt()方法,后来接触多了才发现还有一个Number()方法,同样是转换成数字类型,这两种方法有什么不同的呢? 1.parseInt()&#xff1a…

java大小端字节流解析_玩转socket之字节流操作--拼包、拆包

玩转socket之字节流操作--拼包、拆包我们开发中用得最多的HTTP协议及超文本传输协议,是一种基于TCP/IP的文本传输协议。基本很少碰到字节流操作。但是我过我们要用socket,实现一套基本TCP/IP协议的自定义协议,那么,对于字节流的操…

js替换数组中字符串实例

这个是替换数组中的一个对象字符串; 直接上代码: 1 var aaa[ 2 {"name":"张珊","sex":"man"}, 3 {"name":"李斯","sex":"woman"}, 4 …

ie浏览器升级_微软呼吁用户停用IE浏览器 2020年将不再更新升级

驱动中国2019年2月10日消息 IE浏览器作为美国微软公司推出的一款网页浏览器成为许多人接触互联网初选,深受不少用户喜欢但这款流畅多年的浏览器正式遭弃用!今日微软网络安全专家在在官方Winhows IT Pro上发帖呼吁用户停止使用IE浏览器!微软网…

有条件忽略测试的JUnit规则

我一直认为使用Ignore停用测试是一个坏主意。 例外,这可能是一种将间歇性失败的测试放入隔离区以供以后处理的方法(如Martin Fowler 在此处所述 )。 随着越来越多的测试不断被忽略和遗忘,这带来了测试套件衰减的危险。 因此&#…

【学亮IT手记】PL/SQL游标编程

游标提供了一种从表中检索数据并进行操作的灵活手段,主要用在服务器上,处理由客户端发送给服务器端的sql语句,或者是批处理、存储过程、触发器中的数据处理请求。 显式游标 是由用户声明和操作的一种游标,通常用于将查询出的结果集…

CentOS安装zookeeper

第一步,先去Apache下载安装包 http://mirror.bit.edu.cn/apache/zookeeper/ 第二步,上传到服务器并解压 tar -zxvf zookeeper-3.4.6 第三步,新建一个文件夹 #先改个名 mv zookeeper-3.4.6 zookeeper cd zookeeper mkdir data 第四步&#xff…

php根据id查找条件怎么写_thinkphp where()条件查询

今天来给大家讲下查询最常用但也是最复杂的where方法,where方法也属于模型类的连贯操作方法之一,主要用于查询和操作条件的设置。where方法的用法是ThinkPHP查询语言的精髓,也是ThinkPHP ORM的重要组成部分和亮点所在,可以完成包括…

3分钟简单了解 prototype 和 __proto__

关于prototype 1. 所有的函数都会有一个prototype属性,属性值是一个普通对象; 2. 当我们去new一个构造函数的实例时,构造函数的原型对象(prototype)会被赋值给它实例的[[Prototype]]属性上; 3. prototype可被称为“显式原型”。…

rdlc报表 矩形高固定_固定资产条码管理系统特点分析

固定资产条码管理系统的特点都有什么?固定资产是维持企业稳定健康发展的重要物质保障,若想最大化发挥固定资产的效能作用,满足生产经营管理的需求,提高应对企业内外部经营环境变化的能力,企业管理者就必须及时了解固定…

Spring 4中@ControllerAdvice的改进

在Spring 4的许多新功能中,我发现了ControllerAdvice的改进。 ControllerAdvice是Component的特殊化,用于定义适用于所有RequestMapping方法的 ExceptionHandler, InitBinder和ModelAttribute方法。 在Spring 4之前, ControllerAd…

bzoj 2007 [Noi2010]海拔——最小割转最短路

题目:https://www.lydsy.com/JudgeOnline/problem.php?id2007 一个点的高度一定不是0就是1。答案一定形如一个左上角的连通块全是0的点、一个右下角的连通块全是1的点。 注意从东到西还有从南到北的边也有用!因为不一定是一个阶梯形的,还可以…

php 四维数组_PHP 多维数组

PHP - 两维数组两维数组是数组的数组(三维数组是数组的数组的数组)。首先,让我们看看下面的表格:品牌库存销量Volvo3320BMW1715Saab52Land Rover1511我们能够在两维数组中存储上表中的数据,就像这样:$cars array(array("Vol…

Vue于React特性对比(二)

一,关于响应式数据更新方式的实现 1)只有在data里面定义的数据才会有响应式更新 vue依赖的defineProperty的数据劫持加上依赖数据,实现数据的响应式更新。可以称之为依赖式的响应。因为依赖所以注定了只会更新与data相关的数据。 2&#xff0…

《黑客攻防技术宝典Web实战篇@第2版》读书笔记1:了解Web应用程序

读书笔记第一部分对应原书的第一章,主要介绍了Web应用程序的发展,功能,安全状况。 Web应用程序的发展历程 早期的万维网仅由Web站点构成,只是包含静态文档的信息库,随后人们发明了Web浏览器用来检索和显示那些文档&am…

电脑入门完全自学手册_3DMAX零基础入门到精通的学习路线和教程

没有美术基础可以学建模吗?毋庸置疑,只要肯学都是可以的!那么我们今天来说说零基础学习建模要着重注意什么。最高效最快速的入门学习方式:看知识兔视频课程,跟着知识兔老师操作,听知识兔老师讲解&#xff0…

使用Java RMI时要记住的两件事

这是一篇简短的博客文章,介绍使用Java RMI时应注意的两个常见陷阱。 设置java.rmi.server.hostname 如果您感到陌生,Connection拒绝托管: RMI客户端上的错误消息,并且您确定连接应该正常工作(您仔细检查了所有标准配置…

Python-UiAutomator2实现Android自动化测试

本帖转自搜狗测试公众号 【一、前言】 基于Python-UiAutomator2实现Android自动化测试,小编在Android应用的自动化性能测试中进行了实践。本篇将简单介绍python中使用adb、aapt命令的方法以及Python-UiAutomator2使用,后续文章将对环境搭建以及自动化性能…