一,==的习题
package com.whpu.equals_;
public class exercise2 {
public static void main(String[] args) {
int it=12;
float ia=12.0f;
System.out.println(it==ia);
char ch1='A';
char ch2=12;
System.out.println(ch1==65);
System.out.println(ch2==it);
}
}
如上图的源代码,在做这道题这前需要了解一下char这个数据类型。
1.char类型本来是用来存储字母和字符的,但是在技术实现上char却是整数类型,这是因为char类型实际存储的是整数而不是字母,只不过用ASCII码进行了转换。也就是说char型实际就是整形。
2.占用存储空间小。在一些MCU上内存空间有限,需要节省一些空间,用char来定义整形就是一个不错的选择。而char仅仅只占1个字节,unsigned char的范围则是0~255,对于一些基础的#define数据是能满足的。
因此char本质上是一个整数类型,可以存放0~255之间的数值,因此可以用ch2和it比较,在0~255以内的值。而ch1中的‘A’它会自动转换成65,所以和65的整数比起来也是相等的。因此三个输出语句都是对的
==号两边要比较的内容必须是对等的比较,如果是不对等的,就会报错,像拿一个引用类型String的变量去和一个对象比较,这肯定是比较不了的,所以就会报错。
二,
equals方面的习题就不举例了,具体的方法就是分析这个引用类型中的有没有equals方法重写,如果有,则判断内容是否相等,如果没有,则直接使用Object中的equals方法判断地址