就是==与 equal()函数的区别... 就是==与 equal()函数的区别... 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 equal是比较字符串的。==是比较数字的。 1.应该是equals().2.基本类型只能用==3.对于对象,==判断是否同一个对象;equals()默认也是比较是否同一个对象,但一般会重写,转而比较内容。 楼主问的应该是对于对象而言,==与equals()方法有何区别,如果是,下面是我的理解:就本质而言,==是一个逻辑运算符,判断两个值是否相等,而对于对象的引用来说,它的值就是它的指向;而equals()方法是一个普通的方法,它里面包含了自定义比较的成份,也就是说,你可以定义你自己的相等的标准,而不一定是比较引用的指向。例如:1. 对于Object类而言,,==与equals()是相同的,都是比较两个引用的值(即引用的指向)是否相同。源代码是: public boolean equals(Object obj) { return (this == obj); }2. 而对于其他的类,如String类,==仍然是比较引用是否相同,而equals方法,在指向不同时,还会判断字符串的值是否相等。源代码是: public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String)anObject; int n = count; if (n == anotherString.count) { char v1[] = value; char v2[] = anotherString.value; int i = offset; int j = anotherString.offset; while (n-- != 0) { if (v1[i++] != v2[j++]) return false; } return true; } } return false; }就这么多,希望对你有帮助。 == 比较内存地址equal 比较内容你可以用个例子测试一下,运行下这个例子就知道了public class testEqual { public static void main(String[] args) { String s1 = new String("abcd"); String s2 = new String("abcd"); if(s1==s2) //判断地址是否相同,显然两个对象地址不同所以输出flase System.out.println(true); else System.out.println(false); if(s1.equals(s2)){ System.out.println("true"); //判断内容是否相同,这里内容是一样的所以返回true } else System.out.println("false"); }} eqauls 与 = =之异同1)比较方式角度:= =是面向过程的操作符;equals是面向对象的操作符= =不属于任何类,equals则是任何类(在Java中)的一个方法;我们可以1)Primitive1 (基本类型)= = Primitive2(基本类型); 2)Object Reference1(对象引用)= = Object Reference2(对象引用) 3)Object Reference1 (对象引用) .equals(Object Reference2 (对象引用)) 这三种比较 但却不能Primitive1 (基本类型).equals( Primitive2(基本类型)); 对于基本类型,没有面向对象中发送消息一说,自然也不会有方法成员。 2)比较目的角度:1) 如果要比较两个基本类型是否相等,请用= =;2) 如果要比较两个对象引用是否相等,请用= =;3) 如果要比较两个对象(逻辑上)是否一致,请用equals; equals:比较对象的值是否相等==:比较基本型别 “==”可以用于对象的比较,也可以用于基本类型的比较,而equals比较的是对象,要比较基本类型,可以将基本类型封装成对象,比如int可以用Integer对象。而“equals”主要比较对象的hashcode(),默认是对象的存储地址,如果自己重载hashcode就比较的是重载后的hashcode,当然equals方法也可以重载。可以添加其他的域来用于对象的判断,可以在equals中添加instanceof()方法等等。 当比较对象的时候:== 比较两个对象是否指向同一地址equals() 比较两个对象的内容是否相等 equals()比较的是地址里的值是否相等,==比较的是地址是否相同。 equals()比较的是地址里的值是否相等,==比较的是地址是否相同。 作符“==”用来比较两个操作元是否相等,这两个操作元既可以是基本类型,也可以是引用类型。当操作符“==”两边都是引用类型变量时,这两个引用变量必须都引用同一个对象,结果才是true。Object类的equals()方法的比较规则为:当参数obj引用的对象与当前对象为同一个对象时,就返回true,否则返回false。在JDK中有一些类覆盖了Object类的equals()方法,他们的比较规则为:如果两个对象的类型一致,并且内容一致,则返回true。这些类包括:java.io.File、java.util.Date、java.lang.String、包装类(如java.lang.Integer和java.lang.Double类)。 很简单:==是可直接对int 等基本类型进行操作的而==和equals()要想对非基本类型即类实例操作的话则在相应的类里必须要有对==和equals()方法 == 比较变量的值,当然首先要知道基本类型变量和引用类型变量的值是什么。equals是方法,比较什么东西看自己的实现了。 ==判断是否同一个对象,或者值,equals()默认也是比较是否同一个对象 ==就判断引用是否相同,equals默认是看对象是否相同,可以重写定义自己的相等规则 ==是比较内存地址是否相等的,equals是比较属性是否相等的,必要的时候可以重写 String中重写Equals方法的情况下可以用 ==也有种不用重新写的方法下也可以用==,此种方法是在程序中调用了intern() 即字符串扣留! Integer的疑问 被synchronized块修饰的类成员变量和声明为static的类成员变量一样? java.lang.NoSuchMethodError: main Applet和JApplet小问题??????? 素数 统统注意啦!!!throw和throws的区别何在? jsp打印的问题 如何查找 方法(不知道怎么叫法,是不是叫api函数) 所在的包 运行到frame.setVisible(true);报错 客户端 applet 显示问题!?求救! 请教tomcat6.0使用时出现的问题(回答即给分) 大家帮忙看看我这个程序需要怎么修改
2.基本类型只能用==
3.对于对象,==判断是否同一个对象;equals()默认也是比较是否同一个对象,但一般会重写,转而比较内容。
就本质而言,==是一个逻辑运算符,判断两个值是否相等,而对于对象的引用来说,它的值就是它的指向;而equals()方法是一个普通的方法,它里面包含了自定义比较的成份,也就是说,你可以定义你自己的相等的标准,而不一定是比较引用的指向。例如:
1. 对于Object类而言,,==与equals()是相同的,都是比较两个引用的值(即引用的指向)是否相同。
源代码是: public boolean equals(Object obj) {
return (this == obj);
}
2. 而对于其他的类,如String类,==仍然是比较引用是否相同,而equals方法,在指向不同时,还会判断字符串的值是否相等。
源代码是: public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
if (n == anotherString.count) {
char v1[] = value;
char v2[] = anotherString.value;
int i = offset;
int j = anotherString.offset;
while (n-- != 0) {
if (v1[i++] != v2[j++])
return false;
}
return true;
}
}
return false;
}
就这么多,希望对你有帮助。
equal 比较内容你可以用个例子测试一下,运行下这个例子就知道了public class testEqual { public static void main(String[] args) {
String s1 = new String("abcd");
String s2 = new String("abcd");
if(s1==s2) //判断地址是否相同,显然两个对象地址不同所以输出flase
System.out.println(true);
else
System.out.println(false);
if(s1.equals(s2)){
System.out.println("true"); //判断内容是否相同,这里内容是一样的所以返回true
}
else
System.out.println("false");
}}
1)比较方式角度:
= =是面向过程的操作符;equals是面向对象的操作符
= =不属于任何类,equals则是任何类(在Java中)的一个方法;
我们可以1)Primitive1 (基本类型)= = Primitive2(基本类型);
2)Object Reference1(对象引用)= = Object Reference2(对象引用)
3)Object Reference1 (对象引用) .equals(Object Reference2 (对象引用))
这三种比较
但却不能Primitive1 (基本类型).equals( Primitive2(基本类型));
对于基本类型,没有面向对象中发送消息一说,自然也不会有
方法成员。 2)比较目的角度:1) 如果要比较两个基本类型是否相等,请用= =;
2) 如果要比较两个对象引用是否相等,请用= =;
3) 如果要比较两个对象(逻辑上)是否一致,请用equals;
==:比较基本型别
基本类型,可以将基本类型封装成对象,比如int可以用Integer对象。而“equals”主要
比较对象的hashcode(),默认是对象的存储地址,如果自己重载hashcode就比较的是重载后的
hashcode,当然equals方法也可以重载。可以添加其他的域来用于对象的判断,可以在equals
中添加instanceof()方法等等。
== 比较两个对象是否指向同一地址equals() 比较两个对象的内容是否相等
这些类包括:java.io.File、java.util.Date、java.lang.String、包装类(如java.lang.Integer和java.lang.Double类)。
equals是方法,比较什么东西看自己的实现了。
也有种不用重新写的方法下也可以用==,此种方法是在程序中调用了intern() 即字符串扣留!