1.各种数值类型对象的equals比较问题
// 各种数值类型对象的equals比较问题
// Integer型对象i
Integer i = new Integer(42);
// Long类型对象l
Long l = new Long(42);
// Double类型对象d
Double d = new Double(42.0);
// 编译报错:Incompatible operand types Integer and Long
// System.out.println(i==l);
// 编译报错:Incompatible operand types Integer and Double
// System.out.println(i==d);
// 编译报错:Incompatible operand types Long and Double
// System.out.println(l==d);
// 以下四句测试结果均为false,因为类型都不匹配,无法进行比较
System.out.println(i.equals(l));
System.out.println(i.equals(d));
System.out.println(l.equals(d));
System.out.println(l.equals(42));
// 下句测试结果为true,因为42默认是int型,因为自动打包,变成了Integer类型
System.out.println(i.equals(42));
测试结果:
false
false
false
false
true
相应源代码:
Integer类中的equals方法:
(只有相比较的两个对象都是Integer类型时,才继续进行值是否相等的比较,否则直接返回false)(20090414追加):
-》是啊,假如连类型都不一样,你还比较个啥劲啊?呵呵(20090507追加)
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
分析:
((Integer)obj).intValue()
先将被比较对象,强制类型转换成Integer类型,再使用intValue()方法求出它的值(20090414追加)。
Long类中的equals方法:
(只有相比较的两个对象都是Long类型时,才继续进行值是否相等的比较,否则直接返回false)(20090414追加):
public boolean equals(Object obj) {
if (obj instanceof Long) {
return value == ((Long)obj).longValue();
}
return false;
}
2.强制类型转换问题
// 强制类型转换问题
short s1 = 1;
//Type mismatch: cannot convert from int to short
//s1 = s1 + 1;
// 解决方案:从大(int)到小(short),需要加强制类型转换
s1 = (short) (s1 + 1);
short s2 = 1;
// 这种写法没有问题,编译和运行均通过
s2 += 1;
3.不同类型的数值进行四则运算时,类型自动转换
// 不同类型的数值进行四则运算时,类型自动转换
int x = 4;
// 因为99.9默认是double类型,9和其做运算(比较),也会变成double类型,所以输出结果是9.0
System.out.println("value is " + ((x > 4) ? 99.9 : 9));
// 因为99默认是int类型,9和其做运算(比较),也会变成int类型,所以输出结果是9
System.out.println("value is " + ((x > 4) ? 99 : 9));
测试结果:
value is 9.0
value is 9
4.byte的存储范围是-128到127
// byte的存储范围是-128到127
byte b1 = (byte) 128;
// 测试结果是-128
System.out.println(b1);
byte b2 = (byte) -129;
// 测试结果是127
System.out.println(b2);
测试结果:
-128
127
5.String的equals测试:
// 同一个字符串常量,测试结果是true
System.out.println("george" == "george");
// 编译错误:The left-hand side of an assignment must be a variable
// System.out.println("george" = "george");、
// 比较的是两个字符串的内容(尽管前者是存放在数据区的字符串常量,后者是存放在堆中的字符串变量),测试结果是true
System.out.println("george".equals(new String("george")));
// 比较地址,肯定就不相等了,测试结果是false
System.out.println("george" == (new String("george")));
测试结果:
true
true
false
-》编译错误:赋值表达式的左边应该是变量。(20090507追加)
分享到:
相关推荐
计算机学业测试试题复习卷4.pdf
这个压缩包中的"高中试题"很可能包含了上述所有科目的练习题目,可能分为选择题、填空题、简答题等多种形式。通过做这些试题,学生可以检验自己对知识的掌握程度,发现弱点,进而进行针对性的复习。同时,解题技巧和...
linux大学期末复习试题复习资料.pdf
数据结构 1800 试题 复习题 数据结构 1800 试题 复习题 数据结构 1800 试题 复习题 数据结构 1800 试题 复习题
地理信息系统试题期末考试题目复习资料.doc
单片机复习题目单片机复习题目
C语言复习试题C语言复习试题
内河轮机基础精选试题复习课程.pdf内河轮机基础精选试题复习课程.pdf内河轮机基础精选试题复习课程.pdf内河轮机基础精选试题复习课程.pdf内河轮机基础精选试题复习课程.pdf内河轮机基础精选试题复习课程.pdf内河轮机...
计算机考研统考专业课408中需要经常复习的题目的平台。计算机考研统考专业课408中需要经常复习的题目的平台。计算机考研统考专业课408中需要经常复习的题目的平台。计算机考研统考专业课408中需要经常复习的题目的...
每一轮复习都有配套的答案,且与题目顺序一致,方便考生自我检查和巩固。 总的来说,这份题库全面覆盖了数字图像处理的主要知识点,通过系统的练习,考生不仅可以深化对理论的理解,还能提升实际操作技能,为应对...
网络工程师试题精解试题复习要点复习要点精解试题精解试题精解网络工程师网络工程师网络工程师
新课程改革对中考试题产生了深远影响,不仅在教学理念上强调了个性化学习和实践创新能力,也在考试形式和内容上做出了重大调整。复习策略应当适应这些变化,以确保学生能够全面展示自己的能力和知识掌握程度。 1. ...
现代管理学复习资料及历年试题试题答案(最全版).pdf现代管理学复习资料及历年试题试题答案(最全版).pdf现代管理学复习资料及历年试题试题答案(最全版).pdf现代管理学复习资料及历年试题试题答案(最全版).pdf现代管理...
期末考试是对学生学习成果的重要检验,本资料集包含了丰富的单片机相关考试试题和复习资源,旨在帮助学生全面掌握单片机知识。 单片机复习资料2.doc 和 单片机笔试复习资料.doc 是针对单片机原理和应用的详细梳理,...
计算机辅助设计复习试题
【标题】:“复习试题.zip”通常是一个包含一系列学习材料或测试题目的压缩文件,用于帮助学生或专业人士准备考试或复习课程内容。这类文件在教育和培训领域非常常见,它能够集中存储大量的文档、图片、PDF文件或...
在这个"Accp5.0 S2毕业复习题和试题"压缩包中,包含的是第二阶段的复习资料,尤其是试题,这将帮助学员巩固和检验他们在ACCP5.0 S2阶段所学的知识。这些复习题和试题可能涵盖以下关键知识点: 1. **编程语言**:...
计算机网络原理试题,可以复习的时候用,里面题目很全,很不错
这些试题可能按难度分为考研级别和补考级别,考研题目通常更具挑战性,考察深度和广度,而补考题目则更注重基本概念的理解和应用。 8. **解答与解析**:每一套试题都应该配有详细的解答和解析,帮助学生理解解题...
这份资源是关于软件工程导论的复习题目汇总,旨在帮助学生复习软件工程导论的重点知识点和概念。该文档包含了多个复习题目,涵盖了软件工程导论的各个方面,如软件开发生命周期、需求工程、软件设计、软件测试、项目...