我们如何用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类型更改为intByteClass.dataA=123代码>这里我在123处得到错误行,将其更改为int typecode
public byte[]dataA=新字节[1];public void sample(){//dataA=125;}感谢您的回答,我已尝试按照您的建议声明字节,我无法在我的方法中访问dataA变量#注意,这是最好的方法,但您可以尝试使用public static byte[]dataA=new byte[1]
然后在您的方法中尝试数据。dataA
谢谢,我也是这样做的。我只是声明了一个类中的所有字节数组,并尝试使用className.varibleName从另一个类访问它们,我可以访问它,但无法为它分配一些值。它是说将dataA类型更改为intByteClass.dataA=123代码>这里我在123处得到错误行,将其更改为int类型