从JAVA文件(逐行)读取字符串

从JAVA文件(逐行)读取字符串,java,string,immutability,Java,String,Immutability,我是编程新手。我对Java中的字符串有一个误解。正如我所知,java中的字符串是不可变的。这意味着它不能被改变,但我已经看到了很多读取文件字符串的例子,并且currentString在每次迭代中总是被改变。请帮助我理解为什么这是可能的,并写下。 来自URL的示例 在您的代码中,sCurrentLine不是对象,而是对对象的引用。每次迭代该行时,它都会被引用到一个新的String对象,因此实际上sCurrentLine的值不会更改,但每次迭代时它的引用都会更改为一个新的String对象,当然,该对

我是编程新手。我对Java中的字符串有一个误解。正如我所知,java中的字符串是不可变的。这意味着它不能被改变,但我已经看到了很多读取文件字符串的例子,并且currentString在每次迭代中总是被改变。请帮助我理解为什么这是可能的,并写下。 来自URL的示例


在您的代码中,
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();
        }
    }