在java中有两种数据类型:基本数据类型和引用数据类型。
基本数据类型也可以分为两大类:数值型、布尔型。
四种整数类型:
byte:取值范围 -128~127 8 位 (1字节)
short:取值范围 -32768 ~ 32767 16位 (2字节)
int:取值范围 -2^31~2^31-1 32 位 (4字节)
long:取值范围 -2^63~2^63-1 64位 (8字节)
两种浮点数类型:默认为double类型
float:取值范围 (+-)3.402823447E+38F 32位 (4字节)
double:取值范围 (+-)1.79769313486231570E+308 64位 (8字节)
字符类型:
char:取值范围 0~(2^16)-1 16位 (2字节)
布尔类型:默认为false
boolean: 取值范围 0/1(true false) 1位 (1字节或8字节)
引用数据类型:
类、接口类型、数组类型、枚举类型、注解类型。(此时作者接触到的引用类型只有类和数组类型,剩下的是百度搜索)
基本数据类型&引用数据类型区别在于:
(1)概念方面
基本数据类型:变量名指向具体的数值 引用数据类型:变量名指向存数据对象的内存地址。
(2)内存分配方面
基本数据类型:变量在声明之后进入方法栈java就会立刻分配给他内存空间。
引用数据类型:引用类型的变量的值存放在堆内存中,他以特殊的方法指向存放数据的内存地址,存放的是内存地址,而并不是实际的数据。
(3)作为参数传递方面
基本数据类型:变量在作为实际参数进行传递之后,自身并不会发生任何改变。
引用数据类型:变量在作为实际参数进行传递时,传递的并不是实际的数据值,而是内存地址,所以传递之后一旦经过修改,原来的数据将会被替换(等同于修改数据)。
定义的在不同范围的变量为两种不同的作用范围
实例变量(成员变量):
在类的{}内直接定义的变量,称为实例变量或成员变量。
作用范围:整个类中都可以使用。
实例变量在创建对象时会自动初始化,并有初始值(默认值)。
局部变量:
在方法中或代码块{}中定义的变量,称之为局部变量。
作用范围:只在包含它的方法或代码块内有效。
局部变量不会自动初始化,没有默认值,使用之前必须要初始化。
类型转换分为两种:自动类型转换和强制类型转换
自动类型转换:类型是小类型转换为大类型,如果一个byte类型和int类型数据计算,byte类型数据会自动转为int数据类型。
强制类型转换:类型是大类型转换为小类型,如果一个double类型和int类型数据计算,要先将double类型强转转换为int数据类型,(一般情况下不建议强转,在刚开始接触时知道有这么个操作即可,因为强转很可能会让数据损失精度)。