3.equals()和==的区别

==用于判断两边的变量的值是否相等,如果是基本数据类型,就是判断他们的值是不是相等;如果==两边是对象的引用,那么指的是这两个引用是否指向同一个对象,及引用的值是否相等。

equals()是Object里的方法。在Object的equals中,就是使用==来进行比较,比较的是引用。与==不同的是,在某些Object的子类中,覆盖了equals()方法,比如String中的equals()方法比较两个字符串对象的内容是否相同。

hashCode()方法也是继承自Object,它用来获取一个对象的hash值,返回int值。Object.hashCode规定,equals()相等的对象,它们的HashCode()返回值也必须相等,否则无法与集合类结合在一起使用。(List, Set, Hashmap..)

2016/9/26 21:20 下午 posted in  Java

2. Switch能否用String做参数?

2016/9/26 20:52 下午 posted in  Java

1. 九种基本数据类型的大小,以及他们的封装类

大小 最小值 最大值 包装类型
boolean 32-bit - - Boolean
char 16-bit Unicode 0 Unicode 216 -1 Character
byte 8-bit -27 27 -1 Byte
short 16-bit -215 215 -1 Short
int 32-bit -231 231 -1 Integer
long 64-bit -263 263 -1 Long
float 32-bit IEEE754 IEEE754 Float
double 64-bit IEEE754 IEEE754 Double
void - - - Void

使用封装类的目的

集合类中存放的都是对象,为了使集合类也能存放基本数据类型,Java提供了其对应的包装类。

封装类与基本数据类型的区别

  1. 传递类型不同,封装类是引用传递,基本数据类型是值传递。
  2. 内存分配不同,类在堆上分配,基本类型在Java虚拟栈上分配。

void类型

Java编程思想中奖void也纳入基本数据类型。Java文档中对void的解释:

/**
 * The {@code Void} class is an uninstantiable placeholder class to hold a
 * reference to the {@code Class} object representing the Java keyword
 * void.
 *
 * @author  unascribed
 * @since   JDK1.1
 */

java.lang.Void 类是一个不可实例化的占位符类来保存一个引用代表了Java关键字void的Class对象。Void无法通过new在堆中分配空间。

2016/9/26 16:4 下午 posted in  Java