Java 如何清除字符串?
在我正在使用的程序中,文本字段必须在某个点显示一些文本Java 如何清除字符串?,java,string,jtextfield,Java,String,Jtextfield,在我正在使用的程序中,文本字段必须在某个点显示一些文本 output.setText( outputString ); outputString = ""; 输出是一个JTextField。这些代码行在一个方法中,当第一次调用它时,它工作得非常好。但是,当下次调用时,原始outputString文本仍然保留。为什么会发生这种情况,我如何修复它 好吧,我想这是因为字符串是不可变的。问题是,outputString永远不会更改,因此它仍然包含来自初始方法调用的文本 如何以某种方式更改字符串中的文本
output.setText( outputString );
outputString = "";
输出是一个JTextField。这些代码行在一个方法中,当第一次调用它时,它工作得非常好。但是,当下次调用时,原始outputString文本仍然保留。为什么会发生这种情况,我如何修复它
好吧,我想这是因为字符串是不可变的。问题是,outputString永远不会更改,因此它仍然包含来自初始方法调用的文本
如何以某种方式更改字符串中的文本?必须清除JTextField对象中的文本。使用setText()将变量作为参数发送不会将该变量绑定到对象。它只是复制字符串
output.setText("");
如果文本为null或空,则只需删除
旧文本
将文本设置为变量的内容不会在该变量和该文本字段之间建立永久关系,如果要清除文本,可以使用
output.setText("");
尝试设置JTextField的文本后,是否将outputstring设置为“”?如果是这样,您应该尝试这样做:
output.setText("");
这将解决这个问题
为什么会发生这种情况
字符串是不可变的。
始终存在对字符串的新引用。因此,当您调用outputString=“”代码>,将创建新字符串
我怎样才能修好它
调用output.setText(“”)代码>您的代码所做的是,首先将文本字段的内容设置为outputString变量的内容:output.setText(outputString)代码>
后续代码行不会更改字符串对象(文本字段的内容),而是将outputString变量设置为引用空字符串变量。字符串在java中是不可变的,因此不可能将对一个字符串变量的更改反映到另一个字符串变量
正如许多人所说,您需要通过调用来设置文本字段的内容:jTextFieldVar.setText(“”)
或jTextFieldVar.setText(空)代码>我想你要找的是:
output.setText("");
我认为你误解了一些非常重要的事情。Java字符串是不可变的,这意味着您不能更改它们
“如何以某种方式更改字符串中的文本?”
你不能。无法更改字符串中的文本。它是不变的。任何涉及更改字符串中文本的“解决方案”在Java中都不起作用。(明白了吗?)
执行此操作时:
output.setText(outputString);
outputString = "";
output.setText("");
output.setText(outputString);
分配不会更改文本字段中显示的值。它只是更改局部变量outputString
引用的字符串
当你这样做的时候:
output.setText(outputString);
outputString = "";
output.setText("");
output.setText(outputString);
它不会导致outputString
更改。它只是将显示的文本更改为“无”,然后立即将其更改为当前引用的任何outputString
如果要将文本字段中显示的值更改为“无”,只需执行以下操作:
output.setText("");
也许你思维中的另一个错误是你认为:
output.setText(outputString);
设置文本字段输出
与变量输出字符串
之间的关系。。。这样,当用户在字段中键入时,outputString
变量会神奇地更新。事实并非如此。事实上,这是不可能的,因为您无法传递变量的地址
实际上,output.setText(outputString)
只是将outputString
的值传递给文本框对象。如果用户在框中键入内容,字符将存储在其他位置,并且仅返回到代码中作为新字符串。。。当您的代码调用output.getText()
时,这将很好地解决问题
output.setString(“”) 指出字符串不可变这一事实的其他答案是准确的
但如果您想拥有“清除字符串”的功能,您可以:
好了,伙计们,我只是试了5次同样的答案。它不起作用。我把output.setText(“”)放进去;紧靠output.setText(outputString);,但是outputString并没有改变,所以它仍然包含前面的文本块。当然,这不会清除文本,您只是在覆盖它。如果要清除文本,必须在之后调用setText(“”)。。。如果您执行output.setText(“”),然后紧接着执行output.setText(outputString),那么您的文本字段将包含outputString包含的任何内容。您的文本字段将为空,但会立即被第二次调用覆盖。如果希望文本字段为空,只调用output.setText(“”)