zl程序教程

您现在的位置是:首页 >  Java

当前栏目

Java基础系列(10)- 类型转换

2023-02-18 16:24:04 时间

类型转换

由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换。运算中,不同类型的数据先转换为同一类型,然后进行运算。

低 -------------------------------------------------------------- 高

byte,short,char ---> int ---> long ---> float ---> double

类型转换常见有两种:强制转换和自动转换

  • 由低到高自动转换
  • 由高到低需要强制转换

强制转换

// 强制转换   由高到低    (类型)变量名 
int i = 128;
byte b = (byte) i; // 内存溢出,byte型最大是127

System.out.println(i);
System.out.println(b);

自动转换

// 自动转换 低到高
int a = 13;
double a1 = a;
System.out.println("=============↓↓↓↓自动转换↓↓↓↓=================");
System.out.println(a);
System.out.println(a1);

注意点

/*
注意点
1.不能对布尔类型进行转换
2.不能把对象类型转换为不相干的类型
3.在把高容量转换到低容量的时候,强制转换
4.转换的时候可能出现内存溢出,或者精度问题
*/

System.out.println("=============↓↓↓↓高到低精度损失↓↓↓↓=================");
System.out.println((int)23.7);
System.out.println((int)-45.85f);

// JDK7以后新特性,数字之间可以用下划线分隔,便于书写
// 计算时要注意内存溢出问题,如下
System.out.println("=============↓↓↓↓注意点:内存溢出↓↓↓↓=================");
int money = 10_0000_0000;
int year = 20;
int total = money * year;
System.out.println(total); // 内存溢出
System.out.println((long)total); // 强转为long依旧不行,说明溢出在int 给total之前就已经发生了

long total1=money * (long)year;
System.out.println(total1);