当前位置:天才代写 > tutorial > JAVA 教程 > Java编程那些事儿19—数据类型转换

Java编程那些事儿19—数据类型转换

2017-11-12 08:00 星期日 所属: JAVA 教程 浏览:315

副标题#e#

3.7 数据范例转换

Java语言是一种强范例的语言。强范例的语言有以下几个要求:

l变量或常量必需有范例

要求声明变量或常量时必需声明范例,并且只能在声明今后才气利用。

l赋值时范例必需一致

值的范例必需和变量或常量的范例完全一致。

l运算时范例必需一致

参加运算的数据范例必需一致才气运算。

可是在实际的利用中,常常需要在差异范例的值之间举办操纵,这就需要一种新的语法来适应这种需要,这个语法就是数据范例转换。

在数值处理惩罚这部门,计较机和现实的逻辑不太一样,对付现实来说,1和1.0没有什么区别,可是对付计较机来说,1是整数范例,而1.0是小数范例,其在内存中的存储方法以及占用的空间都纷歧样,所以范例转换在计较机内部是必需的。Java语言中的数据范例转换有两种:

l自动范例转换

编译器自动完成范例转换,不需要在措施中编写代码。

l强制范例转换

强制编译器举办范例转换,必需在措施中编写代码。

由于根基数据范例中boolean范例不是数字型,所以根基数据范例的转换是出了boolean范例以外的其它7种范例之间的转换。下面来详细先容两种范例转换的法则、合用场所以及利用时需要留意的问题。

3.7.1 自动范例转换

自动范例转换,也称隐式范例转换,是指不需要书写代码,由系统自动完成的范例转换。由于实际开拓中这样的范例转换许多,所以Java语言在设计时,没有为该操纵设计语法,而是由JVM自动完成。

l转换法则

从存储范畴小的范例到存储范畴大的范例。

详细法则为:

byte→short(char)→int→long→float→double

也就是说byte范例的变量可以自动转换为short范例,示例代码:

byte b = 10;
short sh = b;

这里在赋值时,JVM首先将b的值转换为short范例,然后再赋值给sh。

在范例转换时可以跳跃。示例代码:

byte b1 = 100;
int n = b1;

l留意问题

在整数之间举办范例转换时,数值不产生改变,而将整数范例,出格是较量大的整数范例转换成小数范例时,由于存储方法差异,有大概存在数据精度的损失。


#p#副标题#e#

3.7.2 强制范例转换

强制范例转换,也称显式范例转换,是指必需书写代码才气完成的范例转换。该类范例转换很大概存在精度的损失,所以必需书写相应的代码,而且可以或许忍受该种损失时才举办该范例的转换。

l转换法则

从存储范畴大的范例到存储范畴小的范例。

详细法则为:

double→float→long→int→short(char)→byte

语法名目为:

(转换到的范例)需要转换的值

示例代码:

double d = 3.10;
int n = (int)d;

这里将double范例的变量d强制转换成int范例,然后赋值给变量n。需要说明的是小数强制转换为整数,回收的是“去1法”,也就是无条件的舍弃小数点的所有数字,则以上转换出的功效是3。整数强制转换为整数时取数字的低位,譬喻int范例的变量转换为byte范例时,则只去int范例的低8位(也就是最后一个字节)的值。

示例代码:

int n = 123;
byte b = (byte)n;
int m = 1234;
byte b1 = (byte)m;

则b的值照旧123,而b1的值为-46。b1的计较要领如下:m的值转换为二进制是10011010010,取该数字低8位的值作为b1的值,则b1的二进制值是11010010,凭据呆板数的划定,最高位是标记位,1代表负数,在计较机中负数存储的是补码,则该负数的原码是10101110,该值就是十进制的-46。

l留意问题

强制范例转换凡是城市存储精度的损失,所以利用时需要审慎。

3.7.2 其它

后续的复合数据范例,如类和接口等,也存在雷同的转换。

文章来历:http://blog.csdn.net/Mailbomb/archive/2008/05/15/2449261.aspx

 

    关键字:

天才代写-代写联系方式