我的代码和老师的差不多,如下:
out.write('A');
out.write('c');
int a = 10;
out.write(a>>>24);
out.write(a>>>16);
out.write(a>>>8);
out.write(a);
byte []gbk = "中国".getBytes("gbk");
out.write(gbk);
out.close();
可是为什么打印输出后显示的是:
41 63
这是怎么回事呀?
out.write('A');
out.write('c');
int a = 10;
out.write(a>>>24);
out.write(a>>>16);
out.write(a>>>8);
out.write(a);
byte []gbk = "中国".getBytes("gbk");
out.write(gbk);
out.close();
可是为什么打印输出后显示的是:
41 63
这是怎么回事呀?
2016-07-22
排名第一同学的问题:
out.write(buf, 0, b);
0,b的意思是将buf数组中的0-b的数据全都依次写入,不会覆盖之前写的。
是不是从头开始写,加不加true,是在实例化FileOutputStream进行的选择。
老师是创建了一个新文件,所以即使不加true也没关系。
(解释的不好,但是大致是这个意思(逃
out.write(buf, 0, b);
0,b的意思是将buf数组中的0-b的数据全都依次写入,不会覆盖之前写的。
是不是从头开始写,加不加true,是在实例化FileOutputStream进行的选择。
老师是创建了一个新文件,所以即使不加true也没关系。
(解释的不好,但是大致是这个意思(逃
2016-07-21
已采纳回答 / KeT
length()方法返回的是由此抽象路径名表示的文件的长度,而上面的dir.listFiles(),它返回的是一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件,所以if里面的判断,一个是判断文件,一个是判断文件长度,所以才要如此。
2016-07-21
已采纳回答 / 摩诃迦叶
bytes = in.read(buf,0,buf.length),这里的0指的是buf数组的位置0,in.read(buf,0,buf.length)这行代码的意思是从文件中读取字节,将其放到buf数组中,从buf[0]开始放,到buf[buf.length]结束(如果字节足够多的话),或者有m个就放到buf[m]结束
2016-07-21
已采纳回答 / 小丑鱼yang
f(buf[i]<=0xf)这句有问题的!这里buf[i]是byte类型,虽然比较的时候会自动变成int,但是如果它的最高位是1的话,它始终都是负数!只需要在判断的时候再加上判断为正即可if(buff[i] <= 0xf && buff[i] >= 0)
2016-07-20
反编译查看.class文件的内容,可以查看writeInt()方法,这个方法就被封装在了jdk的jar包中
2016-07-20
已采纳回答 / Coder编程
说明你没有导入源码文件,在你的JDK安装目录下有个src.zip文件。将它导入进去即可,如果没有的话。你可以到http://download.csdn.net/detail/michael_hm/9587153 这里下载源码,这是我1.8的源码。放到JDK目录下,导进去就可以,怎么导进去,网上有相关的教材。我就不截图了
2016-07-19