数据类型
- Java中数据类型有两种:
- 基本数据类型
- 整型
- 字节型(byte)
- 1B = 8 bit
- 表示范围: -128 ~ 127
- 短整型(short)
- 2字节
- 表示范围: -2^15 ~ 2^15-1
- 整型(int)
- 4字节
- 表示范围:-2^31 ~ 2^31-1
- 长整型(long)
- 8字节
- -2^61 ~ 2^63-1
- 字节型(byte)
- 整型
- 基本数据类型
long money = 32L
//或者
long money = 32l
* **默认声明整型都用int**
* **如果数值特别大则使用long**
* 浮点型
* 单精度浮点型(float)
* 占用存储空间:4字节
* 范围:-3.403E38 ~ 3.403E38
float price = 43.5F
//或者
float price = 43.5f
* 双精度浮点型(double)
* 占用存储空间:8字节
* 范围:-1.798E308 ~ 1.798E308
* 精度是float的两倍
* **浮点型常量默认是double类型**
* 字符型(char)
* char类型是可以进行计算的
* 因为每个char类型的都有对应的ASCII码,可以转换成数值
//使用''括起来的单个字符
char c = 'a'
char ch = '9'
//使用\uXXXX表示
//XXXX代表十六进制
char ch = '\u000a'
\\'\u000a'是换行
//使用转义字符来表示的
char ch = '\n'
//'\n'是换行
* 布尔型(boolean)
* true
* false
基本数据类型变量间的转换
- 自动类型提升
- 规则:将范围小的类型自动提升为范围大的类型
byte,char,short ——> int ——> long ——> float ——> double
int x = 'C' //char类型 提升为 int类型
double number = 19; // int类型 提升为 double类型
long num = 12345; //int类型 提升为 double类型
long num1 = 12345678999987654L;//如果等式右边的值
* 当范围小的数据类型与范围大的数据类型变量一起混合运算时
int x = 1;
byte y =2;
double z = 3.0;
double sum = x + y + z;
* 当 byte、short、char数据类型的变量进行算数运算时,按照int类型处理
byte b1 = 1;
byte b2 = 2;
byte b3 = b1 + b2;//报错
char ch1 = 'A';
char ch2 = 'B';
int i = ch1 + ch2;
System.out.println(ch1 + ch2);//113
- 强制类型转换
- 范围大的数进行强制转换为范围小的数时,可能会损失精度或者溢出
int x = (int)1.2;//损失精度
double x = 1.2;
int y = (int) x;//损失精度
int x = 300;
byte y = byte(x);//溢出
* 当某个值提升数据的时候也可以使用强制类型转换,但一般是省略的
int x = 1;
int y = 2;
double z = (double) x + y;
* 引用数据类型
* 数组([])
* 类(class)
* 接口(interface)
* 枚举(enum)
* 注解(@interface)
* 记录(record)
* 字符串类型(Stirng)
String str = 'abc';