简单的问题。一位内心的朋友编写了与此代码类似的代码(这只是为了向您解释我的问题,根本没有用…。)
class Example{
private int[] tab = new int[10];
public Example() {
for(int i = 0 ; i < 10 ; i++)
tab[i] = (int)(Math.random()*100);
for(int i = 0 ; i < 10 ; i++)
System.out.println(tab[i]);
}
public static void main(String[] arg) {
Example ex = new Example();
}
}
我告诉他他应该把new
构造函数放进去
class Example{
private int[] tab;
public Example() {
tab = new int[10];
...
}
当他问我为什么时,我不知道该怎么回答:除了“这样更好”之外,我没有明确的论点。以我的学习方式,您可以使用基本类型(int,double
…)初始化变量,但对于数组,则应在构造函数中进行初始化。
所以:
我不考虑元素数量可以变化的情况。总是10
- 真的更好吗?
IMO,不是。
- 是否有一些良好的理由:惯例?风格?
选择一种方式而不是另一种方式可能有正当的理由,即您有多个构造函数,或者初始值取决于构造函数参数;例如
private int[] tab;
public Example(int size) {
tab = new int[size];
for (int i = 0; i < size; i++)
tab[i] = (int) (Math.random() * 100);
}
要么
private int[] tab = new int[10];
public Example(int initial) {
for (int i = 0; i < 10; i++)
tab[i] = initial;
}
public Example() {
for (int i = 0; i < 10; i++)
tab[i] = (int) (Math.random() * 100);
}
除此之外(在您的示例中),没有关于此的一般规则。这是个人喜好问题。
- 它会改变使用更少/更多内存的东西吗?
在您的示例中,它没有任何区别。通常,代码大小或html" target="_blank">性能可能会有微小的差异,但这并不值得担心。
简而言之,我认为您对朋友的建议没有合理的依据。
以我的学习方式,您可以使用基本类型(int,double …)初始化变量,但对于数组,则应在构造函数中进行初始化。
您应该不了解…或至少认识到这只是个人喜好。
问题内容: 如果我有一个像这样的构造函数: 然后,我如何在与构造函数相同的类中的方法中使用变量c和d,因为尝试仅在方法中使用变量名似乎不起作用? 问题答案: 实际上,您的代码将无法编译- 无效。 我认为您的意思是:- 。 然后我如何在与构造函数相同的类中的方法中使用变量c和d 您不能这样做,因为您已将它们声明为局部变量,其范围在构造函数结束执行时终止。 您应该将它们声明为实例变量。
我刚刚开始用Java编程。在讨论方法和构造函数时,我们使用的文本是缺乏的。我不确定方法或构造函数到底是什么,也不确定是什么让它们独一无二。有人能帮我定义它们并区分两者吗?
问题内容: 对不起任何较小的语法错误或其他错误,我正在使用Jitsi模块进行此操作,并且对Java不太熟悉,因此想确认正在发生的事情以及为什么以及如何对其进行修复。 使用按名称加载类方法创建类B的实例时,应用程序正在执行此操作: 在类B中调用重写的load() 初始化变量(根据调试器调用“私有字符串testString = null”),将其无效。 这是预期的Java行为吗?是什么原因造成的?它是
前面提到的代码是从MDN修改的。这段代码没有任何意图,只是为了变量声明示例的目的。
问题内容: 所以我有一个名为User的Java类,其中包含如下构造函数: 然后他的问题发生在我的另一个名为Admin的类中: 我收到了错误消息,我不知道该如何解决,我对Java真的很陌生。 问题答案: 您必须使用扩展类的构造函数的第一个类调用构造函数,方法是: 如果您还希望Admin也具有自定义构造函数,则必须调用: 所以:
问题内容: 其实我不明白,无参数构造函数和默认构造函数有什么区别。 创建名为cFrame的Test对象时,这是否调用此类的默认构造函数? 问题答案: 该构造函数是一个无参数的构造函数,代表您的Java编译器插入; 它包含对(not )的调用,这是默认行为。如果实现任何构造函数,则不再收到默认的构造函数。 JLS-8.8.9。默认构造函数说(部分), 如果一个类不包含构造函数声明,则隐式声明一个没有