作业帮 > 综合 > 作业

public class Player {

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/07/11 10:11:09
public class Player {
\x05private int x;
\x05private int y;
\x05public Player() {
\x05}
\x05public static byte[] o2ba(Player p) throws IOException {
\x05\x05byte data[] = null;
\x05\x05ByteArrayOutputStream baos = new ByteArrayOutputStream();
\x05\x05DataOutputStream dos = new DataOutputStream(baos);
\x05\x05dos.writeInt(p.getX());
\x05\x05dos.writeInt(p.getY());
\x05\x05dos.close();
\x05\x05data = baos.toByteArray();
\x05\x05baos.close();
\x05\x05return data;
\x05}
\x05public static Player ba2o(byte[] data) throws IOException {
\x05\x05Player p = new Player();
\x05\x05DataInputStream dis = new DataInputStream(new ByteArrayInputStream(data));
\x05\x05p.setX(dis.readInt());
\x05\x05p.setY(dis.readInt());
\x05\x05dis.close();
\x05\x05return p;
\x05}
\x05public int getX() {
\x05\x05return x;
\x05}
\x05public void setX(int x) {
\x05\x05this.x = x;
\x05}
\x05public int getY() {
\x05\x05return y;
\x05}
\x05public void setY(int y) {
\x05\x05this.y = y;
\x05}
}
public class Player {
public class Player
这整段代码定义了一个叫Player的类,这个类为公有类.
private int x;
prinate int y;
定义了类的两个私有成员,x和y,均为整数型;
public Player()
默认构造函数.如果在别的代码内要生成一个Player类的变量,一般的调用方式为:
Player varName = new Player();
public static byte[] o2ba(Player p) throws IOException
函数(object to byte array):将一个Player类的变量成员信息写入数组并返回.比如说有一个Player变量p,x=1,y=2,那么调用Player.o2ba(p),将会返回一个[1, 2]的数组.这个函数是静态函数,所以直接通过类名调用,而不能通过变量调用;也就是说Player.o2ba(p)是正确的,而p.o2ba(p)是错误的.此外,这个函数可能会抛出输入/输出异常(IOException).
里面每一行代码的意思不展开了,基本上就是定义一个数组data,然后通过getX(),getY()这两个函数把变量p中的x、y值写入数据输出流DataOutputStream中,并赋值给data.
public static Player ba2o(byte[] data) throws IOException
函数(byte array to object):从数组中读取两个整数值,并由此生成一个Player类的变量.比如说有一个数组[1, 2],数组变量名为data,那么调用Player p = Player.ba2o(data),就会生成一个Player变量p,其中x=1,y=2.这个函数是静态函数,所以直接通过类名调用,而不能通过变量调用;也就是说Player.ba2o(data)是正确的,而p.o2ba(p)是错误的.此外,这个函数可能会抛出输入/输出异常(IOException).
里面每一行代码的意思不展开了,基本上就是通过函数先定义一个Player类变量p,然后通过数据输入流DataInputStream中读取整数的函数readInt()从data数组中读取两个整数,并分别通过SetX(...)和SetY(...)赋值给p的x、y两个成员.
public int getX()
public void setX(int x)
public int getY()
public void setY(int y)
这四个函数是典型的get、set函数组.由于x和y两个成员为私有类,不能直接通过p.x或p.y进行访问,所以对于x和y的赋值和读取操作要通过这两组函数完成.
再问: 我需要每一行的代码 谢谢
再答: 两个函数里面逐行的解释如下,其他各行的仔细看上面的说明。 public static byte[] o2ba(Player p) throws IOException { // 定义字符型数组变量data,初始赋值为空值null。 byte data[] = null; // 定义字符型数组输出流变量baos,调用该类的构造函数ByteArrayOutputStream()生成该变量实体。 ByteArrayOutputStream baos = new ByteArrayOutputStream(); // 定义数据输出流变量dos,该类定义中有一个成员为ByteArrayOutuptStream型;调用该类的构造函数并将刚才生成的baos赋值给此成员变量。 DataOutputStream dos = new DataOutputStream(baos); // 调用DataOutputStream类函数writeInt(varInt),即往baos中写入整数型变量,值为varInt。这里使用p.getX()返回变量p中的x值,使用p.getY()返回变量p中的y值。 dos.writeInt(p.getX()); dos.writeInt(p.getY()); // 关闭数据输出流变量dos;这个和垃圾处理有关,避免内存不必要的占用。 dos.close(); // 将写入x、y的字符型数组输出流转化为字符型数组,并赋值给data。 data = baos.toByteArray(); // 关闭字符型数组输出流变量baos;这个和垃圾处理有关,避免内存不必要的占用。 baos.close(); // 函数返回变量data。 return data; } public static Player ba2o(byte[] data) throws IOException { // 定义Player型变量p,调用该类的构造函数Player()生成该变量实体。 Player p = new Player(); // 定义数据输入流变量dis,该类定义中有一个成员为ByteArrayInuptStream型;调用该类的构造函数并将函数参数中的data赋值给此成员变量,原理和上面那个o2ba的函数一致。 DataInputStream dis = new DataInputStream(new ByteArrayInputStream(data)); // 调用DataInputStream类函数readInt(),从data数组中逐个读取整数,并通过p.setX(...)和p.setY(...)分别将两个整数赋值给x、y。 p.setX(dis.readInt()); p.setY(dis.readInt()); // 关闭数据输出流变量dis;这个和垃圾处理有关,避免内存不必要的占用。 dis.close(); // 函数返回变量p。 return p; }