J2SE基础小结
1. 九种基本数据类型的大小,以及他们的封装类。
类型 | 基本类型 | 大小(字节) | 默认值 | 封装类 |
整数型 | byte | 1 | (byte)0 | Byte |
short | 2 | (short)0 | Short | |
int | 4 | 0 | Integer | |
long | 8 | 0L | Long | |
浮点型 | float | 4 | 0.0f | Float |
double | 8 | 0.0d | Double | |
布尔型 | boolean | - | false | Boolean |
字符型 | char | 2 | \u0000(null) | Character |
void | - | - | Void |
注:(1)java默认使用unicode作为编码,一个char作为2个字节来存储;
(2)Java的类型分成两种,一种是基本类型,一种是引用类型。两种的本质区别就是:基本类型是在堆栈处分配空间存“值”。但是引用类型,是在堆里面分配空间存“值”。Void是不能new出来,也就是不能在堆里面分配空间存对应的值。那就是一开始在堆栈处分配好空间了。所以,将Void归成基本类型。
基本数据类型封装之后:
(1)封装类可以有属性和方法,可以利用这些属性和方法来处理数据。比如:Integer对象有parseInt(String str),就是将字符串转换为int类型。
(2)基本数据类型跟封装类(引用类型)的默认值是不一样的。比如:int i,i的默认值是0;但是Integer j,j的默认值是null。
(3)封装类产生的是对象,对象默认值是null。一旦java看到null,就知道这个引用还没有指向某个对象,在任何引用使用之前,都必须为其指定一个对象,否则报错。
基本数据类型 | 封装类 |
基本数据类型只能按值传递 | 封装类按引用传递 |
基本数据类型在堆栈中创建,直接存储值,效率高,但可能发生内存泄漏 | 对象类型,对象在堆中创建,对象的引用在堆栈中创建 |
基本数据类型在声明时系统自动为其分配空间 | 引用类型声明时只是分配了引用空间,必须通过实例化开辟数据空间后才能赋值 |
基本数据类型跟封装类(引用类型)的默认值是不一样的,int是基本数据类型,Integer是int的封装类,是引用类型。int默认值是0,而Integer默认值是null,所以Integer能区分出0和null的情况 | |
注:数组对象也是一个引用对象,将一个数组赋值给另一个数组时只是复制了一个引用,所以通过某一个数组所做的修改另一个数组中也看得见 |
2、三种引用类型:类(class) 接口(interface ) 数组(array)
(1)Heap 堆空间:分配对象 new Student()
(2)Stack 栈空间:临时变量 Student stu
new一个对象的时候,如 new Student(); ,在堆空间分配空间并创建一个Student实例;
若写成 Student stu = new Student(); 则会把堆中的Student实例地址赋值给stu变量(栈空间),调用对象的方法时可以用stu来调用,实际上调用就是stu指向的对象的方法
3、switch()参数支持的类型
(1)在JDK 1.5以前,switch(expr)中,exper只能是byte,short,char,int类型,byte,short,char会自动类型转换为int
(2)从JDK 1.5开始,exper可以是enum类型
(3)从JDK 1.7开始,exper还可以是String类型
注:可以把相关的常量分组到一个枚举类型里
4、equals与==的区别
(1)==比较的是两个对象的地址
(2)equals比较的是两个对象的内容
注:如果一个类没有自定义equals方法,它默认的equals方法(从Object 类继承的)就是使用==操作符,也是在比较两个变量指向的对象是否是同一对象,这时候使用equals和使用==会得到同样的结果