Java 使用构造函数初始化数组中的值的最佳方法是什么?
使用构造函数初始化变量的最佳方法是什么 例如,我试图创建一个数组来容纳6个字符串Java 使用构造函数初始化数组中的值的最佳方法是什么?,java,Java,使用构造函数初始化变量的最佳方法是什么 例如,我试图创建一个数组来容纳6个字符串 class Dice{ public String [] side = new String[5]; public String name; public Dice (String n, String [] a){ name = n; side = a; } } 我尝试过这样设置值: cla
class Dice{
public String [] side = new String[5];
public String name;
public Dice (String n, String [] a){
name = n;
side = a;
}
}
我尝试过这样设置值:
class diceGame{
// calling main method
public static void main (String[] args){
Dice easy = new Dice("Green:",["Brain","Brain","Brain","a","a","a"]);
}
Dice easy=新骰子(“绿色:”、“大脑”、“大脑”、“大脑”、“a”、“a”)代码>
Dice easy=新骰子(“绿色:,{Brain”,“Brain”,“Brain”,“a”,“a”})代码>
有两次我得到了同样的结果
错误消息错误:表达式的开始非法
另一方面
错误:类骰子中的构造函数骰子不能应用于给定类型代码>
找到:字符串,字符串,字符串,字符串,字符串,字符串,字符串
我想知道哪种方法最有效
这是之前的一个问题,它让我想,如果有这么多的方法,这实际上是最好的
使用varargs构造函数:
class Dice {
public String [] side;
public String name;
public Dice (String n, String ... a){
name = n;
side = a;
}
}
那么这应该是可行的:
Dice easy = new Dice("Green:","Brain","Brain","Brain","a","a","a");
如有必要,您可以添加一个检查以确保参数的长度是一个特定的值,但这很尴尬,因为调用者不知道需要多少参数。
如果数组始终为固定长度,则可以将每个元素作为单独的参数提供,并在构造函数体中创建数组:
class Dice {
public String [] side;
public String name;
public Dice (String n, String a1, String a2, String a3, String a4, String a5, String a6){
name = n;
side = new String[] {a1,a2,a3,a4,a5,a6};
}
}
这仅适用于短阵列。否则,只需在构造函数中获取一个数组参数,就像varargs方法一样,但在javadoc中指定所需的长度并在构造函数中验证长度。使用varargs构造函数:
class Dice {
public String [] side;
public String name;
public Dice (String n, String ... a){
name = n;
side = a;
}
}
那么这应该是可行的:
Dice easy = new Dice("Green:","Brain","Brain","Brain","a","a","a");
如有必要,您可以添加一个检查以确保参数的长度是一个特定的值,但这很尴尬,因为调用者不知道需要多少参数。
如果数组始终为固定长度,则可以将每个元素作为单独的参数提供,并在构造函数体中创建数组:
class Dice {
public String [] side;
public String name;
public Dice (String n, String a1, String a2, String a3, String a4, String a5, String a6){
name = n;
side = new String[] {a1,a2,a3,a4,a5,a6};
}
}
这仅适用于短阵列。否则,只需在构造函数中获取一个数组参数,就像varargs方法一样,但在javadoc中指定所需的长度并在构造函数中验证长度。Dice easy=new Dice(“绿色:”,new String[]{“Brain”,“Brain”,“Brain”,“a”,“a”,“a”})代码>也公共字符串[]侧=新字符串[5]
只应是公共字符串[]侧代码>Dice easy=新骰子(“绿色:”,新字符串[]{“大脑”,“大脑”,“大脑”,“a”,“a”})代码>也公共字符串[]侧=新字符串[5]
只应是公共字符串[]侧代码>将数组传递给构造函数或任何方法时要注意的事项-数组是通过引用传递的,因此调用方能够在调用后更改数组的元素。如果需要确保不会发生这种情况,则必须创建数组的副本,而不是像我在varargs构造函数示例中所做的那样将其分配给成员变量。“数组是通过引用传递的”-不,不是。请看:多亏了这些信息,我喜欢JS中的传播,我不知道java有一个类似的方法(Varargs方法)@雅各布。是的,从技术上讲,“数组引用”是按值传递的。点是数组对象,或者Java中的任何对象都不是按值传递的,因为您总是处理对象引用。@JacobG,可以将Vargas方法与ArrayList一起使用吗?将数组传递给构造函数或任何方法时需要注意的一点-数组是按引用传递的,因此,调用方可以在调用后更改数组的元素。如果需要确保不会发生这种情况,则必须创建数组的副本,而不是像我在varargs构造函数示例中所做的那样将其分配给成员变量。“数组是通过引用传递的”-不,不是。请看:多亏了这些信息,我喜欢JS中的传播,我不知道java有一个类似的方法(Varargs方法)@雅各布。是的,从技术上讲,“数组引用”是按值传递的。点是数组对象,或者Java中的任何对象都不按值传递,因为您总是处理对象引用。@JacobG,可以将Vargas方法用于ArrayList吗?