参考资料
[1]. 疯狂Java讲义(第三版) 李刚
整型
基本使用
byte
一个byte类型整数在内存里占8位,默认值是 0;
// 最大值,即2的7次方减1
byte max = 127;
// 最小值,即2的7次方
byte min = -128;
short
一个short类型整数在内存里占16位,默认值是 0;
// 最大值,即2的15次方减1
short max = 32767;
// 最小值,即2的15次方
short min = -32768;
int
一个int类型整数在内存里占32位,默认值是 0;
// 最大值,即2的31次方减1
int max = 2147483647;
// 最小值,即2的31次方
int min = -2147483648;
long
一个long类型整数在内存里占64位,默认值是 0L;
// 最大值,即2的63次方减1
long max = 9223372036854775807L;
// 最小值,即2的63次方
long min = -9223372036854775808L;
其他进制的使用
二进制
以0b或0B开头
int v1 = 0b11010100;
int v1 = 0B11010100;
// 因为int类型是32位,所以最高位是符号位,1为负数,0为整数
int binVal3 = 0B10000000000000000000000000000011;
/**
定义一个32位的二进制数,最高位是1。
但由于数值后添加了L后缀,因此该整数的实际占64位,第32位的1不是符号位。
因此binVal5的值等于2的31次方 + 2 + 1
*/
long binVal5 = 0B10000000000000000000000000000011L;
八进制
以0开头
int v1 = 013;
十六进制
以0x或0X开头
int v2 = 0x13;
int v2 = 0xaF;
字符型
char
基本使用
字符型通常用于表示单个的字符,字符型值必须使用单引号(’)括起来。Java语言使用16位的Unicode字符集作为编码方式;
字符型有三种表示形式:
直接通过单个字符来指定字符型值
char c1 = '是';
通过转义字符表示特殊字符型值
char c2 = '\r'
直接使用Unicode值来表示字符型值
字符型值也可以采用十六进制编码的方式来表示,范围是'\u0000'
到'\uFFFF'
,一共可以表示65535个字符,其中前256个(\u0000
到 \u00FF
)字符和ASCII码中的字符完全重合。
char c3 = '\u9999';
拓展使用
把char变量当成int类型变量来使用
// 声明
// “是”的数值是26159
char c1 = '是';
char c2 = '是';
// 输出52318
System.out.println(c1+c2);
把int类型赋值给char类型变量,会自动转换为相应的字符串
// 字符串“是”
char c1 = 26159;
浮点型
基本使用
float和double
一个float类型的数值占4字节、32位,一个double类型的数值占8字节、64位
十进制形式
// 5.12
float f1 = 5.12f;
// 512
float f2 = 512.0f;
// 0.512
float f3 = .512f;
// 5.12
double d1 = 5.12;
// 512
double d2 = 512.0;
// 0.512
double d3 = .512;
科学计数法形式
// 510.0,5.12 乘以10的2次方
float f1 = 5.1e2f;
// 510.0,5.12 乘以10的2次方
float f2 = 5.1E2f;
// 510.0,5.12 乘以10的2次方
double f1 = 5.1e2;
// 510.0,5.12 乘以10的2次方
double f2 = 5.1E2;
获取一些特殊的数
// 使用正数除以0将得到正无穷大,Infinity
10.0f/0
// 使用负数除以0将得到负无穷大,-Infinity
-10.0f/0
// 0.0除以0.0会得到非数,NaN
0.0/0.0/
// 对负数开方会得到非数,NaN
Math.sqrt(-1);
在数值中使用下划线分隔
java 7引入了一个新功能,可以使用下划线分隔数值
// 分隔前
int binVal3 = 0B10000000000000000000000000000011;
// 分隔后
int binVal3 = 0B10_000_000_000_000_000_000_000_000_000_011;
布尔型
布尔型只有一个boolean类型,用于表示逻辑上的“真”或“假”。
// 定义b1的值为true
boolean b1 = true;
// 定义b2的值为false
boolean b2 = false;
使用boolean类型的值和字符串进行连接运算,则boolean类型的值将会自动转换成字符串
String str = true + "";
直接量
直接量的类型
能指定直接量的通常是基本类型、字符串类型、null类型。
直接量支持数值之间的自动类型转换,因此允许把一个数值直接赋给另一种类型的变量,这种赋值必须是系统所支持的自动类型转换。
// 把int类型数值赋值给long类型
long s1 = 12122;
String类型的直接量不能赋值给其他类型的变量,null类型的直接量可以直接赋给任何引用类型的变量,包括String类型。boolean类型的直接量只能赋给boolean类型的变量,不能赋值给其他类型。
字符串的直接量,当程序第一次使用某个字符串直接量时,Java会使用常量池(constant pool)来缓存该字符串直接量,如果程序后面的部分需要用到该字符串直接量时,Java会直接使用常量池中的字符串常量。