Which ofthe following are legal lines ofcode?( 下列哪些代码是合法的?)
(a) int w=(int)888.8
(b) byte x=(byte)1000L
(c )long y=(byte)100
(d) byte z=(byte)100L
考点: 考察用户对Java语言类型转换的理解和掌握。
出现频率: ★★★★★
【面试题解析】在Java中,整型、实型、字符型被视为简单的数据类型,这些数据类型由低
到高级分別为:(byte,short,char)int long float double
简单数据类型之间的转换又可以分为:
1、自动类型转换
低级变量可以直接转换为高级变量,下面的语句可以在JAVA中直接通过,代码如下:
byte b;
int i=b;
long l=b;
f loat f=b;
doubled=b
如果低级类型为char型,向高级类型(整型) 转换时,会转换为对应ASCII码值,代码如下:
码如下:
char c='c';
int i=c;
System.out.println("output:"+i);
输出:
output:99 ;
对于byte、short、char 3种类型而言,它们是平级的,因此不能相互自动转换,可以使用下述的强制类型转换,代码如下:
short i=99;
char c=(char)i;
System.out.printIn("output:"+c) ;
输出:
output:c
2.强制类型转换
将高级变量转换为低级变量时,情况会复杂一些,可以使用强制类型转换.示例代码如下:
int i=99;
byte b=(byte)i;
char c=(char)i;
float f=(float)i;
3.包装类过渡类型转换
Java 的包装类将基本数据类型与对象类型在一定程度上统一起来,井提供以下两个方
面的功能。
Java 共有6 个包装类,分别是Boolean、Character、Integer、Long、Float 和Double。
从字面上就可以看出它们分别对应于boolean、char、int、long、float和double 类型。而String和Daue本身就是类。也就不存在包装类的概念。
在进行简单数据类型之间的转换(自动转换或强制转换)时,可以利用包装类进行过渡。
一般情况下,首先声明一个变量。然后生成个对应的包装类,就可以利用包餐类的
各种方法进行类型转换了。例如,当希望把float型转换为double型时、示例代码如下:
float f1=100.00f;
FloatF1=new float(f1);
Double d1=F1.doubleValue();//F1.doubleValue()为Float类的返回double值型的方法
当希望把double型转换为int型时,代码如下所示:
doubled1= 100.00;
DoubleD1=new Double(d1);
int i1=D1.intvalue();
当希望把int型转换为double型时,自动转换如下:
int i1=200;
double d1=i1
简单类型的变量转换为相应的包装类,可以利用包装类的构造函数,如Boolean(boolean
value)、Character(charvalue) 、Integer(int value) 、Long(long value)、Floal (float value)、Double(double value)
而在各个包装类中,总有形为XXXValue()的方法,来得到其对应的简单类型数据。利
用这种方法,也可以实现不同数值型变最间的转换。例如对于一个双精度实型类,intValue()
可以得到其对应的整型变量,而doubleValue()可以得到其对应的双精度实型变量。
一个浮点类型数据通过强制类型转换可以转换为int类型,这时小数位会被截去,所以
(a) 是正确的。一个长整型数值可以被转换为byte 类型,如果长整型数大于127 转换为
byte 类型就会变为-128,所以(b) 和(d) 是正确的。由于长整型数的范围覆盖byte 类型数范围,所以(c) 也是正确的。
参考答案:(a)、(b)、(c)、(d)。