疯狂java笔记——(==和equals)

public class EqualTest

{

public static void main(String[] args)

{

int it = 65;

float fl = 65.0f;

// 将输出true

System.out.println("65和65.0f是否相等?" + (it == fl));

char ch = 'A';

// 将输出true

System.out.println("65和'A'是否相等?" + (it == ch));

String str1 = new String("hello");

String str2 = new String("hello");

// 将输出false

System.out.println("str1和str2是否相等?"

+ (str1 == str2));

// 将输出true

System.out.println("str1是否equals str2?"

+ (str1.equals(str2)));

// 由于java.lang.String与EqualTest类没有继承关系,

// 所以下面语句导致编译错误

// System.out.println("hello" == new EqualTest());

}

}

(str1.equals(str2)

public class StringCompareTest

{

public static void main(String[] args)

{

// s1直接引用常量池中的"疯狂Java"

String s1 = "疯狂Java";

String s2 = "疯狂";

String s3 = "Java";

// s4后面的字符串值可以在编译时就确定下来

// s4直接引用常量池中的"疯狂Java"

String s4 = "疯狂" + "Java";

// s5后面的字符串值可以在编译时就确定下来

// s5直接引用常量池中的"疯狂Java"

String s5 = "疯" + "狂" + "Java";

// s6后面的字符串值不能在编译时就确定下来,

// 不能引用常量池中的字符串

String s6 = s2 + s3;

// 使用new调用构造器将会创建一个新的String对象,

// s7引用堆内存中新创建的String对象

String s7 = new String("疯狂Java");

System.out.println(s1 == s4); // 输出true

System.out.println(s1 == s5); // 输出true

System.out.println(s1 == s6); // 输出false

System.out.println(s1 == s7); // 输出false

System.out.println(s1.equals(s6)); // 输出true

System.out.println(s1.equals(s7)); // 输出true

}

}

为什么使用== 和equals有不同的效果??

猜你喜欢

转载自blog.csdn.net/qq_36332133/article/details/81182728