Java数据类型超详细示例讲解
1. Java数据类型前面说到程序运行时产生的临时数据我们存储在被称为变量的内存单元里而变量的创建就是在内存中分配一块内存空间。为什么要定义不同的数据类型呢当我们预先定义好数据类型后内存管理系统在给变量分配内存空间时就可以根据变量的数据类型为变量分配合适的存储空间分配的空间只能用来储存该类型数据。总的来说给变量定义数据类型可以让内存空间得到充分的利用。Java中数据类型一共分为两大类一类是基本数据类型另一类叫做引用数据类型。其中基本数据类型一共 8 种。2. 基本数据类型在基本数据类型中每一个类型都定义了占用存储空间的字节数我们可以根据现实中的意义数据所占用内存的大小等选择合适的数据类型达到充分利用内存空间的目的。Java中定义了 8 个基本数据类型分别是byte 字节型short 短整型int 整型long 长整形float 单精度浮点型double 双精度浮点型boolean 布尔型char 字符型其中前四种是数值型变量现在对这 8 中数据类型做一个详解bytebyte 数据类型是8位、有符号的以二进制补码表示的整数最小值是 -128-2^7最大值是 1272^7-1默认值是 0shortshort 数据类型是 16 位、有符号的以二进制补码表示的整数最小值是 -32768-2^15最大值是 327672^15 - 1默认值是 0intint 数据类型是32位、有符号的以二进制补码表示的整数最小值是 -2,147,483,648-2^31最大值是 2,147,483,6472^31 - 1默认值是 0 longlong 数据类型是 64 位、有符号的以二进制补码表示的整数最小值是 -9,223,372,036,854,775,808-2^63最大值是 9,223,372,036,854,775,8072^63 -1默认值是 0Lfloatfloat 数据类型是单精度、32位、符合IEEE 754标准的浮点数float 在储存大型浮点数组的时候可节省内存空间默认值是 0.0f浮点数不能用来表示精确的值如货币doubledouble 数据类型是双精度、64 位、符合 IEEE 754 标准的浮点数浮点数的默认类型为 double 类型double类型同样不能表示精确的值如货币默认值是 0.0dbooleanboolean数据类型表示一位的信息只有两个取值true 和 false这种类型只作为一种标志来记录 true/false 情况默认值是 falsecharchar 类型是一个单一的 16 位 Unicode 字符最小值是\u0000十进制等效值为 0最大值是\uffff即为 65535char 数据类型可以储存任何字符在学习基本数据类型时不需要刻意的记背在后面的练习中由于数据类型的概念会一直用到所以会慢慢熟练的掌握现在要学习的就是了解每个数据类型以及表示的数据范围思考不同数据类型的应用场景。数据类型的最大最小值以常量的形式定义在对应的包装类中例如整形int的包装类java.lang.Integer。1234567publicclassTest {publicstaticvoidmain(String[] args) {System.out.println(整型 占用的二进制位: Integer.SIZE);System.out.println(最大值:Integer.MAX_VALUE);System.out.println(最小值:Integer.MIN_VALUE);}}运行结果整型 占用的二进制位:32最大值:2147483647最小值:-2147483648每个基本数据类型都预先定义了一个默认值上面的介绍中已经给出。3. 引用数据类型引用数据类型的变量非常类似与C/C中的指针引用类型指向一个对象这时指向对象的这个变量就是引用变量。引用类型的变量的默认值都是 NULL。Java是一门面向对象的编程语言后面我们要用到的类接口数组都是引用数据类型。1Student stu newStudent();如上在创建一个Student对象的时候就是定义了一个名为stu的对象变量指向这个 Student 的对象。4. 类型转换4.1 自动类型转换整型、实型、字符型数据可以混合运算。运算中不同类型的数据先转化为同一类型然后进行运算。转换时必须满足转换前的数据类型的位数要低于转换后的数据类型(byte — short — char— int — long— float — double)例如: short 数据类型的位数为16位就可以自动转换位数为32的 int 类型。如下1234567publicclassTest{publicstaticvoidmain(String[] args){charc1a;//定义一个char类型inti1 c1;//char自动类型转换为intSystem.out.println(char自动类型转换为int后的值等于i1);}}运行结果char 自动类型转换为 int 后的值等于974.2 强制类型转换当我们要进行从高级转换到低级时就要进行强制类型转换。转换的条件是转换的数据类型必须是兼容的。如下1234567publicclassTest{publicstaticvoidmain(String[] args){inti 123;byteb (byte)i;//强制类型转换为byteSystem.out.println(int强制类型转换为byte后的值等于b);}}运行结果int强制类型转换为byte后的值等于123数据类型转换应该注意这些问题不能对 boolean 类型进行类型转换。不能把对象类型转换成不相关类的对象。在把容量大的类型转换为容量小的类型时必须使用强制类型转换。转换过程中可能导致溢出或损失精度。