java byte和byte_Java Byte构造函数和Byte.valueOf()方法之间的区别

Byte byte1=new Byte("10");

Byte byte2=Byte.valueOf("10");

System.out.println(byte1);

System.out.println(byte2);

byte1和byte2都打印相同的值10.然后构造函数参数化的Byte和valueOf()方法之间有什么区别.

JDK 7中的字节类

source code显示了这一点:

(我选择了字节版本而不是String版本,因为代码较少,但想法完全相同)

public static Byte valueOf(byte b)

{

final int offset = 128;

return ByteCache.cache[(int)b + offset];

}

和:

public Byte(byte value)

{

this.value = value;

}

ByteCache的位置是:

private static class ByteCache

{

private ByteCache(){}

static final Byte cache[] = new Byte[-(-128) + 127 + 1];

static

{

for(int i = 0; i < cache.length; i++)

cache[i] = new Byte((byte)(i - 128));

}

}

基本上构造函数版本用于创建一个全新的版本,而valueOf版本返回一个预先存在的版本.这节省了内存,因为Byte.valueOf(10)只有一个值,无论您调用它的次数如何,但如果您执行新的Byte(10),则会为每次调用new创建一个新值.由于字节是不可变的(它们没有可变状态),因此没有理由为任何给定值创建多个字节.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值