Ⅰ、如果你看懂了我写的文章,并实践成功,麻烦评论一个笑脸,如果实践未成功,麻烦评论其他表情,或者问题出处,以便我改正,谢谢各位大佬和朋友!
Ⅱ、您的评论是我继续写下去的动力!!!
Ⅲ、我所使用的工具为IDEA,程序都是在本工具上实践的,其他工具也可以(例:eclipse、myeclipse等);
Ⅳ、博客中所有的程序都已通过本人自己的实践,可以直接摘下来进行运行;
Ⅴ、类型转换的实例演示:
1、自动类型转换
(1)、通过编辑器输出展示的代码如下:
//自动类型转换的使用:
public class helo {
public static void main(String[] args) {
double d1=1F;
double d2=1L;
short s1=1;
short s2=10000;
System.out.println(d1);
System.out.println(d2);
System.out.println(s1);
System.out.println(s2);
}
}
(2)、展示的结果如下:
(3)、分析如下:
在Java语言中,Java编译器会自动将低精度的数字转化为高精度的;
数值精度顺序为:
double > float > long > int > short > byte;
①、在本例中short如果赋值过大就会报错;
short s2=10000000;
结果为:
由于10000000已经超过了short的定义的范围,因此在自动类型转换的情况下,是不能发生的;
2、强制类型转化
(1)、通过编辑器输出展示的代码如下:
//强制类型转换的使用:
public class helo {
public static void main(String[] args) {
short s1=1;
int n1=s1;
//int到short,精度下降,不能直接转化,因此会报错;
//short s2=n1;
short s3=(short)n1;
System.out.println(s1);
System.out.println(n1);
System.out.println(s3);
int n2=100000;
short s4=(short)n2;
System.out.println(n2);
//s4结果是 -31072,强制转换会造成精度丢失,结果不准确;
System.out.println(s4);
}
}
(2)、展示的结果如下:
(3)、分析如下:
强制类型转换也是运算符:小括号括起来的目标类型放在被转换的值前面;
①、虽然值:1都符合int型、short型的范围,但不经过强制类型转换,其结果也是错的;
short s1=1;
int n1=s1;
//int到short,精度下降,不能直接转化,因此会报错;
short s2=n1;
结果为:
强制类型转化下:
short s1=1;
int n1=s1;
short s3=(short)n1;
结果为:
②、在强制类型转换的过程中,会出现丢失精度的问题;
int n2=100000;
short s4=(short)n2;
System.out.println(n2);
//s4结果是 -31072,强制转换会造成精度丢失,结果不准确;
System.out.println(s4);
结果为:
从中可以看出:n2的值为100000,而s4的值为-31072,所以其精度不准确,为什么是负值的原因:应该是在转化为s4合适的范围时,补码的转换,使得其为负值;