(1)数据类型精讲

97 阅读3分钟

一:基本数据类型

1个字节占8位 (起始位置为符号位)那么一个字节的取值范围为-2^72^7-1(-128127)

数据类型

字节数

取值范围

byte

1

short

2

int

4

long

8

float

4

double

8

char

boolean

二:引用类型

只要有8种

Byte ,Short ,Interger, Long, Float, Double, Boolean,String

三:常见面试题

(1)取值范围略

(2)类型强转

从代码中可以看到 数据类型错误(小数据类型不能转换大数据类型)需强转

查看字节码文件,可以看到字节码做 了强制类型转换

(3)引用类型的取值范围

最大值一样的方法可以验证 是int类型的取值范围

(4)引用类型和基本类型的自动装箱和拆箱

什么是自动装箱拆箱 很简单,下面两句代码就可以看到装箱和拆箱过程

 //自动装箱 Integer total = 99;  //自动拆箱 int totalprim = total;

简单一点说,装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。

可参考博客:www.cnblogs.com/wang-yaz/p/…

(5)equals()和==的区别

equals()是object的一个方法

翻译:

指示其他对象是否“等于”这个对象。equals 方法在非空对象引用上实现等价关系:它是自反的:对于任何非空引用值 x,x.equals(x) 应该返回 true。它是对称的:对于任何非空引用值 x 和 y,当且仅当 y.equals(x) 返回 true 时,x.equals(y) 才应该返回 true。它是可传递的:对于任何非空引用值 x、y 和 z,如果 x.equals(y) 返回 true 并且 y.equals(z) 返回 true,则 x.equals(z) 应该返回 true。它是一致的:对于任何非空引用值 x 和 y,x.equals(y) 的多次调用始终返回 true 或始终返回 false,前提是没有修改对象上 equals 比较中使用的信息。对于任何非空引用值 x,x.equals(null) 应该返回 false。Object 类的 equals 方法实现了对象上最有区别的可能等价关系;也就是说,对于任何非空引用值 x 和 y,当且仅当 x 和 y 引用同一个对象(x == y 的值为 true)时,此方法才返回 true。请注意,每当重写该方法时,通常都需要重写 hashCode 方法,以维护 hashCode 方法的一般约定,即相等的对象必须具有相等的哈希码。参数:obj - 要与之比较的参考对象。回报:如果此对象与 obj 参数相同,则为 true;否则为假。也可以看看:hashCode(), java.util.HashMap

通过源码的注释翻译可以看到equals() 方法和==是等价的,在继承了Object类后,需要对equals() 方法重写

interger 如何重写了equals() 方法

比较的是值是否相等

结论:对于基本数据类型而言比较的是值是否相等,对于非基本数据类型来说,equals() 方法是父类Object的一个方法,其作用和==的效果一样都是比较的引用地址是否相同,但是例如Interger类型对该方法进行了重写,用来比较值是否相等。值得注意的是对equals() 方法重写必须重写hashCode()方法。