Java数据类型详细解析
-
基本数据类型
-
整数类型
Java语言中描述整数数据的类型有:byte、short、int、long,荐int类型
- 其中byte类型在内存空间中占1个字节,表示范围是:-2^7 ~ 2^7-1.
- 其中short类型在内存空间中占2个字节,表示范围是:-2^15 ~ 2^15-1.
- 其中int类型在内存空间中占4个字节,表示范围是:-2^31 ~ 2^31-1. •
- 其中long类型在内存空间中占8个字节,表示范围是:-2^63 ~ 2^63-1.
- 注意事项
- 在Java程序中直接写出的整数数据叫做直接量/字面值/常量,默认为int类 型。若希望表达更大的直接量,则在直接量的后面加上l或者L,推荐L。
- 声明一个long 类型的变量初始化比long类型还大 则使用java.math.BigInteger
代码演示
/* 编程实现整数类型的使用 */ public class IntTest{ public static void main(String[] args){ // 1. 声明一个byte 类型的便令并初始化 byte b1 = 25; // 2. 打印变量的数值 System.out.println(b1); System.out.println("-------------------"); // byte b1 = 128; 错误: 不兼容的类型: 从int转换到short可能会有损失 short s1 = 128; // short s1 = 250250; 错误: 不兼容的类型: 从int转换到short可能会有损失 System.out.println(s1); System.out.println("-------------------"); int i1 = 250250; // int i1 = 2502505006; 错误: 过大的整数: 2502505006 // int i1 = 2502505006L; 错误: 不兼容的类型: 从long转换到int可能会有损失 System.out.println(i1); long l1 = 2502505006L; System.out.println("-------------------"); System.out.println(l1); // 声明一个long 类型的变量初始化比long类型还大 则使用java.math.BigInteger // 笔试题 请问线面代码是否有错吴?若有请指出并说明原因 // int i2 = 25; // byte b2 = i2; // System.out.println("b2" = b2); // 错误: 不兼容的类型: 从int转换到byte可能会有损失 } }
-
浮点类型(小数)
Java语言中用于描述小数数据的类型:float 和 double,推荐double类型
- 其中float类型在内存空间占4个字节,叫做单精度浮点数,可以表示7位 有效数字,范围:-3.403E38~3.403E38。
- 其中double类型在内存空间占8个字节,叫做双精度浮点数,可以表示15 位有效数字,范围:-1.798E308~1.798E308。
- 注意事项
- Java程序中直接写出的小数数据叫做直接量,默认为double类型,若希望 表达float类型的直接量,则需要在直接量的后面加上f或者F.
- 有效位表示超过后的数字不在精确范围之内 数值会出现偏差
- 如果希望金钱运算则借助 java.math.BigDecimal 类型
代码演示
/* 编程实现浮点数类型的使用 */ public class DoubleTest{ public static void main(String[] args){ // 1.声明一个float 类型的变量并初始化 // float f1 = 3.1415926; 错误: 不兼容的类型: 从double转换到float可能会有损失 float f1 = 3.1415926F; // 2. 打印变量的数值 System.out.println(f1); // 3.1415925 默认七位有效数字 System.out.println("---------------------"); Double d1 = 3.1415926; // 3.1415926 默认15位有效数字 System.out.println(d1); // 4. 笔试考点 System.out.println(0.1 + 0.2); //0.30000000000000004 运算是可能产生误差 如果希望金钱运算则借助 java.math.BigDecimal 类型 } }
-
布尔类型
-
Java语言中用于描述真假信息类型有:boolean,数值只有:true 和 false。
-
布尔类型在内存空间中所占大小没有明确的规定,可以认为是1个字节。
-
代码演示
/* 编程实现布尔类型的使用 */ public class BooleanTest{ public static void main(String[] args){ // 1.声明一个布尔类型的变量 boolean b1 = true; // boolean b1; // 错误: 可能尚未初始化变量b1 // 2.打印变量的数值 b1 = false; System.out.println(b1); // 注意 在java中boolean 只有true 和 false // b1 = 1; 错误: 不兼容的类型: int无法转换为boolean } }
-
-
字符类型
-
Java语言中用于描述单个字符的数据类型:char类型。
-
其中char类型在内存空间中占2个字节并且没有符号位,表示的范围是: 0 ~ 65535,
-
注意事项
由于现实生活中很少有数据能够被单个字符描述,因此以后 的开发中更多的使用由多个字符串起来组成的字符串,使用String类型加 以描述,
-
代码演示
/* 编程实现字符类型的使用 */ public class CharTest{ public static void main(String[] args){ // 1.声明一个 char 类型的变量并初始化 char c1 = 'a'; // 2. 打印变量的数值 System.out.println(c1); System.out.println("对应的编号是" + (int)c1); // 表示的是char类型的c1强制转化为int类型并打印 System.out.println("对应的编号是" + 'a'); System.out.println("--------------"); char c2 = 98; System.out.println(c2); System.out.println("对应的编号是" + (int)c2); } }
-
-
ASCII
计算机的底层只识别0和1组成的二进制序列,对于字符’a’这样的图案来 说不满足该规则,因此该数据无法直接在计算机中存储,但现实生活中 存在这样的图案数据需要计算机存储,为了使得该数据能够存储起来就 可以给该数据指定一个编号,然后将编号存储起来即可,该编号就叫做 ASCII。
-
ASCII 表
-
要求掌握的ASCII有:
‘0’ - 48 ‘A’ - 65 ‘a’ - 97 空格 - 32 换行符 - 10
-
-
-
引用数据类型
数组、类、接口、枚举、标注
-
基本数据类型之间的转换
-
自动类型转换
其中自动类型转换主要指从小类型到大类型之间的转换
-
转换规则
-
代码演示
/* 自动类型转化 */ public class AutoTransformTest{ public static void main(String[] args) { // 1.定义两个不同类型的变量 并初始化 byte b1 = 10; short s1 = 20; // 2. 打印两个变量的值 System.out.println("b1 = " + b1); // b1 = 10 System.out.println("si = " + s1); // si = 20 System.out.println("----------------------"); // 3.自动数据类型转换 s1 = b1; System.out.println("b1 = " + b1); // b1 = 10 System.out.println("si = " + s1); // si = 10 } }
-
-
强制类型转换(慎用)
其中强制类型转换主要指从大类型到小类型之间的转换
-
语法格式
目标类型 变量名 = (目标类型)源类型变量名;
-
代码演示
public class TransformTest{ public static void main(String[] args) { // 1.定义两个不同类型的变量 并初始化 byte b1 = 10; short s1 = 20; // 2.表示将s1 的数值给变量 b1 ,并覆盖b1原有的数值 相当于从short 类型到byte 类型的转换 小到大, 强制转换 // b1 = s1; 错误: 不兼容的类型: 从short转换到byte可能会有损失 b1 = (byte) s1; System.out.println("b1 = " + b1); // b1 = 10 System.out.println("si = " + s1); // si = 10 System.out.println("----------------------"); // 3.数据丢失问题 s1 = 128; b1 = (byte) s1; System.out.println("b1 = " + b1); // b1 = -128 System.out.println("si = " + s1); // si = 128 } }
-
-