output.setText( outputString );
outputString = "";
输出框是一个JTextField。这些代码在一个方法中,第一次调用时运行得很好。然而,当它再次调用时,原始的outputString文本仍然存在。为什么会发生这种情况,我该怎么解决?
好的,我认为这是因为字符串是不可变的。问题在于,outputString从未更改过,因此它仍具有初始方法调用的文本。
我该如何改变字符串中的文本?
output.setText( outputString );
outputString = "";
输出框是一个JTextField。这些代码在一个方法中,第一次调用时运行得很好。然而,当它再次调用时,原始的outputString文本仍然存在。为什么会发生这种情况,我该怎么解决?
好的,我认为这是因为字符串是不可变的。问题在于,outputString从未更改过,因此它仍具有初始方法调用的文本。
我该如何改变字符串中的文本?
将文本设置为变量的内容并不会在该变量和文本字段之间建立永久关系,如果您想清除文本,则可以使用
output.setText("");
您需要清除JTextField对象中的文本。使用setText()方法并将变量作为参数传递不会将该变量与对象绑定。它只是复制了字符串。
output.setText("");
我认为你误解了一些非常重要的事情。Java字符串是不可变的,这意味着你无法改变它们。
"我如何改变字符串中的文本?"
你不可以。字符串中的文本不能被改变。它是不可变的。任何涉及更改字符串中文本的“解决方案”在Java中都行不通。(明白了吗?)
当你这样做:
output.setText(outputString);
outputString = "";
这个操作不会改变文本框中显示的值。它只是改变了本地变量outputString
所指向的字符串。
当你执行以下操作时:
output.setText("");
output.setText(outputString);
它不会导致outputString
改变。它只是将显示的文本更改为无,然后立即将其更改为outputString
当前引用的任何内容。
如果您想将文本字段中显示的值更改为无,您只需要这样做:
output.setText("");
output.setText(outputString);
建立文本框output
和变量outputString
之间的关系...使得当用户在文本框中输入时,outputString
变量会神奇地更新。但实际上并非如此。事实上,这是不可能的,因为你无法传递变量的地址。
实际上,output.setText(outputString);
只是将outputString
的值传递给文本框对象。如果用户在文本框中键入了任何东西,则字符将存储在其他地方,并且只有在您的代码调用output.getText()
时,才会作为新字符串返回到您的代码中。
output.setText("");
会解决这个问题
outputString = "";
时,会创建一个新的字符串引用。output.setText("");
。你的代码首先将文本字段的内容设置为output.setText(outputString);
中的outputString变量的内容。
你接下来的代码行没有改变String对象,也就是你的文本字段的内容,而是将你的outputString变量设置为引用空字符串变量。在Java中,由于字符串是不可变的,因此不可能对一个字符串变量进行更改并反映到另一个变量上。
正如许多人所说,你需要通过调用jTextFieldVar.setText("");
或jTextFieldVar.setText(null);
来设置你的文本字段内容。
output.setText("");
我认为你正在寻找的是:
output.setText("");
这将完美地运作。
output.setString("");
其他回答指出字符串是不可变的事实是准确的。
但是,如果您想要“清除字符串”的功能,您可以使用StringBuffer代替并在其上调用此函数:
stringBuffer.delete(0, stringBuffer.length());