今天在做搜索框的时候,使用了一个逻辑,就是在点击搜索按钮之后,就会对EditText里的文本进行处理,如果输入了内容,那么就去执行相应的搜索方法,如果,输入的内容为空,那么就用Toast输出一条提示消息。那么,问题来了,当我在检查输入内容是否为空时
<pre name="code" class="java">EditText tv = (EditText) view.findViewById(R.id.edit_search_info);
keyword = tv.getText().toString();
if (keyword==null)
{
oast.makeText(getActivity(), "搜索内容为空", Toast.LENGTH_LONG).show();
break;
}
然后我却惊奇的发现程序崩溃了,找了很久之后才发现,原来keyword根本就!=null,于是乎直接去执行了后面的代码,就报错了。
后来我去网上查了getText的返回值,才发现如果EditView中没有内容的话,那么GetText()函数返回的不是null,而是空字符串 ""。
于是,问题又来了,空串和null是同一个东西吗?答案很明显了:他们根本不是同一个东西。null指的是一个不存在的不占内存的,而""指的则是一个已经存在了的字符串,但是字符串中不占内存,实际上,程序中已经给空串""分配了地址空间。