Java中基本数据和包装类的比较
public class AutoBoxTest {
public static void main(String[] args) {
Integer a1 = 127;
Integer a2 = 120 + 7;
System.out.println(a1 == a2);
Integer b1 = 128;
Integer b2 = 120 + 8;
System.out.println(b1 == b2);
Integer s1 = 2002;
short s2 = 2002;
System.out.println(s1 == s2);
}
}
上面代码运行结果:

- 结果1和2不一样的原因:
java中常量进行自动包装时,调用的是Integer.valueOf()方法,在Integer中有一个静态缓存类IntegerCache,该类默认会缓存-128到127之间的值,调用valueOf方法时,如果值在该缓存区间范围内,之间从缓存获取对象,否则直接new一个新对象返回。
备注:缓存最大值可以通过虚拟机参数-XX:AutoBoxCacheMax=<size>设置,最小值不能小于127
- 结果3为什么是true?
反编译代码,如下:

当包装对象和常量进行比较时,包装对象会先转成常量,再比较
Java中基本数据和包装类的比较的更多相关文章
- Java开发学习--Java 中基本类型和包装类之间的转换
Java 中基本类型和包装类之间的转换 基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦): 在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之 ...
- java中String、包装类、枚举类的引用传递
一般情况下,我们认为Java中了除了八种基本数据类型,其他都是对象,进行引用传递: 但是:String.包装类.枚举类作为参数传递后发现,没有达到引用传递的效果,很多人认为它是值传递! 首先,对象肯定 ...
- java中基本数据类型和C语言中基本数据类型转换
java中 1 short = 2 byte 1 char = 2 byte 1 int = 4 byte 1 long = 8 byte C语言中 typedef unsigned char ...
- Java基础(35):装箱与拆箱---Java 中基本类型和包装类之间的转换(Wrapper类)
基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦): 在 JDK1.5 引入自动装箱和拆箱的机制后,包装类和基本类型之间的转换就更加轻松便利了. 那什么是装箱 ...
- JAVA中基本类型和包装类之间的相互转换
转自:https://www.imooc.com/code/2250 仅做个人学习记录之用,侵删. 基本类型和包装类之间经常需要互相转换,以 Integer 为例(其他几个包装类的操作雷同哦): 在 ...
- js中有包装类,java中也有包装类
new Number() vs Number() What is the difference between new Number() and Number()? I get that new Nu ...
- Java 中的包装类
Java 中的包装类 相信各位小伙伴们对基本数据类型都非常熟悉,例如 int.float.double.boolean.char 等.基本数据类型是不具备对象的特性的,比如基本类型不能调用方法.功能简 ...
- JAVA基础——Java 中必须了解的常用类
Java中必须了解的常用类 一.包装类 相信各位小伙伴们对基本数据类型都非常熟悉,例如 int.float.double.boolean.char 等.基本数据类型是不具备对象的特性的,比如基本类型不 ...
- java 中的常用类
Java 中的包装类 相信各位小伙伴们对基本数据类型都非常熟悉,例如 int.float.double.boolean.char 等. 基本数据类型是不具备对象的特性的,比如基本类型不能调用方法.功能 ...
随机推荐
- 【转载】python中not,and,or的优先级问题及用法
作业: >>> print(5<4 or 3)3>>> print(2>1 or 6)True>>> print(5>1 and ...
- 使用Fiddle对夜神模拟器进行抓包的设置
注意: 设置完后, 不开启 Fiddle 的话,模拟器就不能上网了. 可以通过再把网络配置 改回去 就可以恢复网络正常访问了 一.配置Fiddle参数设置 1.Tools->Options 2 ...
- C++实现词法分析器
#include <iostream> #include <stdlib.h> #include <stdio.h> using namespace std; ]= ...
- 创建一个 mac 的后台进程(daemon)
Mac中创建守护进程(Daemon) 创建一个可以执行的脚本 hello.sh touch /Users/oslivan/test/hello.sh chmod 755 /Users/oslivan/ ...
- css fixed 失效问题解法
https://stackoverflow.com/questions/11258877/fixed-element-disappears-in-chrome 开启css硬件加速,transform: ...
- Vue中观察者模式的实现
Vue中实现观察者模式的方法可以有三种: 1.v-on方法 exp: <div id='test'> <button v-on:event='functionName'>but ...
- CentOS6系统编译部署LAMP(Linux, Apache, MySQL, PHP)环境
我们一般常规的在Linux服务器中配置WEB系统会用到哪种WEB引擎呢?Apache还是比较常用的引擎之一.所以,我们在服务器中配置LAMP(Linux, Apache, MySQL, PHP)是我们 ...
- java学习(一)
目录 java简介 java基础 基本语法 java标识符 java变量 变量类型 变量声明 java常量 Java 基本数据类型 内置数据类型 引用数据类型 Java类型转换 java注释 操作符 ...
- laravel-重定向携带自定义消息
在控制器写: return redirect(route('member_create'))->with('success', '操作成功'); //指定到路由名member_create // ...
- cannot open shared object file: No such file or directory解决方法