很奇怪的一个问题import java.awt.event.*;
import java.awt.*;
import java.io.*;public class bb implements ActionListener
{
static TextField r = new TextField("123");
public static void main(String args[])
{
Button b = new Button("0");
Frame f = new Frame();
f.setLayout(new BorderLayout());
f.add("South",b);
f.add("North",r);
b.addActionListener(new bb());
f.setSize(200,200);

//////////////////////////////////////////////////////////////////////////////////////////
if (r.getText() == "123") System.out.println("="+r.getText());
else System.out.println("!="+r.getText());

f.setVisible(true);//为什么此处加上该语句后,r.getText()取得字符不等于"123"? TextField r中的值变化了?
                   //但是通过print将TextField r中的值打印出来。并没有发生任何变化。下面TextField r为什么会变化了?

if (r.getText() == "123") System.out.println("="+r.getText());
else System.out.println("!="+r.getText());

r.setEditable(false);
}

public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand()=="0")
{
r.setText("123");//此处再次将TextField r中的值 改变成“123”,为什么下面的 判断语句(r.getText() == "123")还是不成立?
if (r.getText() == "123") System.out.println("="+r.getText());
else System.out.println("!="+r.getText());
}
}

}

解决方案 »

  1.   

    字符串相等不到用==判断,用equals方法
      

  2.   

    不要用==判断,因为==比较引用地址,equals才比较内容
      

  3.   

     if (r.getText() == "123") System.out.println("="+r.getText());
    程序没有问题,字符串的比较应该使用equals
    r.getText().equals("123")
      

  4.   

    我刚转到java。。所以要学的东西比较多。。
    麻烦各位了。
    再次感谢!
      

  5.   

    ==和equals是刚学习java时的一大迷惑点