java强制转换练习题
时间: 2025-04-29 22:50:53 浏览: 22
好的,让我们通过一些具体的例子来理解 Java 中的强制类型转换。
### 强制类型转换的概念
在Java中,当我们将一个数据类型的值赋给另一个范围较小的数据类型变量时,就需要进行**强制类型转换**。例如,将`double`类型转成`int`类型:
```java
double d = 123.456;
int i = (int) d; // 这里的(int)就是告诉编译器进行一次显式的转换操作
System.out.println(i); // 输出结果为:123(注意小数部分会被直接丢弃)
```
需要注意的是,在做这种缩小范围的转换时可能会丢失精度信息;而扩大范围则一般不会有问题,因为这通常只是增加了一些前导零而已。
接下来我们来看几个经典的练习题目帮助加深对这个知识点的理解吧!
#### 练习题一:
编写一段程序完成从浮点型到整型之间的相互转化,并观察其特性变化。
```java
public class CastExercise {
public static void main(String[] args){
float fValue = 987.65f;
int intValue = (int)fValue;
System.out.println("原始float数值:" + fValue);
System.out.println("经过强转后的int数值:" + intValue);
double dVal=(double)intValue;
System.out.println("(再转回来)dVal:"+dVal);
}
}
```
运行上述代码可以得到如下输出:
```
原始float数值:987.65
经过强转后的int数值:987
(再转回来)dVal:987.0
```
可以看到,当从 `float` 转换至 `int` 后确实舍去了所有的小数位。
#### 练习题二:
尝试创建一个方法接收两个参数——一个是长整形(long),另一个是字节(Byte), 然后返回它们相加的结果作为短整形(short)
这里需要特别小心溢出的问题!由于byte 和 short 的取值区间有限(-128 ~ 127,-32768~+32767),如果两者的总和超出了short所能表示的最大范围,则会发生溢出导致错误的结果。因此我们应该先计算long类型下的准确求和然后再考虑如何安全地将其放入short之中而不引起意外情况的发生。
示例解答如下所示:
```java
public static short addByteAndLongAsShort(byte b, long l){
if(b+l > Short.MAX_VALUE || b+l < Short.MIN_VALUE){
throw new ArithmeticException("超出short存储范围");
}else{
return (short)(b+l);
}
}
//测试该函数是否正常工作.
public static void checkFunction(){
byte smallNumber=-127;
long bigOne=3L;
try{
short result=addByteAndLongAsShort(smallNumber,bigOne);
System.out.println("正确的求和结果应为:"+(smallNumber+bigOne)+",实际返回值为:"+result);
}catch(ArithmeticException e){
System.err.println(e.getMessage());
}
}
```
以上就是在Java里面关于“强制转换”的基本用法以及相关的实践练习啦~希望对你有所帮助!
阅读全文
相关推荐




















