1.java程序判断连个对象是否相等,一般有两种方式:==和equals
a.对于==,若两个对象是基本类型中的数值类型(不需要数值类型相同),值相等就返回true;若两个对象是泛型,指向同一对象返回true
b.equals方法是Object提供的实例方法。若不重写,则与==同,需要指向同一对象是返回true。
2.包装类与String相互转换
3.包装类比较
a.若包装类与数值类型的值比较,实际上取包装类实例包装的值与数值类型的值比较
b.两包装类实例做==比较,只有连个包装类型指向同一对象时返回true;equals比较,值相等返回true(包装类重写类equals方法)
4.对于Integer,会将-128~127的整数自动装箱城Integer实例(可参考链接:自定义缓存实例的不可变类)
题目:
1.判断下面程序的返回结果
public class BaseDataType { public static void main(String[] args) { String a ="疯狂JAVA"; String b="疯狂"; String c="JAVA"; String d=b+c; System.out.println(a==d); } }
2.判断下面程序的返回结果
public class BaseDataType { public static void main(String[] args) { String a ="疯狂JAVA"; final String b="疯狂"; final String c="JAVA"; String d=b+c; System.out.println(a==d); } }
3.判断下面程序的返回结果
public class StringCompareTest { public static void main(String[] args) { String s1 = "疯狂Java"; String s2 = "疯狂"; String s3 = "Java"; String s4 = "疯狂" + "Java"; String s5 = "疯" + "狂" + "Java"; String s6 = s2 + s3; String s7 = new String("疯狂Java"); System.out.println(s1 == s4); System.out.println(s1 == s5); System.out.println(s1 == s6); System.out.println(s1 == s7); } }
4.判断下面程序的返回结果
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))); System.out.println("hello" == new EqualTest()); } }
5.定义一个EqualsOverWriteTest,并重写equals方法
6.判断下面程序的返回结果
public class BaseDataType { public static void main(String[] args) { Integer a = Integer.valueOf(6); System.out.println(a > 5.0); } }
7.给出下面程序的返回结果
public class BaseDataType { public static void main(String[] args) { Double a = Double.valueOf(6.0); double b = 6.0; System.out.println(a==b); } }
8.给出下面程序的返回结果
public class BaseDataType { public static void main(String[] args) { Double a = Double.valueOf(6.0); Double b = 6.0; System.out.println(a==b); } }
9.给出下面程序的返回结果
public class BaseDataType { public static void main(String[] args) { Double a = Double.valueOf(6.0); Double b = 6.0; System.out.println(a.equals(b)); } }
10.给出下面程序的返回结果
public class BaseDataType { public static void main(String[] args) { Integer ina = 2; Integer inb = 2; System.out.println(ina == inb); Integer biga = 128; Integer bigb = 128; System.out.println(biga == bigb); } }
11.给出下面程序的返回结果
public class BaseDataType { public static void main(String[] args) { int a =128; Integer b =128; Integer c = 128; System.out.println(a==b); System.out.println(a==c); System.out.println(b==c); } }
答案
1.false
2.true
3.true true false false
4.true true false true 报错
5.
6.true
7.true
8.false
9.true
10.true false
11.true true false