超过int的范围会怎么样?
public class PrimaryTypes {
public static void main(String[] args) {
int bigNum = 99999999999; // 超出 int 范围,报错
long bigNum = 99999999999L;
}
}
认识二进制
十进制
每一位可以是 0 ~ 9
这10个值,到 10 进位。一百用十进制表示就是100,十就是10。
二进制
每一位可以是 0
和 1
这两个值,到 2 进位。一百用二进制表示就是1100100,十就是1010。
十六进制
每一位可以是 0 ~ F
这16个值,到 16 进位。一百用十六进制表示就是64,十就是A。
位和字节
- 一个二进制的位叫做一个bit。网络带宽中的单位,都是bit。
- 八个二进制的位,组成一个字节。硬盘等存储的单位,都是字节。
下载速度等于网络宽带除以8。
byte
是计算机中基本的衡量存储的单位,计算机在对外使用时不会用bit作为划分存储的单位。
数字的基本数据类型
整数类型
byte
占用1个 byte,值域是 -128 ~ 127
byte byteVar = 100;
System.out.println(byteVar);
short
用2个 byte,值域是 -32768 ~ 32767
short shortVar = 30000;
System.out.println(shortVar);
int
占用4个 byte,值域是 -2147483648 ~ 2147483647。JAVA中整数缺省是 int 类型
int intVar = 1000000000;
System.out.println(intVar);
long
占用8个 byte,值域是 -9223372036854774808 ~ 9223372036854774807
long longVar = 80000000000L; // 必需在最后加上字母 l/L,一般使用大写,方便辨认
System.out.println(longVar);
浮点(小数)类型
float
占用4个字节,有精度,值域复杂 ±340282346638528859811704183484516925440
System.out.println(1/3.0); // 0.3333333333333333 精度
float floatVar = 100.0000000666F; // 必需在最后加上字母 f/F
System.out.println(floatVar);
double
精度是 float 的两倍,占用8个 byte。Java 中浮点数缺省是 double 类型
double doubleVar = 100.0000000666;
System.out.println(doubleVar);
符号位
表示正负数。
布尔和字符数据类型
boolean
占用1个 byte,值域是true
,false
。
public static void main(String[] args) {
System.out.println(1<2); // true
System.out.println(1>2); // false
boolean booleanVar = true;
System.out.println(booleanVar);
}
char
占用2个 byte,值域是所有字符。
表示的是单个字符。
public static void main(String[] args) {
System.out.println("ABC"); // 字符串,由多个字符组成,用双引号
System.out.println('A'); // 一个字符,用单引号
char charVar = 'a';
System.out.println(charVar);
}
总结:
Java 中总共有 8 种基本数据类型,包括 6 种数字类型,boolean 和 char。
其中,按照范围从小到大排序是:
byte < short < int < long
float < double