一、基本数据类型
数据类型 | 关键字 | 在内存中占用字节数 | 取值范围 | 默认值 |
布尔型 | boolean | 1 | true,false | false |
字节型 | byte | 1 | -128~127 | 0 |
短整型 | short | 2 | -215 ~ 215-1 | 0 |
整型 | int | 4 | -231 ~ 231-1 | 0 |
长整型 | long | 8 | -263 ~ 263-1 | 0 |
字符型 | char | 2 | 0 ~ 216-1 | ‘\u0000’ |
单精度浮点型 | float | 4 | 1.4013E-45 ~ 3.4028E+38 | 0.0F |
双精度浮点型 | double | 8 | 4.9E-324 ~ 1.7977E+308 | 0.0D |
1、不允许把整数或null赋值给boolean类型的变量。
2、如果一个整数值在某种整数类型的取值范围内,就可以把它直接赋值给这种类型的变量,否则必须进行强制类型转换。
3、Java语言采用UCS-2字符编码。
4、如果需要比double类型更高的精确度,可以使用Java类库中的java.math.BigDecimal类,它能够表示任意精确度的数据。
二、引用类型
1、Java中的引用类型包括类引用类型、接口引用类型和数组引用类型三种。上表中的类型都是基本数据类型。对于基本数据类型,Java虚拟机会为其分配数据类型实际占用的内存空间;而对于引用类型变量,它仅仅是一个指向堆区中某个实例的指针。
2、局部变量位于Java栈区,静态成员变量位于方法区,类的实例成员变量位于堆区。
3、new关键字创建对象的过程(重要)
l 为对象分配内存空间,将对象的实例变量自动初始化为其变量类型的默认值。
l 如果实例变量在声明时被显式初始化,那就把初始化值附给实例变量。
l 调用构造方法。
l 返回对象的引用。
三、变量的作用域
1、类的局部变量不能被static、private、protected和public等修饰符修饰。也不能通过类名或引用变量名来访问局部变量。
四、对象的默认引用:this
1、在以下情况下会用到this关键字:
l 在类的构造方法中,通过this语句调用这个类的另一个构造方法。
l 在一个实例方法内,局部变量或参数和实例变量同名,实例变量被屏蔽,可”this.实例变量名” 的方式来指代实例变量。
l 在一个实例方法内,访问当前实例的引用。
2、注意:只能在构造方法或实例方法内使用this关键字,而静态方法和静态代码块内不能使用this关键字。
五、直接数
1、对于基本类型的数据,除了byte和short类型之外,都有相应的直接数。
2、对于整数,如果在int类型的取值范围内,就是int型直接数,否则,如果在long类型的取值满园内,就是long型直接数。
3、对于引用类型,只有String引用类型有直接数。
4、直接数赋值有以下特点:
l 基本类型直接数不允许赋给String类型,同样,String类型的直接数也不允许赋给基本类型的变量。
l boolean类型的直接数只能周期给boolean类型的变量,boolean类型的变量只接受boolean类型的直接数。
l 把char类型直接数赋给short类型变量,或者把int类型直接数赋给char类型变量时,只要直接数在变量所属类型的取值范围之内,就允许自动类型转换,否则需要强制类型转换。
l 把int类型的直接数赋给byte、short或char类型变量时,如果直接数位于该变量类型取值范围内,就允许直接赋值,否则必须进行强制类型转换。
l 把float型和double型直接数赋给整型变量时,必须经过强制类型的转换,而把整数型直接数赋给float型和double型变量时,允许直接赋值。
l 把double型直接数赋给float类型变量时,必须经过强制类型的转换,而把float类型直接数赋给double类型变量时,允许直接赋值。