已采纳回答 / 绿色蝈蝈拜见
不好意思,是我没有解释清楚。这个问题提的好!首先我们贴出Java的源码:public synchronized int read() throws IOException { if (pos >= count) { fill(); if (pos >= count) return -1; } return getBufIfOpen()[pos++] & 0xff;注意返回值,read的返回值虽然是int,但是他是读取的byte&0xff得到的,而例2中,因为...
2016-12-01
在创建子类对象的时候,同时就需要创建其所有直接以及间接父类对象(没父亲自然就没儿子),所以,如果最早的父类实现了Serializable接口,那么将二级子类序列化写入文件的时候,实际上是对父类,一级子类,二级子类三个对象都进行了序列化并写入文件,所以,再将文件中内容反序列化到一个新创建的二级子类对象的时候(实际上就是将文件中的内容反序列化给这个新对象),自然就不需要调用那些父类的构造函数,因为文件里面已经都有了,干嘛还要再构造一次
2016-11-30
已采纳回答 / rjyb22
0xff即16进制的1515,转化为二进制为11111111,不管byte[i]要转化为什么进制,要变成多少位,只要和11111111相与,结果就是个八bit位的数,所以就去0,
只要知道0xff=11111111就好,它是8bit位。
2016-11-30
可以点击ctrl+鼠标左键看的,如果出现source not found的话,就点击页面出现的添加按钮。找到你的java安装路径,然后将jdk文件夹的src.zip这个压缩文件添加进去就可以了,我的路径是这个D:\java\jdk;如果没有的话,就去网上下载一个对应的文件,当然它和你的jdk版本要对应喔!
2016-11-30
已采纳回答 / 绿色蝈蝈拜见
凌晨来回答问题。首先我们要弄明白,对于一个buf[i], 我们在什么情况下需要在输出之前补0,什么时候不需要补0.答案很清楚,如果它的高四位都是0,那么我们需要补,否则不需要。那么问题来了,怎么判断呢?老师的代码是用buf[i] <= 0xf,可是代码结果不正确,会出现错误补0,也就是三个数字一起的情况。如果buf[i] == 0xff, 那么按程序是需要补0,因为作为一个byte,0xff实际上等于-1, 那么自然也小于0xf,因为0xf代表15.这就是出错的问题。if判定语句改为((buf&am...
2016-11-28