Java 的基本数据类型(快速掌握)
一.整型
8种基本数据类型中,其中有4种整型,定义方法如下
int 变量名 = 初始值; //基本语法格式 int num = 10; // 定义一个整型变量 System.out.println(num) ; long 变量名 = 初始值; long num = 10L; // 定义一个长整型变量, 长整型数值有一个后缀L或l. System.out.println(num) ; short 变量名 = 初始值; short value = 0; System.out.println(value); byte 变量名 = 初始值; byte value = 0; System.out.println(value);
注意:
1.java中定义长整型变量的时候,需要加上后缀L或l 2.java中没有任何无符号(unsigned)形式的int,long,short或byte类型
错误 :
1.Java中每一种数据类型赋值时,不能超过其范围否则 会报错(例如,byte 不能赋值128,int不能赋值超过21亿) 2.当定义一个局部变量的时候,java并不会自动初始化,如果没有初始化,那么我们就不能使用这个变量.
二.浮点型
Java中float和double类型的内存布局遵守 IEEE 754标准(和C语言一样),尝试使用有限的内存空间表示可能无限的小数,势必会存在一定的精度误差.
double 变量名 = 初始值; double num = 1.0; System.out.println(num) float 变量名 = 初始值; float num = 1.0f; // 写作 1.0F 也可以 System.out.println(num); //神奇代码 double num = 1.1; System.out.println(num * num) // 执行结果 1.2100000000000002
错误:
java中小数默认是双精度,定义float的时候需要加上后缀f或F,java是一种强类型语言,不允许将double直接赋值给float
三.char类型
char 变量名 = 初始值; char ch = A; char ch = 呵; System.out.println(ch);
注意:
1. Java 中使用 单引号 + 单个字母 的形式表示字符字面值. 2. 计算机中的字符本质上是一个整数. 在 C 语言中使用 ASCII 表示字符, 而 Java 中使用 Unicode 表示字符. 因此一个字符占用两个字节, 表示的字符种类更多, 包括中文.
四.boolean类型
boolean 变量名 = 初始值; boolean value = true; System.out.println(value);
注意:
1. boolean 类型的变量只有两种取值, true 表示真, false 表示假. 2. Java 的 boolean 类型和 int 不能相互转换, 不存在 1 表示 true, 0 表示 false 这样的用法. 3. boolean 类型有些 JVM 的实现是占 1 个字节, 有些是占 1 个比特位, 这个没有明确规定
补充:
java中也存在整型提升和类型转换,这里就不作详细讨论,简单写出几个代码;
类型转换:
1. 不同数字类型的变量之间赋值, 表示范围更小的类型能隐式转换成范围较大的类型. 2. 如果需要把范围大的类型赋值给范围小的, 需要强制类型转换, 但是可能精度丢失. 3. 将一个字面值常量进行赋值的时候, Java 会自动针对数字范围进行检查;(参照整型的错误总结)
整型提升:
//int和long的混合运算 int a = 10; long b = 20; int c = a + b; // 编译出错, 提示将 long 转成 int 会丢失精度 long d = a + b; // 编译通过 //byte 和 byte 的运算 byte a = 10; byte b = 20; byte c = a + b; System.out.println(c); // 编译报错 Test.java:5: 错误: 不兼容的类型: 从int转换到byte可能会有损失 byte c = a + b; ^
//正确写法 byte a = 10; byte b = 20; byte c = (byte)(a + b); System.out.println(c);
1. 不同类型的数据混合运算, 范围小的会提升成范围大的. 2. 对于 short, byte 这种比 4 个字节小的类型, 会先提升成 4 个字节的 int , 再运算.