Java基本类型与包装类
1、基本概念
字节的单位:byte。位的单位:bit,1byte=8bit
2、8种基本数据类型
4种整型,2种浮点类型,1种用于表示Unicode编码的字符单元的字符类型和1种用于表示真值的boolean类型。
数据类型 | 浮点型大小(占字节数,2的几次方) | 范围 | 默认值 | 包装器类型 |
byte(字节) | 8 | -128 - 127 | 0 | Byte |
shot(短整型) | 16 | -32768 - 32768 | 0 | Short |
int(整型) | 32 | -2147483648-2147483648 | 0 | Integer |
long(长整型) | 64 | -9233372036854477808-9233372036854477808 | 0 | Long |
float(浮点型) | 32 | -3.40292347E+38-3.40292347E+38 | 0.0f | Float |
double(双精度) | 64 | -1.79769313486231570E+308-1.79769313486231570E+308 | 0.0d | Double |
char(字符型) | 16 | ‘ \u0000 - u\ffff ’ | ‘\u0000 ’ | Character |
boolean(布尔型) | 1 | true/false | false | Boolean |
3、包装类
包装类即使把基本类型变成对象类型,包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。
4、包装类转换关系
基本类型 --> 包装器类
Integer obj=new Integer(10);
包装器类 --> 基本类型
int num=obj.intValue();
字符串 --> 包装器类
Integer obj=new Integer("100");
字符串 --> 基本类型
int num=Integer.parseInt("-45.36");
5、自动装包/拆包(Autoboxing/unboxing)
基本类与包装类的转换,则是装包与拆包
自动装包/拆包大大方便了基本类型数据和它们包装类地使用。
自动装包:基本类型自动转为包装类.(int >> Integer)
自动拆包:包装类自动转为基本类型.(Integer >> int)
int 是基本类型,直接存储数值
Integer是对象类,new一个对象时用一个引用指向这个对象
Java把内存划分成两种:一种是栈内存,另一种是堆内存
在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,而实际的对象是在存储堆内存中
比如
int i = 10; ----直接在栈中分配空间
Integer j = new Integr(5); ----对象是在堆内存中,而j(引用变量)是在栈内存中
在堆中分配的内存,由java虚拟机的自动垃圾回收器来管理。 因为在堆中分配空间所需的时间远大于从栈中分配存储空间