八种基本类型
类型名称 | 字节空间 | 应用场景 |
---|---|---|
byte | 1Byte | 字节数据 |
short | 2Byte | 短整数 |
int | 4Byte | 普通整数 |
long | 8Byte | 长整数 |
float | 4Byte | 普通整数点数 |
double | 8Byte | 双精度浮点数 |
char | 2Byte | 一个字符 |
boolean | 1Byte | 逻辑变量(true flase) |
转换时的高低顺序
高容量到低容量需要强制转换
public class Demo003 {
public static void main(String[] args) {
int i=128;
byte b=(byte)i;//高到底需进行强制转换
System.out.println(i);
System.out.println(b);
结果:
低容量到高容量自然转换
int i1=128;
double d=i1;//低到高进行自然转换
System.out.println(i1);
System.out.println(d);
System.out.println("=============");
结果:
/* 注意点: 1.不能对布尔值进行转换 2.不能把对象类型转换成不相干的类型 3.高容量转换成低容量时是强制转换 4.转换时可能出现溢出和精度问题 */
精度问题
System.out.println("=========");
System.out.println((int)23.7);//23 精度出错
System.out.println((int)45.78f);//45 精度出错
结果:
数值溢出问题
public class Demo4 {
public static void main(String[] args) {
//操作数比较大的时候注意溢出问题
//JDK7新功能 数值过大时可用下划线隔开
int money=10_0000_0000;
System.out.println(money);
System.out.println("===========");
int money1=10_0000_0000;
int years=20;
int total=money1*years;
System.out.println(total);//结果-1474836480 原因是数值溢出
结果:
转换成容量更大的long类型:
long total1=money1*years;
System.out.println(total1);//结果仍然是-1474836480 原因是转换之前已经出了问题,所以转换后依然是错误答案
System.out.println("=============");
结果:
在转换前定义
long total2=money1*((long)years);
System.out.println(total2);//结果正确
long total3=((long)money1)*((long)years);
System.out.println(total3);
结果: