20240107-类型转换
1. 自动类型转换
不损失数据精度的前提下,可自动完成变量的类型转换;不损失数据精度指不将超出变量可表示范围的值赋给该变量。
2.强制类型转换
若出现精度损失,java不会自动完成类型转换,需强制进行,见下代码的第8行,强制将long类型转为int类型。强制转换的写法除了下面,还可以是(int)c / (int)a;
public class draft3
{public static void main(String[]args){short a=2;int b=14;long c=244;int d=(int)c/a;System.out.println(d);}
}
3. 表达式的类型转化
java是一个很有弹性的程序设计语言,遵循“数据不流失”的大前提,就能进行不同类型的数据转换,以下为转换规则:
1、占字节少的数据类型向占字节多的数据类型转换(大鱼吃小鱼),如float➡double,short➡int➡long(64位)。
2、字符类型转为int类型。
3、int类型转为float类型。
4、表达式中若有某个操作数为double类型,则其他操作数也转为double类型。
5、boolean不能转为其他类型。
见下面代码中的11、12、17行,11行的表达式计算过程中自动完成了不同类型的数据转换,都转换成了double类型,12行创立了一个double数组,其实是进行了强制类型转换,再进行17行的表达式运算,与11行的运算结果是一样的。
public class transfer
{public static void main(String[] args){char ch='a';short a=-2;int b=3;long c=1000;float d=1.2f;double e=2.34;System.out.println(ch/a-c/b+e/d);double[] demo={ch,a,b,c,d,e};for(int i=0;i<demo.length;i++){System.out.println(demo[i]);}System.out.println(ch/a-c/b+e/d);}
}
/*输出结果
-379.05000007748606
97.0
-2.0
3.0
1000.0
1.2000000476837158
2.34
-379.05000007748606*/