1) 强制转换时的精度丧失和溢出。 2) 数值运算时的自动转换。
3) byte、char、short转换为int的问题。 5.3 步骤
实现此案例需要按照如下步骤进行。 步骤一:强制转换时的精度丧失和溢出
基本类型之间的相互转换,需要注意的是,强制转换时可能会造成精度的丧失和溢出,请看如下代码:
long l = 1024L * 1024 * 1024 * 4;
int j = (int) l; // 会产生溢出
System.out.println(j); // 结果为:0
上述代码输出的结果为0,是因为在将long类型变量l转换为int类型变量j的时候产生了溢出。
另外,请看如下精度丧失的例子: double pi = 3.141592653589793;
float f = (float) pi; // 会造出精度的损失 System.out.println(f); // 结果为:3.1415927
上述代码的输出结果为3.1415927,值保留了7位小数,这是因为将double类型的变量pi转换为float类型的变量f时造成了精度的损失。 步骤二:数值运算时的自动转换 多种基本类型参与的表达式运算中,运算结果会自动的向较大的类型进行转化。请看如下示例:
long distance = 10000 * 365 * 24 * 60 * 60 * 299792458L;
上述代码中,有int类型数据和long类型数据,由于有long型的直接量299792458L参与,整个表达式的结果为long。 double change = 800 - 599.0;
上述代码中,由于有double型的直接量599.0参与,整个表达式的结果为 double。 double persent1 = 80 / 100;
上述代码中,结果为0.0。右边都是int型数据,语法运算后的结果也为int类型,结果为0,再赋值给double型,将0转化为 0.0。请对比下面的代码: double persent2 = 80.0 / 100;
上述代码中,结果为0.8,右边表达式有double型直接量参与,运算结果为double型。 步骤三:byte、char、short转换为int的问题
byte、char、short 三种类型实际存储的数据都是整数,在实际使用中遵循如下规则: 1) int直接量可以直接赋值给byte、char和short,只要不超过其表示范围。
2) byte、char、short三种类型参与运算时,先一律转换成int类型再进行运算。请看如下示例代码: byte b1=28; byte b2=20; byte b3=b1+b2;
上述代码在第三行会出现编译错误,原因是b1+b2的结果为int类型。改变上述代码如下: byte b1=28; byte b2=20; int b3=b1+b2;
查看上述代码,会发现不会再出现编译错误。char类型、short类型和byte类型是相似的。 5.4 完整代码
本案例是总结性的知识,没有完整的代码。 6 年龄判断程序 6.1 问题
本案例需要使用交互的方式判断年龄的范围:用户从控制台输入一个年龄,由程序判断该年龄是否在18~50之间。程序交互过程如图-1所示:
图- 1 6.2 步骤
实现此案例需要按照如下步骤进行。 步骤一:定义类及 main方法
首先定义一个名为 Age的类,并在类中添加Java应用程序的主方法main,代码如下所示: public class Age { public static void main(String[] args) { } }
步骤二:读取控制台输入
在main方法中,实例化Scanner类,并调用Scanner类的nextInt() 方法接收用户从控制台输入的年龄,使用完毕后将scanner对象关闭,以释放资源。代码如下所示: #cold_boldimport java.util.Scanner;
public class Age { public static void main(String[] args) { #cold_bold Scanner scanner = new Scanner(System.in); #cold_bold #cold_bold #cold_bold } }
System.out.println(\请输入年龄:\int age = scanner.nextInt(); scanner.close();
在此需要注意导入Scanner类所在的包。 步骤三:判断年龄所在的范围
接收到年龄后,判断年龄是否在18~50之间。如果输出结果为true,则说明年龄在18~50之间,否则,年龄不在18~50之间,代码如下所示: import java.util.Scanner;
public class Age { public static void main(String[] args) { Scanner scanner = new Scanner(System.in);
System.out.println(\请输入年龄:\ int age = scanner.nextInt(); #cold_bold System.out.println(age >= 18 && age <= 50); } }
在上述代码中,使用了“&&”逻辑运算符来连接两个条件。年龄在18~50之间,即,年龄大于等于18且年龄小于等于50,因此需要使用“&&”运算符。 6.3 完整代码
本案例的完整代码如下所示: import java.util.Scanner;
public class Age { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); }
}
System.out.println(\请输入年龄:\int age = scanner.nextInt(); scanner.close();
System.out.println(age >= 18 && age <= 50);
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库java入门学习1(5)在线全文阅读。
相关推荐: