java学习笔记——java基础02.数据类型与类型转换
数据类型与类型转换
一、八大基本数据类型
1. 整数
-
byte
-
short
-
int
-
long
long型数据后面要加L
2. 小数
-
double
-
float
float数据后面要加F
为什么Java中long后面要加L?float后面加F?-CSDN博客
3. 字符
- char 只能表示一个字符
- String 字符串,不是关键字,是引用类
4. 布尔值
- boolean
类型名称 | 关键字 | 占用内存 | 取值范围 |
---|---|---|---|
字节型 | 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 |
二、数据类型扩展
1. 进制:
- 十进制
10
- 二进制
0b10
- 八进制
010
- 十六进制
0x10
2. 浮点数扩展:
float的精度问题
最好完全避免使用浮点数进行比较
需要时使用BigDecimal 数学工具类表示
3. 字符拓展:
所有的字符本质还是数字
char c1 = 'a';
System.out.println((int)c1); //强制转换
char c1 = '\u0061';
System.out.println(c1);
编码 Unicode 2字节 0-65536
转义字符\u0061....(十六进制)
4. 布尔值扩展:
boolean flag = true;
if(flag==true){
System.out.println("ok");
}
if(flag){
System.out.println("ok");
}
三、类型转换
容量低->高:
byte,short,char->int->long->float->double
1. 强制转换(高->低)
(类型)变量名,如:
int i = 10;
byte a = (byte)i; //强制转化int到byte
需要注意的是内存溢出的问题
int i = 128;
byte b = (byte)i; //byte只能表示-128~127范围内的数,此处内存溢出
2. 自动转换(低->高)
char c1 = 'a';
int a1 = 1;
System.out.println(c1+a1); //'a'自动转换为int(编码97)
注意:
-
不能对布尔值进行转换
-
不能把对象类型转换为不相干的类型
-
在把高容量转换到低容量的时候是强制转换
-
转换的时候可能存在的内存溢出,或者精度问题
-
操作比较大的数的时候,注意溢出问题
-
JDK7新特性,数字之间可以用下划线分割,下划线不会被输出
int money = 10_0000_0000; System.out.println(money);