这是一个有点不成熟的问题,但是说我有一个变量在循环中不断重新初始化,暂时存储这些数据的最佳数据类型是什么?
例如:
String value = "";
while(file.hasNext()){
value = file.readLine();
}
我问的原因是我知道字符串是不可变的,这表明有一个更有效的选择,我是对的吗?
答案 0 :(得分:3)
我问的原因是我知道字符串是不可变的,这表明有更有效的选择,我是对的吗?
不。您多次拨打readLine
,每次都会给您一个不同的字符串引用。仅仅因为字符串内容本身无法更改并不意味着更改String
变量的值效率不高。该变量值只是一个参考...它并不像它会在每次迭代中复制字符串内容。
你甚至需要在循环中声明变量吗?通常,我更喜欢用尽可能窄的范围声明变量:
while (file.hasNext()) {
String line = file.readLine();
// Use line here
}
答案 1 :(得分:2)
在这种情况下,最好的办法是在while
循环中逐行进行所有计算,即
String value;
while(file.hasNext()) {
value = file.readLine();
//do your thing on value
//or store data in an appropriate structure
}
如果您确实需要包含整个文件的字符串,并且在阅读时无法获取数据,那么最好使用的是StringBuilder
,请参阅documentation。
在你的情况下,它会给出:
StringBuilder sb = new StringBuilder();
while(file.hasNext()) {
sb.append(file.readLine());
}
String entireFile = sb.toString();