String equals()方法 假如user在前的话,当usr==null的时候,就会出现空指针错了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那这么说是equals()方法的问题? 跟equals什么关系啊,当你的user为null时候 相当于是null.equals()了 null当然没有.equals方法了,所以就出错了罗从内部来看,比如说一个object的内存地址是0xxxxxxxxxx那么属于它的方法equals可能是0xxxxxxxxxx+0x04或者什么的,但是当你的object为null的时候,内存访问就出错了, 当然java虚拟机是有检测机制的,所以就报一个异常, equals()方法是比较两个对象的值的内容,如果相同就返回真。==方法是比较两个对象的地址,地址相同即返回真。String user = "name";实意是创建了两个对象,一个引用对象user,一个在堆区的常对象"name"但user本身的值并不是"name",只是指向了"name" 在内存地址。当用user.equals("name")时user引用对象是没有实际值的,系统也并没有为它分配实际的内存空间,自然会出错。而反过来时,会将user指向的内存地址的值“name”与字符串常量"name"进行比较,自然就对了。 是啊,一般来说,即便是""也会用"".equal(String variable);的方式来做的。 我用过没有出错啊<html> <body> <% String user="name"; int i; if(user.equals("name")) i=0; else i=1; out.println("i="+i); %> </body></html>网页显示i=0 正解 回复人:wizardblue(不死鱼) ( 四级(中级)) 信誉:100 2006-3-26 11:28:30 得分:0? 假如user在前的话,当usr==null的时候,就会出现空指针错了 补充说明:java语言规范要求equals方法具有自反,对称,传递,一致的特性(corejava)。 楼主你的user准是走到某个分支的时候没有初始化,因此报空指针错 o_eonian() 好像是学C的,你的那个解释是不对的Java对引用的使用不是这样的 最好些一个函数,当返回是NULL时,你返回"",这样比较就不会存在 “”EQUAL(NULL)这种情况了 呵呵,在Java里面这样写实可以的。难道在JSP里面会不行。public class Test { /** * @param args */ public static void main(String[] args) { String s = "name"; if(s.equals("name")){ //add code here System.out.println("OK"); } }}希望楼主好好看看, 不过一般来说,最好写成"name".equals(s)这样比较保险是为了防止s==null的情况这种情况就是异常了。 生产者-消费者【比较】 ext java 后台数据如何交互? 推荐一门mysql的入门书籍 hibernate外键查询,达人指教 哪位热心人给我发2个包啊? 华为面试题:搞定就给50分,在线等. 请问java应用程序的汉字处理问题 关于Jsp和tomcat的问题,高手们帮忙看看吧! 请了解cocoon的高手介绍一下cocoon,或者给一些相关的电子文档 怎么实现将特定注解的Bean加入一个Set中? 问一下,这些资源应该放哪啊? 如何将aspectJ与tomcat结合起来。求各位大哥大姐紧急求助。。。万分感谢
当你的user为null时候 相当于是null.equals()了
从内部来看,
比如说一个object的内存地址是0xxxxxxxxxx
那么属于它的方法equals可能是0xxxxxxxxxx+0x04或者什么的,
但是当你的object为null的时候,内存访问就出错了,
==方法是比较两个对象的地址,地址相同即返回真。
String user = "name";实意是创建了两个对象,一个引用对象user,一个在堆区的常对象"name"
但user本身的值并不是"name",只是指向了"name" 在内存地址。
当用user.equals("name")时user引用对象是没有实际值的,系统也并没有为它分配实际的内存空间,自然会出错。而反过来时,会将user指向的内存地址的值“name”与字符串常量"name"进行比较,自然就对了。
<html>
<body>
<%
String user="name";
int i;
if(user.equals("name")) i=0;
else i=1;
out.println("i="+i);
%>
</body>
</html>
网页显示i=0
回复人:wizardblue(不死鱼) ( 四级(中级)) 信誉:100 2006-3-26 11:28:30 得分:0
? 假如user在前的话,当usr==null的时候,就会出现空指针错了
java语言规范要求equals方法具有自反,对称,传递,一致的特性(corejava)。
public class Test { /**
* @param args
*/
public static void main(String[] args) {
String s = "name";
if(s.equals("name")){
//add code here
System.out.println("OK");
}
}}
希望楼主好好看看, 不过一般来说,最好写成
"name".equals(s)
这样比较保险是为了防止s==null的情况
这种情况就是异常了。