【新手】关于String判断为空的有关问题

【新手求助】关于String判断为空的问题
本帖最后由 gao54456 于 2014-12-21 12:11:39 编辑
JButton login_button = new JButton("登录");
login_button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String account = account_edit.getText();
String key=key_edit.getText();
if(account.isEmpty())
{
JOptionPane jo=new JOptionPane();
jo.showMessageDialog(null, "用户名不能为空", "", JOptionPane.WARNING_MESSAGE);
}
else
if(key.isEmpty())
{
JOptionPane jo=new JOptionPane();
jo.showMessageDialog(null, "密码不能为空", "", JOptionPane.WARNING_MESSAGE);
}
else
login_in(account_edit.getText(), key_edit.getText());
}
});

这段代码是想把JTextField的内容获取下来,在判断为空的时候我先用的==null和==“”但是不管用啊,我在这个JTextField里面什么都不输入的情况下不能判断为空,但是用isEmpty()就可以了,这是为什么啊,我对比较空字符串稍微有点概念,但是不是特别清楚,只知道会比较内容,或者比较引用的地址什么的,求大神来仔细讲解一下啊,,拜托了
------解决思路----------------------
用“==”去比的话,比的是内存中的位置,如果两个变量指向相同的内存块就为判断为真。而isEmpty()比的是值是否相等。
举个例子:Integer a = new Integer(1);  Integer b = new Integer(1);  a == b 为false,a.equals(b) 为真。a和b 在创建对象时指向不同内存块中的1,如果用int a = 1; int b =1创建的话,a和b对象会指向同一内存块"1",这是再用“==”去判,就为真了。平时编程应该尽量回避“==”判定。
------解决思路----------------------
首先,Java中的字符串的值的比较,应该使用equals方法
所以:在判断为空的时候用==null和==“”是不管用的
如果写成if("".equals(变量名))应该就会管用了

其次,==null是在判断变量本身是否为空
比如:String account = null;这样初始化完之后,
if(account == null)就会返回true了

最后,在Java中写==“”是比较危险的,对象的值之间进行比较一定要用equals
建议看一下《Effective Java》的相关章节,里面有非常详细的解释
------解决思路----------------------
默默的说一声,判断加个"".equals(xxx);【新手】关于String判断为空的有关问题