Java基本数据类型
Java 提供了八种基本类型,包括六种数字类型
- 四个整数型:byte, short, int, long
- 两个浮点型:float, double
- 一种字符类型:char
- 一种布尔型:boolean
类型 | byte | short | int | long | float | double | char | boolean |
字节数 | 1字节 | 2字节 | 4字节 | 8字节 | 4字节 | 8字节 | 2字节 | |
位数 | 8位 | 16位 | 32位 | 64位 | 32位 | 64位 | 16位 | 1位 |
最小值 | -2^7 | -2^15 | -2^31 | -2^63 | -2^128 | -2^1024 | \u0000 | true 和 false |
最大值 | 2^7-1 | 2^15 - 1 | 2^31 - 1 | 2^63 -1 | 2^128 | 2^1024 | \uffff | |
默认值 | 0 | 0 | 0 | 0L | 0.0f | 0.0d | '\u0000' | false |
说明 | byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一 | short 数据类型也可以像 byte 那样节省空间。一个 short 变量是 int 型变量所占空间的二分之一 | 一般地整型变量默认为 int 类型 | 这种类型主要使用在需要比较大整数的系统上 | float 在储存大型浮点数组的时候可节省内存空间;浮点数不能用来表示精确的值,如货币 | 浮点数的默认类型为 double 类型;double 类型同样不能表示精确的值,如货币; | char 数据类型可以储存任何字符 | 这种类型只作为一种标志来记录 true/false 情况 |
Java数据转换
整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。
// 转换从低级到高级。
// 低 ------------------------------------> 高
byte/short/char —> int —> long —> float —> double
数据类型转换必须满足如下规则:
- 不能对 boolean 类型进行类型转换。
- 不能把对象类型转换成不相关类的对象。
- 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
- 转换过程中可能导致溢出或损失精度,例如:
int i =128;
// 因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,
//值>=128 时候就会导致溢出。
byte b = (byte) i;
System.out.println(b); // 127
- 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入,例如:
int a = (int) 23.7;
int b = (int) -45.89f;
System.out.println(a); // 23
System.out.println(b); // -45
-
自动类型转换必须满足数据类型的位数:转换前<转换后,即低->高
public class Main{
public static void main(String[] args){
// 定义一个 char 类型
char c1='a';
// char 自动类型转换为 int
int i1 = c1;
// char 自动类型转换为 int 后的值等于 97
System.out.println("char 自动类型转换为 int 后的值等于" + i1);
// 定义一个 char 类型
char c2 = 'A';
// char 类型和 int 类型计算
int i2 = c2 + 1;
// char 类型和 int 计算后的值等于 66
System.out.println("char 类型和 int 计算后的值等于" + i2);
}
}
- 强制类型转换:条件是转换的数据类型必须是兼容的。格式:
(type)value
type
是要强制类型转换后的数据类型 实例:
public class Main{
public static void main(String[] args){
int i1 = 123;
// 强制类型转换为 byte
byte b = (byte) i1;
// int 强制类型转换为 byte 后的值等于 123
System.out.println("int 强制类型转换为 byte 后的值等于" + b);
}
}
- 隐含强制类型转换
整数的默认类型是 int。
小数默认是 double 类型浮点型,在定义 float 类型时必须在数字后面跟上 F
或者 f
。
lintcode java教程: