Java的基本数据类型及其封装类
Java的基本数据类型及其封装类
一、8种基本数据类型
二、基本数据类型的包装类及大小
三、基本数据类型和封装类的区别
- 定义不同。封装类是对象,基本数据类型不是;
- 使用方式不同。封装类需要先new初始化,再通过JVM根据具体情况实例化后赋予定值,基本数据类型可以直接赋值,某些集合类型必须使用包装类,不能使用基本数据类型,如ArrayList<Integer>
- 初始值不同。包装类初始值默认为null,基本数据类型根据类型不同而值不同;
- 存储方式和位置不用。封装类分拆引用和实例,引用存储在栈(stack),具体实例存储在堆(heap),基本数据类型存储在栈中(stack)。
四、为什么需要包装类
- 包装类封装在java.lang包中;
- 基本数据类型没有toString()方法;
- 编码过程中只接收对象的情况,比如List中只能存入对象,不能存入基本数据类型;比如一个方法的参数是Object时,不能传入基本数据类型,但可以传入对应的包装类; 比如泛型等等。
五、表现形式(具体如上表)
- 整数型有三种表现形式。分别是十进制、八进制(以0开头)、十六进制(以0X或者0x开头);
- 对于long型的数值,如果值大于int型数值最大值或者小于int型数值的最小值时,应该在数值的末尾加上L或者l(小写的L),来表示该数值是long型的。如long num=2147483650L;
- 默认情况下,Java中的小数都是double型的,若要声明一个小数是float型的,则需要在数值的末尾加上F或者f,注意,必须要加F或者f,否则会出错。如float num=12.34F;
- char ch=’a’;和char ch=97;这两个式子等价,其中97是字母a在Unicode表中的排序位置,取值范围为0~65535(十进制),也即0x0000~0xffff(十六进制);
- Unicode编码表中共有65535个字符,涵盖了几乎所有国家的所有语言所涉及的符号,各个符号在Unicode表中的位置依次对应于0x0000~0xffff。可以直接使用‘字符’或者字符在Unicode表中的位置表示某个字符,这两种表示方式是等价的;
- int型数值和char型数值之间可以进行类型转换,int赋值为Unicode表中的排序位置的数值;
- Java中还有一些转义字符,转义字符是以反斜线’\’开头,后跟一个或多个字符。转义字符具有特定的含义,不同于字符原有的意义。
小结:关于char基本数据类型
- char型变量可以被赋值成单引号括住的单个字符(字符可以为Unicode表中的任意一个字符);
- char型变量可以被赋值成Unicode表中的字符所对应位置下标值;
- char型变量可以被赋值成转义字符。
六、总结
每个包装类的对象可以封装一个相应的基本类型的数据,并提供了其它一些有用的方法。包装类对象一经创建,其内容(所封装的基本类型数据值)不可改变(类似于String类)