Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java初始化纯结构_Java - Fatal编程技术网

Java初始化纯结构

Java初始化纯结构,java,Java,以下是我想做的: public class myClass { int x; int y; } 我学习了C++,所以我尝试这样做: myClass [] a = new myClass[5]; for(int i =0; i < 4; i++) a[i].x = 0; myClass[]a=新的myClass[5]; 对于(int i=0;i

以下是我想做的:

public class myClass
{
  int x;
  int y;
}
我学习了C++,所以我尝试这样做:

myClass [] a  = new myClass[5];
for(int i =0; i < 4; i++)
    a[i].x = 0;
myClass[]a=新的myClass[5];
对于(int i=0;i<4;i++)
a[i].x=0;
这不起任何作用,因为所有a[i]都是空的

我知道这违背了Java的基本原则,但有一种叫做Alljoyn的产品,它迫使我这样做,请参见:


AllJoyn不允许在类中使用构造函数或其他方法。是否有其他方法初始化纯结构?

如果没有初始化任何对象,请尝试:

myClass [] a  = new myClass[5];
for(int i =0; i < 4; i++){
    a[i] = new myClass();
    a[i].x = 0;
}
myClass[]a=新的myClass[5];
对于(int i=0;i<4;i++){
a[i]=新的myClass();
a[i].x=0;
}

您需要首先将阵列的所有
myClass
制度化:

myClass[] a  = new myClass[5];
for(int i =0; i < 4; i++) {
    a[i] = new MyClass();
    a[i].x = 0;
}
myClass[]a=新的myClass[5];
对于(int i=0;i<4;i++){
a[i]=新的MyClass();
a[i].x=0;
}
  • 在Java中没有结构这样的东西。你介绍的是一门课
  • 正如您所观察到的,[i]是
    null
    ,因为数组中的引用被初始化为
    null
    。您尚未创建任何对象。在循环中使用
    a[i]=newmyclass()
    。类
    myClass
    的这个0参数构造函数将由Java生成
  • Java中的类的名称是按照约定编写的
  • a[i].x=0
    是无用的。关于Java中的基本数据类型<默认情况下,编译器会将code>int字段初始化为0
  • 通过执行
    i<4
    不会初始化最后一个元素(第五个元素)。最好总是做
    i

  • 您看过:和吗?Java为所有不定义构造函数的类优雅地添加了一个默认构造函数。你可以通过调用<代码>新MyCype()/<代码>来创建<代码>结构> <代码>类的实例。我不会称这些“坏”C++习惯。结构变量赋值不是一个坏主意,它可能很有用。您已经更正了代码。当OP在概念上试图“初始化结构实例”时,您能补充一下他在Java中应该做什么吗?