[Java基础]之 数据类型转换

数据类型转换存在的意义

数据类型转换,在实际的应用开发中,常常会对不同类型的数字类型进行计算,所以就用到了数据转换。一方面,使用算术计算符对数字进行运算时,系统在适当的时候回进行自动转换;另一放方面,程序开发人员还可以强制进行数据转换,这个操作有时候灰出现精度丢失等问题

数据转换的依据:取决数据的取值范围

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

char->

【Java基础】之 数据类型转换

注意:

1.boolean 类型不能够参与类型转换
2.char 和byte/short 只有交集关系,没有子集关系

1.自动类型转换

将小类型的数据转换为大类型的数据,系统会自动转换

  // 由于右边int类型的数值正好在byte范围之内,所以系统帮我们做了转换

  byte by2 = 127;

  System.out.println(by2);
2.强制类型转换

将大类型的数据转换为小类型的数据,会编译报错

解决办法:强制类型转换

格式:

目标类型 变量名 =(目标类型) 被转换的类型;

强制类型转换会出现的问题:

1.精度的丢失

2.数据的溢出

3.byte/short特例
// 由于右边int类型的数值正好在byte范围之内,所以系统帮我们做了转换

  byte by2 = 127;

  System.out.println(by2);

  short s = 32767;

  System.out.println(s);
4.byte/short和char 参与转换,都需要强制类型转换
//byte /short/char类型转换比如强制转换,因为他们在取值范围只存在交集关系,不存在父子集关系。

  byte by3 = 65;

  char ch3 = (char)by3;

  System.out.println(ch3);

  char ch4 = '0';

  byte by4 = (byte)ch4;

  System.out.println(by4);
5.表达式类型提升

当表达式的运算符两边类型不一致的时候,结果的类型会自动向高类型转换

// 当表达式的运算符两边类型不一致的时候,结果的类型会自动向高类型转换

  i5 = (int)(i5 + f3);

  System.out.println(i5);
6.当byte short char 之间参与运算的时候,底层都会转换为int 类型来计算
// 6.当byte short char 之间参与运算的时候,底层都会转换成int类型来计算  

  byte by6 = 97;

  short s2 = 1;

  char ch6 = 'a';

  short s3 = (short)(by6 + s2 + ch6);

  System.out.println(s3);  
7.boolean类型不能够参与运算和转换
// 7.boolean类型不能够参与运算和转换,但是在JavaScript中可以

  boolean bool = true;

  // int i6 = bool + 1;

  // int i6 = (int)bool;
8.字符串在参与运算中的转换问题,字符串相加是拼接操作
System.out.println(2 + 2 + "22" + 2 + 2); // 输出结果为42222。   当字符串与其他类型拼接以后就成为一个新的字符串
9.变量计算和常量计算问题

变量相加,系统无法判断具体的结果

//两个不同类型的变量相加,通不过编译器,

  byte bbb2 = 10;

  short sss2 = 20;

  short ttt = bbb2 + sss2;

  System.out.println(ttt);

  //报错误代码

  //需要强制标明类型  

常量相加,在编译时期,系统就会运算结果

 //编译器对常量进行了计算,然后int类型的30没有超byte的范围,实行了byte特列

  byte b3 = 10 + 20;

  System.out.println(b3);

  //正确代码
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!