我们如何用java创建自己的数据类型?

我们如何用java创建自己的数据类型?,java,Java,我需要创建自己的数据类型,并为数据类型分配一些字节。 例如: 数据类型A:应具有1字节的内存 数据类型B:应具有2字节的内存 数据类型C:应该有7个字节的memeory等 我们有没有办法定义自己的数据类型并为它们分配一些内存?您不能在java中创建数据类型,但可以创建对象类,如下所示: Class A { public byte[] bytes; } 您不能在java中创建数据类型,但可以创建对象类,如下所示: Class A { public byte[] bytes;

我需要创建自己的数据类型,并为数据类型分配一些字节。
例如:

数据类型A:应具有1字节的内存
数据类型B:应具有2字节的内存
数据类型C:应该有7个字节的memeory等


我们有没有办法定义自己的数据类型并为它们分配一些内存?

您不能在java中创建数据类型,但可以创建对象类,如下所示:

Class A {
    public byte[] bytes; 
}

您不能在java中创建数据类型,但可以创建对象类,如下所示:

Class A {
    public byte[] bytes; 
}

Java中唯一可用的用户定义类型是类(包括枚举),您无法直接控制它们的大小。类实例有许多字节的开销,您无法避免。

Java中唯一可用的用户定义类型是类(包括枚举),并且无法直接控制它们的大小。一个类实例有许多字节的开销是不可避免的。

在Java中有几个“选项”来表示类型,即:接口、类和枚举

从这个意义上说,最好的匹配是一个类,比如:

public class TwoByteHolder {
  public final byte[] data = new byte[2];
}
该类的对象允许您精确存储2个字节;下一个“级别”可能是:

public class ByteHolder {
  public final byte[] data;

  public ByteHolder(int numberOfBytes) {
    data = new byte[ numberOfBytes ];
  }
  ...
但当然:内存开销将是巨大的——Java并不是处理此类需求的最佳语言

Java中有几个“选项”来表示类型,即:接口、类和枚举

从这个意义上说,最好的匹配是一个类,比如:

public class TwoByteHolder {
  public final byte[] data = new byte[2];
}
该类的对象允许您精确存储2个字节;下一个“级别”可能是:

public class ByteHolder {
  public final byte[] data;

  public ByteHolder(int numberOfBytes) {
    data = new byte[ numberOfBytes ];
  }
  ...

但当然:内存开销将是巨大的——Java并不是处理此类需求的最佳语言

您可以创建一个具有特定字段的新类。如果需要字段的精确大小,可以使用字节数组

class Data {

  public byte[] dataA = new byte[1];
  public byte[] dataB = new byte[2];
  public byte[] dataC = new byte[7];
  ...
}

可以创建具有特定字段的新类。如果需要字段的精确大小,可以使用字节数组

class Data {

  public byte[] dataA = new byte[1];
  public byte[] dataB = new byte[2];
  public byte[] dataC = new byte[7];
  ...
}


是的,它们被称为对象,欢迎使用java是的,它们被称为对象,欢迎使用java“该类的对象允许您精确存储2个字节”是的,每个实例的开销约为32个字节。@GhostCat,谢谢您的回答,我使用了相同的方法,按照您的建议声明了字节类型,但我无法访问methodpublic类bytedata{public byte[]dataA=new byte[1];public void sample(){dataA=125;}}}中的值。它说的是将字节更改为int,因为以这种方式编写的数字具有int类型,并且int的范围大于byte。这些都是超级基础。因此,真正的答案是:拿起一本好书开始学习-不要指望我们向您解释已经记录了无数次的事情。“该类的对象允许您精确存储2个字节”是的-每个实例的开销约为32字节。@GhostCat,感谢您的回答,我使用了相同的方法,按照您的建议声明了字节类型,但我无法访问methodpublic类bytedata{public byte[]dataA=new byte[1];public void sample(){dataA=125;}}}中的值。它说的是将字节更改为int,因为以这种方式编写的数字具有int类型,并且int的范围大于byte。这些都是超级基础。因此,真正的答案是:拿起一本好书开始学习——不要指望我们向你解释已经被记录了无数次的事情。
code
public byte[]dataA=new byte[1];public void sample(){//dataA=125;}感谢您的回答,我已尝试按照您的建议声明字节,我无法在我的方法中访问dataA变量#注意,这是最好的方法,但您可以尝试使用
public static byte[]dataA=new byte[1]
然后在您的方法中尝试
数据。dataA
谢谢,我也是这样做的。我只是声明了一个类中的所有字节数组,并尝试使用className.varibleName从另一个类访问它们,我可以访问它,但无法为它分配一些值。它是说将dataA类型更改为int
ByteClass.dataA=123这里我在123处得到错误行,将其更改为int type
code
public byte[]dataA=新字节[1];public void sample(){//dataA=125;}感谢您的回答,我已尝试按照您的建议声明字节,我无法在我的方法中访问dataA变量#注意,这是最好的方法,但您可以尝试使用
public static byte[]dataA=new byte[1]
然后在您的方法中尝试
数据。dataA
谢谢,我也是这样做的。我只是声明了一个类中的所有字节数组,并尝试使用className.varibleName从另一个类访问它们,我可以访问它,但无法为它分配一些值。它是说将dataA类型更改为int
ByteClass.dataA=123这里我在123处得到错误行,将其更改为int类型