byte
short
int
long
long型数据后面要加L
double
float
float数据后面要加F
为什么Java中long后面要加L?float后面加F?-CSDN博客
类型名称 | 关键字 | 占用内存 | 取值范围 |
---|---|---|---|
字节型 | byte | 1 字节 | -128~127 |
短整型 | short | 2 字节 | -32768~32767 |
整型 | int | 4 字节 | -2147483648~2147483647 |
长整型 | long | 8 字节 | -9223372036854775808L~9223372036854775807L |
单精度浮点型 | float | 4 字节 | +/-3.4E+38F(6~7 个有效位) |
双精度浮点型 | double | 8 字节 | +/-1.8E+308 (15 个有效位) |
字符型 | char | 2 字节 | ISO 单一字符集 |
布尔型 | boolean | 1 字节 | true 或 false |
10
0b10
010
0x10
float的精度问题
最好完全避免使用浮点数进行比较
需要时使用BigDecimal 数学工具类表示
所有的字符本质还是数字
char c1 = 'a'; System.out.println((int)c1); //强制转换
char c1 = '\u0061'; System.out.println(c1);
编码 Unicode 2字节 0-65536
转义字符\u0061....(十六进制)
boolean flag = true; if(flag==true){ System.out.println("ok"); } if(flag){ System.out.println("ok"); }
容量低->高:
byte,short,char->int->long->float->double
(类型)变量名,如:
int i = 10; byte a = (byte)i; //强制转化int到byte
需要注意的是内存溢出的问题
int i = 128; byte b = (byte)i; //byte只能表示-128~127范围内的数,此处内存溢出
char c1 = 'a'; int a1 = 1; System.out.println(c1+a1); //'a'自动转换为int(编码97)
不能对布尔值进行转换
不能把对象类型转换为不相干的类型
在把高容量转换到低容量的时候是强制转换
转换的时候可能存在的内存溢出,或者精度问题
操作比较大的数的时候,注意溢出问题
JDK7新特性,数字之间可以用下划线分割,下划线不会被输出
int money = 10_0000_0000; System.out.println(money);