在快乐中学习
时间过的真快,不知不觉已经悄然从指缝间溜走。到如今,学习java课程已经一个月了。在这一个多月的时间里, 通过发一些博客,做一些奇奇怪怪的作业,让我对java课程不再反感,反而感到了一丝丝的快乐。你是不是很想知道 那些奇奇怪怪的作业是什么啊?那现在就让我们一起来领略它们的风采吧!
动手动脑
(一)仔细阅读示例 EnumTest.java,运行它,分析运行结果?
运行结果
false
false
true
SMALL
MEDIUM
LARGE
分析运行结果:首先判断是否引用同一个对象,然后判断是不是是原始数据类型,接着从字符串中转换,最后 列出它的所有值。
(二)你能得到什么结论?你掌握了枚举类型的基本用法了吗?
枚举类型是引用类型, 枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象。 相同的值则引用同一个对象。枚举类型的常量以字符串的形式顺序储存,构造函数和覆写 toString()的方法可给枚举类型赋值 。也可以使用“==”和equals()方法直接比对枚举变量的值 ,换句话说,对于枚举类型的变量,“==”和equals()方法执行的结果是等价的。
(三)为什么double类型的数值进行运算得不到“数学上精确”的结果? float 和double类型主要是为科学计算和工程计算而设计的,他们执行二进制浮点运算, 然而无论是单精度还是双精度在计算机中的储存都分为三个部分:符号位(0代表正,1代表负)、 指数位(用于储存科学计数法中的指数数据,并且采用移位存储)、尾数部分。数据以二进制存储在计算机时,会出现无线循环系列,比如 8.25的科学计数法表示为:十进制8.25*10^0,二进制1.0001*2^3,这些数以二进制形式存储在计算机里时, 会出现00110011001100110011……的无限循环系列, 在数据转化中会出现错误。十进制不能准确的表示1/3,同样二进制不能精确的表示1/10。
(四)以下代码的输出结果是什么?
int X=100;
int Y=200;
System.out.println("X+Y="+X+Y);
System.out.println(X+Y+"=X+Y");
答:输出结果是 X+Y=100200 300=X+Y
那么为什么会有这样的输出结果呢?
因为输出语句1里的“+”为连接字面量,计算结果是将X和Y将两数据连接;而输出语句2里第一个“+”为加法运算符,对X和Y求和,第二个“+”为 连接运算符,所以就出现了以上结果。
(五)编写一个程序,用户输入两个数,求出其加减乘除,并用消息框显示计算结果
源代码
import java.util.Scanner;
import javax.swing.JOptionPane;// import class JOptionPane
public class Operation {
public static void main( String args[] ){
Scanner input=new Scanner(System.in);
System.out.println("请输入两个整数:");
System.out.println("请输入第一个整数:");
System.out.println("请输入第二个整数:");
double n,m;
n=input.nextDouble(); //输入第一个数
m=input.nextDouble(); //输入第二个数
double sum,difference,product,quotient;
sum=n+m;
difference=n-m;
product=n*m;
quotient=n/m;
//输出对话框显示结果
JOptionPane.showMessageDialog(
null, "The sum is " + sum +" "+
"The difference is "+ difference +" "+
"The product is "+product+" "+
"The quotient is "+quotient,"Results",
JOptionPane.PLAIN_MESSAGE );
System.exit( 0 );
}
}
运行结果: