千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 什么是java强制类型转换?

什么是java强制类型转换?

来源:千锋教育
发布人:wjy
时间: 2023-03-21 11:05:00 1679367900

  什么是java强制类型转换?

  1. 概念

  所谓的强制类型转换,其实是自动类型转换的逆过程,在数据类型兼容的情况下,将容量大的数据类型转换为容量小的数据类型。强制类型转换也被称为显式类型转换,需要我们显式地进行转换操作,必须在=等号后面的类型前加上强制()转换符,并且有可能会造成数据精度的降低或溢出。

  2. 转换规律

  强制类型转换时,也具有一定的规律,但是这个规律比较简单。

  1. 进行转换的数据类型必须是兼容的;

  2. 通常,字符串不能直接转换为基本类型;

  3. 通过基本类型对应的包装类,可以把字符串类型的数值转换成对应的基本类型。如String s = “100”; int i = Integer.parseInt(s);

  4. boolean类型不可以转换成其他数据类型。

  为了让大家更好地理解这些规律,还是给大家设计一些代码案例,往下看吧。

  3. 案例

  强制类型转换格式:(type)value其中type是要强制类型转换后的数据类型。

  public class TypeDemo04 { public static void main(String[] args) { // 强制类型转换:大转小。 double d1 = 100; // double-->int,大转小,d1的类型为double,i的类型为int,需要强制转换,类型前添加(要转换成的类型)。 int i = (int) d1; System.out.println("i=" + i); //int-->char,大转小 int j = 97; char c1 = (char) j; System.out.println("c1="+c1); //int-->byte,大转小,精度可能会丢失 int k =128; //byte类型是8位,最大值为127,当int强制转换为byte类型时,128就会导致溢出变成-128。 byte b = (byte)k; System.out.println("b="+b);//-128 //表达式中进行类型转换 double d2 = 10; double d3 = 12; int m = (int) (d2 + d3); System.out.println("m="+m); //double+int,小类型和大类型进行计算,会进行类型提升,最终的结果变成大类型。 //Type mismatch: cannot convert from double to int //int n = d2 + k; int n = (int)d2 + k; System.out.println("n="+n); //浮点数到整数的转换,是通过舍弃小数得到的,而不是四舍五入 int x=(int)55.9;//55 int y=(int)-28.89f; System.out.println("x="+x+",y="+y);//-28 }}

  大家要注意:

  类型转换时可能会导致溢出或精度的丢失,另外浮点数到整数的转换是通过舍弃小数得到的,而不是四舍五入。我们可以看下图的执行结果:

什么是java强制类型转换1

  4. 类型提升补充说明

  在上面强制转换时,如果涉及到不同数据类型之间的数学运算,比如+、-、*、/等操作,大家要注意:小类型的数据和大类型的数据进行计算时,会自动进行类型提升,最终的结果变成大类型!关于这一块的内容,大家暂时先了解这么多,后面讲运算符时我再细说。

  public class TypeDemo04 { public static void main(String[] args) { // 强制类型转换:大转小 //类型提升 //double+int,小类型和大类型进行计算,会进行类型提升,最终的结果变成大类型。 //Type mismatch: cannot convert from double to int //int m = d2 + k; int m = (int)d2 + k; System.out.println("m="+m); }}

  类型自动提升后,如果不进行强制类型转换,也是会出现如下异常:

什么是java强制类型转换2

  5.java强制类型转换为什么是(数据类型)而不是数据类型()

  Java中的强制类型转换使用的语法是"(数据类型) 值",而不是"值 数据类型()",这是因为在Java中,强制类型转换是一种运算符,而不是一个函数调用。

  运算符是一种操作符,它把一个或多个值作为输入,并生成一个输出。在Java中,强制类型转换运算符需要一个数据类型作为输入,并且需要将一个值强制转换为该数据类型。因此,强制类型转换运算符的语法为"(数据类型) 值"。

  相反,如果使用"值 数据类型()"的语法,这将被解释为一个函数调用,其中"值"是函数的参数,并且"数据类型()"被解释为函数名。但是,Java中并没有名为"数据类型()"的函数,因此使用此语法将会导致语法错误。

  总之,使用"(数据类型) 值"的语法是Java中强制类型转换的正确方式。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT