全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

什么是java强制类型转换?

发布时间:2023-03-21 11:05:00
发布人:wjy

  什么是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中强制类型转换的正确方式。

相关文章

python写入json文件?

python写入json文件?

2023-11-02
vscode设置tab为4个空格?

vscode设置tab为4个空格?

2023-11-02
更新pycharm?

更新pycharm?

2023-11-02
anaconda每次打开都要安装?

anaconda每次打开都要安装?

2023-11-02

最新文章

武汉新媒体行业公司排名

武汉新媒体行业公司排名

2023-11-01
武汉新媒体就业现状好吗

武汉新媒体就业现状好吗

2023-11-01
武汉全媒体行业发展现状及趋势

武汉全媒体行业发展现状及趋势

2023-10-31
武汉全媒体现状

武汉全媒体现状

2023-10-31
在线咨询 免费试学 教程领取