从JAVA文件(逐行)读取字符串
我是编程新手。我对Java中的字符串有一个误解。正如我所知,java中的字符串是不可变的。这意味着它不能被改变,但我已经看到了很多读取文件字符串的例子,并且currentString在每次迭代中总是被改变。请帮助我理解为什么这是可能的,并写下。 来自URL的示例从JAVA文件(逐行)读取字符串,java,string,immutability,Java,String,Immutability,我是编程新手。我对Java中的字符串有一个误解。正如我所知,java中的字符串是不可变的。这意味着它不能被改变,但我已经看到了很多读取文件字符串的例子,并且currentString在每次迭代中总是被改变。请帮助我理解为什么这是可能的,并写下。 来自URL的示例 在您的代码中,sCurrentLine不是对象,而是对对象的引用。每次迭代该行时,它都会被引用到一个新的String对象,因此实际上sCurrentLine的值不会更改,但每次迭代时它的引用都会更改为一个新的String对象,当然,该对
在您的代码中,
sCurrentLine
不是对象,而是对对象的引用。每次迭代该行时,它都会被引用到一个新的String
对象,因此实际上sCurrentLine
的值不会更改,但每次迭代时它的引用都会更改为一个新的String
对象,当然,该对象包含不同的值
请参阅这篇文章,它更好地解释了字符串的不可变性。在Java中,字符串对象是不可变的,您的理解是正确的 字符串s=新字符串(“ABC”) 字符串S->S是引用变量,它只是一个指针,可以重复使用。唯一的限制是当你指向其他对象时,你会失去上一个对象的引用 “ABC”或新字符串(“ABC”)是java中的对象,这是不可变的 在ur程序中,字符串str被重用为引用变量,但实际对象在写入文件后将被垃圾收集,因为它将在下一个循环中取消引用
希望你能理解。你被变量和引用弄糊涂了。字符串对象是不可变的。这意味着不能更改变量所引用的字符串对象。不过,您可以将变量重新分配给新的字符串对象。也非常感谢!不可变表示字符串本身的实例不能更改。当您重新分配变量时,您正在为其分配不同的字符串实例,旧值不会更改。
BufferedReader br = null;
try {
String sCurrentLine;
br = new BufferedReader(new FileReader("C:\\testing.txt"));//file name with path
while ((sCurrentLine = br.readLine()) != null) {
String[] strArr = sCurrentLine.split("\\+");
for(String str:strArr){
System.out.println(str);
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null)br.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}