写点什么

软件测试 | 数据类型的转换

  • 2023-07-21
    北京
  • 本文字数:1820 字

    阅读完需:约 6 分钟

更多学习资料戳!!!

Java 的数据类型在定义时就已经确定了,因此不能随意转换成其他的数据类型,但 Java 允许用户有限度地做类型转换处理。数据类型的转换方式可以为“自动类型转换”及“强制类型转换”两种。

数据类型的自动转换

在程序中已经定义好了数据类型的变量,若要用另一种数据类型表示时,Java 会在下列的条件皆成立时,自动做数据类型 的转换:

(1)转换前的数据类型与转换后的类型兼容

(2)转换后的数据类型的表示范围比转换前的类型大

例如,将 short 类型的变量 a 转换为 int 类型,由于 short 与 int 皆为整数类型,符合上述条件(1);而 int 的表示范围比 short 大,符合条件(2)。因此 Java 会自动将原为 short 类型的变量 a 转换为 int 类型。

值得注意的是,类型的转换只限该行语句,并不会影响原先所定义的变量的类型,而且通过自动类型的转换可以保证数据的精确度,它不会因为转换而损失数据内容。这种类型的转换方式也成为扩大转换。

前面曾经提到过,若是整数的类型为 short 或 byte,为了避免溢出,Java 会将表达式中的 short 和 byte 类型自动转换成 int 类型,即可保证其运算结果的正确性,这也是 Java 所提供的“扩大转换”功能。

以“扩大转换”来看可能比较容易理解字符与整数是可使用自动类型转换的,整数与浮点数亦是兼容的,但是由于 boolean 类型只能存放 true 或 flase,与整数及字符是不兼容的,因此不可能做类型的转换。下面介绍当两个数中有一个浮点数时,其运算的结果会有什么样的变化。

范例:数据类型的转换

   public class DataDemo08   {        public static void main (string[]     args)    {             int x = 30 ;                                              // 定义整型变量             float  y = 22.19f;                                       // 定义浮点型变量             System.out.printIn("x/y = " +(x/y));                   //除法操作             System.out.printIn("10/3.5 = " + (10/3.5))                 //直接使用常量进行除法             System.out.printIn("10/3 = " +(10/3));                    //直接使用常量进行除法}}
复制代码

程序运行结果:

x/y = 1.351960310/3.5 = 2.85714285714285710/3 = 3
复制代码

从程序的输出结果可以发现,int 类型与 float 类型进行计算之后,输出的结果会变成 float 类型,一个整型常量进行计算之后,结果也会变为一个浮点数据,而如果是两个 int 类型的常量进行计算,最终结果还是 int 类型,而其小数部分将会被忽略。

也就是说,假设有一个整数和双精度浮点数作运算时,Java 会把整数转换成双精度浮点数后再做运算,运算结果也会变成双精度浮点数。关于表达式的数据类型转换,在后面会详细介绍。

提示:任何类型的数据都向 String 转型。

有一种表示字符串的数据类型 String,从其定义上可以发现单词首字母大写了,所以此为一个类,属于引用数据类型,但是此类属于系统的类,而且使用上有一些注意事项,对于此种类型后面会有详细的介绍,

(1)String 可以像普通变量那样直接通过赋值的方式进行声明。字符串是使用“‘’”括起来的。两个字符串之间可以使用“+”进行连接。

(2)任何数据类型碰到 String 类型的变量或常量之后都向 String 类型转换。

范例:定义字符串变量

public class DataDemo09{     public static void main (atring[])args}               {            string str = "lixinghua" ;                   //定义字符串变量            int x = 30;                                  //定义整型变量             str = str +  x;                             //改变字符串变量内容             System.out.printIn("str=" +str)              //打印输出}}
复制代码

程序运行结果:

str = lixinghua 30
复制代码

范例:字符串常量操作的问题

public class DataDemo10 {  public  atatic void main(string)[]   args}   {         int i = 1;                     //定义整型变量         int j = 2;                     //定义整型变量          System.out.printIn("1+2=" +i +j)};   //加法计算}}
复制代码

程序运行结果:

1+2 = 12
复制代码

从以上的输出结果中可以发现,程序的主要目的是计算 i+j 的值,但是由于碰到了字符串常量,所以所有的数据类型都会变为字符串常量,也就是说此时的"+"实际上表示的字符串连接的含义,对于以上的程序,如果想要得到正确的结果,则必须修改为:

System.out.pinIn("1+1=" +(i+j));
复制代码

加上括号之后,就表示输出时先计算两个数字相加的结果。

用户头像

社区:ceshiren.com 微信:ceshiren2023 2022-08-29 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料、实事更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬

评论

发布
暂无评论
软件测试 | 数据类型的转换_测试_测吧(北京)科技有限公司_InfoQ写作社区