java 整型数与Integer的缓存深入理解
深入理解java 整型数, Integer的缓存
Integer类实质上也是一个普通的java类,即使值相同,也是不同的对象。
例如
Integer a = 148; Integer b = 148; System.out.println(a==b);
这时输出为false. 很容易理解。
但是如果把值换成48.
Integer a = 48; Integer b = 48; System.out.println(a==b);
这时就会发现输出变成了true。原因是jdk对128以下的整数作了缓存,当声明两个值为48的Integer对象时,其实是指向同一位置。
当然也可以强制声明一个新的Integer对象。
Integer a = 48; Integer b = new Integer(48); System.out.println(a==b);
这时输出就变成false了
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
相关推荐
-
Java中byte、byte数组与int、long的转换详解
一.Java 中 byte 和 int 之间的转换源码: //byte 与 int 的相互转换 public static byte intToByte(int x) { return (byte) x; } public static int byteToInt(byte b) { //Java 总是把 byte 当做有符处理:我们可以通过将其和 0xFF 进行二进制与得到它的无符值 return b & 0xFF; } 测试代码: //测试 int 转 byte int int0 = 234
-
Java基本类型与byte数组之间相互转换方法
Java基本类型与byte数组之间相互转换,刚刚写的 package cn.teaey.utils; import java.nio.charset.Charset; public class ByteUtil { public static byte[] getBytes(short data) { byte[] bytes = new byte[2]; bytes[0] = (byte) (data & 0xff); bytes[1] = (byte) ((data & 0xff00)
-
Java 字节数组类型(byte[])与int类型互转方法
代码如下: public class CommonUtils { //高位在前,低位在后 public static byte[] int2bytes(int num){ byte[] result = new byte[4]; result[0] = (byte)((num >>> 24) & 0xff);//说明一 result[1] = (byte)((num >>> 16)& 0xff ); result[2] = (byte)((num >
-
Java整型数与网络字节序byte[]数组转换关系详解
本文实例讲述了Java整型数与网络字节序byte[]数组转换关系.分享给大家供大家参考,具体如下: 工作项目需要在java和c/c++之间进行socket通信,socket通信是以字节流或者字节包进行的,socket发送方须将数据转换为字节流或者字节包,而接收方则将字节流和字节包再转换回相应的数据类型.如果发送方和接收方都是同种语言,则一般只涉及到字节序的调整.而对于java和c/c++的通信,则情况就要复杂一些,主要是因为java中没有unsigned类型,并且java和c在某些数据类型上的长
-
java整数与byte数组的转换实现代码
java整数与byte数组的转换实现代码 这里对java中整数与byte数组的转换进行了实现,平时的项目中很少用的到,但是特定需求的时候还是需要的,这里就记录下,亲测可用, 实现代码: public class NumberUtil { /** * int整数转换为4字节的byte数组 * * @param i * 整数 * @return byte数组 */ public static byte[] intToByte4(int i) { byte[] targets =
-
基于java中byte数组与int类型的转换(两种方法)
java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形int转换成byte数组,同时如何把一个长度为4的byte数组转换为int类型.下面有两种方式. public static byte[] int2byte(int res) { byte[] targets = new byte[4]; targets[0] = (byte) (res & 0xf
-
详解Java中ByteArray字节数组的输入输出流的用法
ByteArrayInputStream 介绍 ByteArrayInputStream 是字节数组输入流.它继承于InputStream. 它包含一个内部缓冲区,该缓冲区包含从流中读取的字节:通俗点说,它的内部缓冲区就是一个字节数组,而ByteArrayInputStream本质就是通过字节数组来实现的. 我们都知道,InputStream通过read()向外提供接口,供它们来读取字节数据:而ByteArrayInputStream 的内部额外的定义了一个计数器,它被用来跟踪 read() 方
-
读取Java文件到byte数组的三种方法(总结)
读取Java文件到byte数组的三种方法(总结) package zs; import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.Rando
-
java byte数组与int,long,short,byte的转换实现方法
实例如下: public class DataTypeChangeHelper { /** * 将一个单字节的byte转换成32位的int * * @param b * byte * @return convert result */ public static int unsignedByteToInt(byte b) { return (int) b & 0xFF; } /** * 将一个单字节的Byte转换成十六进制的数 * * @param b * byte * @return conv
-
Java中字符串与byte数组之间的相互转换
前言 Java与其他语言编写的程序进行tcp/ip socket通讯时,通讯内容一般都转换成byte数组型,java在字符与数组转换也是非常方便的.下面跟我一起来了解一下字符串与byte之间转换的原理 原理 我们都知道,在Java里byte类型是占用1个字节,即8位的,而16进制的字符占用4位,所以每个byte可以用两个字符来表示,反之亦然. 举个例子 byte = 123 用二进制表示:0111 1011 每4位用字符表示: 7 b 是的,原理就这么简单,接下来用代码实现: byte[] 转1
-
Java 图片与byte数组互相转换实例
实例如下: //图片到byte数组 public byte[] image2byte(String path){ byte[] data = null; FileImageInputStream input = null; try { input = new FileImageInputStream(new File(path)); ByteArrayOutputStream output = new ByteArrayOutputStream(); byte[] buf = new byte[
随机推荐
- 将图片文件嵌入到wxpython代码中的实现方法
- Debian中PostgreSQL数据库安装配置实例
- javascript分页代码(当前页码居中)
- JavaScript获取网页表单提交方式的方法
- javascript 四则运算精度修正函数代码
- asp.net DataSet进行排序
- Yii使用CLinkPager分页实例详解
- python中的闭包用法实例详解
- Python Queue模块详细介绍及实例
- 那些年,我还在学习C# 学习笔记
- jQuery插件echarts设置折线图中折线线条颜色和折线点颜色的方法
- 数据库查询排除重复记录的方法
- 获取数据库中两个时间字段的相差天数及ABS/DATEDIFF函数应用
- php下使用iconv需要注意的问题
- 详解webpack分离css单独打包
- jquery基础知识第一讲之认识jquery
- 在JavaScript中处理字符串之link()方法的使用
- 用纯AS写了个滚动条
- 备份、还原IIS网站配置信息
- Android 设置应用全屏的两种解决方法