您的位置 首页 java

java数据类型的转换的理解实际操作!

自动类型转换

Java的8个基本数据类型可以进行混合运算。不同类型的数据在运算过程中,首先会自动转换为同一类型,然后才进行运算。数据类型可以根据占用存储空间大小分为高低级别,占用空间越小,级别越低,占用空间越大,级别越高。自动类型转换遵循低级到高级转换的规则。如图3.9所示。从左到右的数据类型不断升高,箭头指明了自动类型转换的规则。

图1 数据类型级别与自动转换规则

基本数据类型的自动类型转换会发生在以下几种情况:

l 变量赋值

当为变量赋值的数据类型与变量类型不一致,并且赋值的数据类型级别低于变量类型的级别时,自动数据类型转换会将赋值数据自动转换为变量的类型。

例如:

byte byteNum=23; // 声明byte类型变量

int intNum=byteNum; //把byte型数据赋值给int型变量

l 方法调用

把一个数值传递给方法的参数,并且这个数值的数据类型低于方法的参数变量的数据类型。

例如:

publicstaticvoid say( int num){

System. out .println(“这是int类型数值:”+num);

}

publicstaticvoid main(String[] args) {

byte byteNum=23;

say (byteNum); // 把byte数值传递给方法的int参数

}

一元运算

在一元运算中(除了++和— 运算符 ),如果 操作数 的类型低于int类型(即byte、 short char 类型),则操作数会自动转换为int类型。

二元运算符

在二元运算中,所有低级的数据类型都会转换为运算中级别最高的数据类型。也就是说,如果有一个操作数是 double 类型,其他操作数都会自动转换为double类型。如果运算中最高的数据类型是 float ,其他操作数都会转换为float类型。如果最高的数据类型为 long ,那么所有操作数都会自动转换为long类型。如果最高的数据类型为int那么所有操作数都会自动转换成int类型。至于byte、short、char类型会自动转换为int或运算中最高的数据类型。

在项目中创建类Conversion,在主方法中创建不同数值型的变量,实现将各变量的自动类型转换。

public class Conversion {

publicstatic void main(String[] args) {

byte b1=34; short s1=123;

char c1=’B’; int i1=40;

long l1=900L; float f1=8.11F;

double d1=3.1415926;

System. out .println(“double/byte+char->double\t”+(d1/b1+c1));

System. out .println(“long+short->long\t\t”+(l1+s1));

System. out .println(“char+byte+short->int\t\t”+(c1+b1+s1));

System. out .println(“float+b1/s1->float\t\t”+(f1+b1/s1));

System. out .println(“int+double->double\t\t”+(i1+d1));

}

}

运行的结果如图2所示:

图2 实例执行结果

强制类型转换

当把高级别(即占用存储空间较大)的数据类型赋值给低级别(即占用存储空间较小)的数据类型时,必须进行的强制类型转换。其语法格式如下:

(类型)(表达式)

类型是要转换成的目标类型,例如int、short、double等。表达式是要转换的目标数据,它可以是任何基本类型的算术运算表达式。

例如:

long num=900L; // 900

short snum=( short )num; //900

long类型的数值900没有超过short类型的取值范围,所以short类型的变量“snum”完全容纳了强制类型转换后的数值。

基本数据类型的强制类型转换需要注意数据完整性的问题,当把高级的数据类型强制转换为低级的数据类型时,如果数值超出低级数据类型的取值范围,数值将被截取,导致数据丢失、不完整。

例如:

short snum=516; // 516

byte bnum=( byte )snum; // 4

snum是short类型,数据长度是16位,而bnum是byte类型,长度为8位。当snum强制转换为byte类型时,数值“516”超出了byte类型的取值范围,这是只能从short类型截取低8为的数据赋值给byte类型的bnum变量。如图1所示。

图1 short转换为byte时必须截取数据

这样就造成了数据丢失,所以在使用强制数据类型转换时,一定要倍加小心。

将long类型数值强制类型转换为其他数据类型

public classPConversion {

public static void main(String[] args) {

long num=33333;

System.out.println(“原数是:”+num);

System.out.println(“转成int:”+(int)num);

System.out.println(“转成short:”+(short)num);

System.out.println(“转成byte:”+(byte)num);

System.out.println(“转成float:”+(float)num);

System.out.println(“转成char:”+(char)num);

}

}

实例运行结果如图2所示。

图2 实例运行结果

文章来源:智云一二三科技

文章标题:java数据类型的转换的理解实际操作!

文章地址:https://www.zhihuclub.com/193760.shtml

关于作者: 智云科技

热门文章

网站地图