推荐学习专栏:Java 编程进阶之路【从入门到精通】
前面说到,程序运行时产生的临时数据我们存储在被称为变量的内存单元里,而变量的创建,就是在内存中分配一块内存空间。
为什么要定义不同的数据类型呢?当我们预先定义好数据类型后,内存管理系统在给变量分配内存空间时,就可以根据变量的数据类型为变量分配合适的存储空间,分配的空间只能用来储存该类型数据。总的来说,给变量定义数据类型可以让内存空间得到充分的利用。
Java中数据类型一共分为两大类,一类是基本数据类型,另一类叫做引用数据类型。其中基本数据类型一共 8 种。
在基本数据类型中,每一个类型都定义了占用存储空间的字节数,我们可以根据现实中的意义,数据所占用内存的大小等选择合适的数据类型,达到充分利用内存空间的目的。
Java中定义了 8 个基本数据类型,分别是:
其中前四种是数值型变量,现在对这 8 中数据类型做一个详解:
byte:
short:
int:
long:
float:
double:
boolean:
char:
\u0000
(十进制等效值为 0);\uffff
(即为 65535);在学习基本数据类型时,不需要刻意的记背,在后面的练习中,由于数据类型的概念会一直用到,所以会慢慢熟练的掌握,现在要学习的就是了解每个数据类型,以及表示的数据范围,思考不同数据类型的应用场景。
数据类型的最大最小值以常量的形式定义在对应的包装类中,例如整形 int
的包装类:java.lang.Integer
。
public class Test {
public static void main(String[] args) {
System.out.println("整型 占用的二进制位:"+ Integer.SIZE);
System.out.println("最大值:"+Integer.MAX_VALUE);
System.out.println("最小值:"+Integer.MIN_VALUE);
}
}
运行结果:
整型 占用的二进制位:32
最大值:2147483647
最小值:-2147483648
每个基本数据类型都预先定义了一个默认值,上面的介绍中已经给出。
引用数据类型的变量非常类似与C/C++中的指针,引用类型指向一个对象,这时指向对象的这个变量就是引用变量。引用类型的变量的默认值都是 NULL。
Java是一门面向对象的编程语言,后面我们要用到的类,接口,数组
都是引用数据类型。
Student stu = new Student();
如上,在创建一个 Student
对象的时候,就是定义了一个名为 stu
的对象变量指向这个 Student 的对象。
整型、实型、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。
转换时,必须满足转换前的数据类型的位数要低于转换后的数据类型(byte —> short —> char—> int —> long—> float —> double
),例如: short 数据类型的位数为16位,就可以自动转换位数为32的 int 类型。如下:
public class Test{
public static void main(String[] args){
char c1='a';//定义一个char类型
int i1 = c1;//char自动类型转换为int
System.out.println("char自动类型转换为int后的值等于"+i1);
}
}
运行结果:
char 自动类型转换为 int 后的值等于97
当我们要进行从高级转换到低级时,就要进行强制类型转换。转换的条件是转换的数据类型必须是兼容的。如下:
public class Test{
public static void main(String[] args){
int i = 123;
byte b = (byte)i;//强制类型转换为byte
System.out.println("int强制类型转换为byte后的值等于"+b);
}
}
运行结果:
int强制类型转换为byte后的值等于123
数据类型转换应该注意这些问题:
不能对 boolean 类型进行类型转换。
不能把对象类型转换成不相关类的对象。
在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
转换过程中可能导致溢出或损失精度。
欢迎订阅学习Java编程进阶之路专栏,专栏文章持续更新!