您的位置:首页 > 编程语言 > Java开发

Java中“==”和equals方法

2016-03-27 16:51 381 查看
Java程序中测试两个变量是否相等有两个方法,一种是==运算符,另一种是equals方法。

==:

当时用“==”判断两个变量是否相等时,如果两个变量是基本类型的变量,且都是数值类型,如果两个变量的值相等,则返回true;

但对于两个引用变量来说,它们必须指向同一个对象时,==才会返回true。==不能用于比较两个类型上没有父子关系的对象。

eg:

public class EqualTest {
public static void main(String[] args){
int it = 65;
float fl = 65.0f;
System.out.println("65 == 65.0f ? " + (it == fl));
char ch = 'A';
System.out.println(" 65 == A ? " + (it == ch));

String str1 = new String("hello");
String str2 = new String("hello");

System.out.println("str1 == str2 ? " + (str1 == str2));
System.out.println("str1 equals str2 ?" + (str1.equals(str2)));
}
}
输出:

65 == 65.0f ? true

65 == A ? true

str1 == str2 ? false

str1 equals str2 ? true

可以看到,用“==”判断时,65,65f和‘A’相等。

str1和str2都是引用类型变量,它们分别通过new关键字创建了String对象,因此str1和str2两个变量不相等。

对于String来说,"hello"直接量和new String("hello")有什么区别呢?

“hello”,JVM将会使用常量池保存这些字符串;

new String("hello"),JVM会用常量池保存“hello”直接量,然后调用String类的构造器构造一个String对象,新创建的对象保存在堆内存中。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: