首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

初学JAVA——Byte之三大千古疑惑,该怎么解决

2012-03-27 
初学JAVA——Byte之三大千古疑惑好吧我承认标题是为了点击率不扯淡真心求教Java code感谢赐教您的宝贵财富①B

初学JAVA——Byte之三大千古疑惑
好吧我承认标题是为了点击率
不扯淡真心求教

Java code
感谢赐教您的宝贵财富

①Byte.class 中类头:public final class Byte extends Number implements Comparable<Byte>
还发现一个类名为:Byte$ByteCache.class
棋类头为:public final class Byte extends Number implements Comparable<Byte> {
那么问题来了: 此类何来?
②Byte.class中:
Java code
public static Byte valueOf(byte b) {    final int offset = 128;    return ByteCache.cache[(int)b + offset];    }Byte$ByteCache.class中:[code=Java]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));    }

求解此二方法何意?

[解决办法]
1.byte的大小为8bits而int的大小为32bits
2.java的二进制采用的是补码形式
3.Java中的一个byte,其范围是-128~127的
[解决办法]
Byte$ByteCache.class 其实就是就是Byte的内部类。

用意其实很简单,反正Byte最多也就是255个,干脆就直接把它们全部都创建好了,要用的时候想用哪个就直接返回给你哪个。

那么就实现了共享,以节省内存。不需要每次都去new个新的对象了。

热点排行