简单的问题.一个心灵的朋友写了类似于这个的代码(这只是为了解释你我的问题,它根本没有用......)
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();
}
}
Run Code Online (Sandbox Code Playgroud)
我告诉他他应该把new构造函数放在里面
class Example{
private int[] tab;
public Example() {
tab = new int[10];
...
}
Run Code Online (Sandbox Code Playgroud)
当他问我为什么时,我不知道该回答什么:除了"这样做更好"之外,我没有明确的争论.我学习它的方式,您可以使用基本类型(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);
}
Run Code Online (Sandbox Code Playgroud)
要么
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);
}
Run Code Online (Sandbox Code Playgroud)
除此之外(在您的示例中),没有关于此的一般规则.这是个人品味的问题.
- 它会改变更少/更多使用的内存吗?
在你的例子中,它没有任何区别.一般来说,代码大小或性能可能略有不同,但不值得担心.
总之,我不认为你对你朋友的建议有合理的依据.
我学习它的方式,您可以使用基本类型(int,double ...)初始化变量,但对于数组,您应该在构造函数中执行它.
你应该忘掉这一点......或者至少认识到这只是个人偏好.
| 归档时间: |
|
| 查看次数: |
3411 次 |
| 最近记录: |