1.用boolean equals(String s)方法比较某字符串是否与字符串s相同。例如:
String str1="abc";
String str2=”Abc”;
String str3="abc";
String str4=new String("abc");
System.out.println(str1.equals(str2));
System.out.println(str1==str2);
System.out.println(str1.equals(str3)); System.out.println(str1==str3);
System.out.println(str1.equals(str4));
System.out.println(str1==str4);
注意两个字符串比较与两个字符串引用对象比较的区别。
比如,表达式str1.equals(str2)与表达式str1==str2的差异。前者表示所引用的两个字符串的内容是否相同,后者表示str1与str2是否引用同一个对象。在以上4行代码中,由于str1和str2分别引用不同的对象,所以str1==str2的值是false;因为str1和str3引用同一个字符串常量,str1==str3的值是true。尽管str1和str4引用的对象的内容相同,因为他们是不同的对象,str1引用的是编译时能确定的字符串常量,str4引用的是程序运行时创建的对象,所以表达式str1==str4的值是false。所以后面的六行代码的输出结果分别是:
false
false
true
true
true
false
2. 根据下列条件,描述正确的是?
Integer i = new Integer (42);
Long 1 = new Long (42);
Double d = new Double (42.0);
A. (i ==1)
B. (i == d)
C. (d == 1)
D. (i.equals (d))
E. (d.equals (i))
F. (i.equals (42))
这是CSDN论坛上一个题目,觉得蛮有意思的!答案是F
显然A,B,C不对哦!论坛上说要查看它们实现的原代码,我查了一下,是这样的:
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
3.还有是关于String的创建的对象和引用的问题
同样是CSDN上的题目:
11)下面代码一共创建了几个对象?
1. String s1 = "abc";
2. String s2 = s1;
3. String s3 = "abc";
A. None B. 1 C. 2 D. 3
12)下面代码一共创建了几个对象?
1. String s1 = "abc";
2. String s2 = s1;
3. String s3 = new String("abc");
A. None B. 1 C. 2 D. 3
13)下面代码一共创建了几个对象?
1. String s1 = "abc";
2. String s2 = new String(s1);
3. String s3 = new String("abc");
A. None B. 1 C. 2 D. 3
当然答案显然是 A B C
上面说了String s1=”abc”,只是引用编译时的一个变量,并没有创建对象!只有当new语句时,才在内存中为对象分配一块空间!
Sting,和数组是Java SE最基础的东西啦,也是考得很多的东西,自认为这块掌握得不是很好!