Java强制类型转换与四舍五⼊
强制类型转换
强制类型转换的基本概念
在从范围较⼩的值,赋值给范围较⼤的变量的时候,Java解释器会进⾏⾃动的类型转换,例如:将int类型的值,赋值给double类型的变量。
但是将范围较⼤的值赋值给,范围较⼩的变量的时候,如果不进⾏强制类型转换,Java解释器会报错,例如:将double类型的值赋值给int类型的变量。
强制类型转换很可能造成信息的损失。
强制类型转换的语法格式是:
int a1 = (int)3.1415926;
程序⽰例
public class FirstCode1 {
public static void main(String[] args) {
//java ⾃动类型转换
int a1 = 3;
double b1 = a1;
System.out.println("b1 = "+b1);
System.out.println("a1 = "+a1);
//java强制类型转换
double b2 = 3.1415926535;
int a2 = (int)b2;
System.out.println("b2 = "+b2);
System.out.println("a2 = "+a2);
}
}
运⾏结果
b1 = 3.0
int函数与round函数a1 = 3
b2 = 3.1415926535
a2 = 3
四舍五⼊——round
round函数的基本概念
round函数可以对数值进⾏四舍五⼊的操作。
round⽅法返回的结果为long类型。
注意
如果试图将⼀个数值从⼀种类型强制转换成另⼀种类型,⽽⼜超出了⽬标类型的表⽰范围,结果就会阶段成⼀个完全不同的值。
不要将boolean类型与任何数值类型进⾏强制类型转换,这样可以防⽌⼀些常见的错误。只有极少数情况下才需要将布尔类型转化成数值类型,这时可以⽤下列表达式:
b?1:0
程序⽰例
public class FirstCode1 {
public static void main(String[] args) {
//round函数的使⽤
double a1 = 3.675;
int a2 = (und(a1);
System.out.println("a2 = " + a2);
//当强制类型转换的结果超过⽬标类型的表⽰范围时
long b1 = 3681922L;
byte b2 = (byte)b1;
System.out.println("(byte)b2 = "+b2);
//将布尔值转化为数值
boolean c1 = true;
boolean c2 = false;
int c3 = c1?1:0;
int c4 = c2?1:0;
System.out.println(c3);        System.out.println(c4);    }
}
运⾏结果
a2 = 4
(byte)b2 = -126
1