最赞回答 / tlojy
在父类没有实现 Serializable 接口时,虚拟机是不会序列化父对象的,也就是说序列化后的流中没有父类的信息;而一个 Java 对象的构造必须先有父对象,才有子对象,反序列化也不例外。所以反序列化时,为了构造父对象,只能调用父类的无参构造函数作为默认的父对象。
2016-07-27
已采纳回答 / Coder编程
能正常读写说明已经创建成功了,你可以尝试右击你的项目名 F5刷新(Refresh)。也可以进入你项目所在的磁盘位置查看一下是否存在。不知道你用的是什么编辑器。如果还不成功,可能是缓存问题。重新导入项目
2016-07-27
FileOutputStream.flush() 在用缓存时才会有用。
排名靠前同学问out.write(buf, 0, b)的,仔细听课,听不明白就Google。
排名靠前同学问out.write(buf, 0, b)的,仔细听课,听不明白就Google。
2016-07-26
持了两个数的十进制相同。
举例:当不用 b & 0xff时 byte:-1 二进制(补码):1111 1111 转为Int(补码):1111 1111 1111 1111 1111 1111 1111 1111。本来我们想要的是 -1 的十六进制字符串 ff,结果得到 ff ff ff ff。当byte是正数时不影响。所以要使用 b & 0xff,处理流程:首先 Jvm检测到byte可能转化为Int,就将byte的高位补0或1(按符号位补0或1,即正数补0,对我们要的结果不影响。负数补1,结果就多了个 ff ff ff)因为我们只要低8位,所以与0xff与运算,把高位都变为0。
举例:当不用 b & 0xff时 byte:-1 二进制(补码):1111 1111 转为Int(补码):1111 1111 1111 1111 1111 1111 1111 1111。本来我们想要的是 -1 的十六进制字符串 ff,结果得到 ff ff ff ff。当byte是正数时不影响。所以要使用 b & 0xff,处理流程:首先 Jvm检测到byte可能转化为Int,就将byte的高位补0或1(按符号位补0或1,即正数补0,对我们要的结果不影响。负数补1,结果就多了个 ff ff ff)因为我们只要低8位,所以与0xff与运算,把高位都变为0。
System.out.print(Integer.toHexString(b & 0xff) + " ");
如果把Integer.toHexString(b & 0xff)换为Integer.toHexString(b)则处理流程:
1、先将b转为int(Integer.toHexString()的参数是Int型)
2、从低位每4位(bit)转为十六进制,如果得到的十六进制高位是0则舍弃.(如转化为16进制是00 00 00 0A则得到的字符串是 A )
之所以用 b & 0xff 是因为在第 1 步,当一个字节(byte,范围-128到127)类型转换为Int型时,保
如果把Integer.toHexString(b & 0xff)换为Integer.toHexString(b)则处理流程:
1、先将b转为int(Integer.toHexString()的参数是Int型)
2、从低位每4位(bit)转为十六进制,如果得到的十六进制高位是0则舍弃.(如转化为16进制是00 00 00 0A则得到的字符串是 A )
之所以用 b & 0xff 是因为在第 1 步,当一个字节(byte,范围-128到127)类型转换为Int型时,保