从python迁移过来后,我正在学习java。可以为数组分配值的方式对我来说有点新。我可以使用这个:
stmt -> assignment SEMI | RETURN stmt_prime
| LBRACE stmt_list RBRACE
| IF LPAREN assignment RPAREN stmt stmt_prime_prime
| FOR LPAREN assignment SEMI assignment SEMI assignment RPAREN stmt |
stmt_prime -> SEMI | -> assignment SEMI
stmt_prime_prime -> NOELSE
| ELSE stmt
assignment -> ID typ ASSIGN expr | expr
expr -> TE*
E* -> + TE* | -TE* | epsilon
T -> FT*
T* -> * FT* | / FT* | epsilon
F -> (E) | int_literal | TRUE | FALSE
或者:
int[] myArray = new int[size];
for (int i = 0; i < size; i++) {
a[i] = i;
}
我知道我可以使用ArrayList类做其他事情,并且可以使用在程序编译时更新的变量来更改大小,但是在这两种方法中,这是最佳实践吗?有关系吗?
答案 0 :(得分:4)
哪个被认为是最佳实践?有关系吗?
首先,提防“最佳实践”。在编程世界中,它几乎不存在。
阅读并考虑一下:
对您的问题。您介绍了两种初始化数组的不同方法,但是它们具有不同的特征。
第一个从一个开始,以递增顺序创建和初始化数字数组。数组的大小是一个参数,此代码适用于不同的大小。
第二个也创建并初始化一个数字数组,该数字数组从一个开始递增。但是在这种情况下,数组的大小由源代码中初始化程序中的数字数量决定;即
int[] otherArray = {1, 2, 3, 4}; // produces a 4 value array
或
int[] otherArray = {1, 2, 3, 4, 5}; // produces a 5 value array
那哪个更好?
这取决于您要尝试执行的操作。
size
需要改变,显然第二种方法不起作用。这里是否有“最佳实践”?
显然,没有。不同的问题需要不同的方法。千篇一律的“最佳实践”是行不通的,更不用说是所有问题的最佳解决方案了。
这种推理适用于编程中的绝大多数“最佳实践”问题。
答案 1 :(得分:2)
我认为这两种方法在您需要的情况下都很好。如果您知道大小,并且确定边界正确,则第一个可以正常工作。仅当您在创建时已经知道数组中每个元素的值时,才能完成第二个操作。
公认的答案在回答这样一个问题的哲学上做得更好。