动手动脑 自信成就人生
动手动脑1
?仔细阅读示例: EnumTest.java,运行它,分析运行结果?
package demo;
public class Test {
public static void main(String[] args) {
Size s=Size.SMALL;
Size t=Size.LARGE; //s和t引用不同对象
System.out.println(s==t); //false
System.out.println(s.getClass().isPrimitive()); //false 不是原始数据类型
Size u=Size.valueOf("SMALL"); //从字符串中转换
System.out.println(s==u); //true
for(Size value:Size.values()){ //列出它的所有值
System.out.println(value);
}
}
}
enum Size{SMALL,MEDIUM,LARGE};
运行结果为:SMALL MEDIUM LARGE
?你能得到什么结论?你掌握了枚举类型的基本用法了吗?
枚举类型的常量以字符串的形式顺序储存,Size value:Size.value() 可遍历Size中的所有值,int ordinal() 可返回其在enum(enumerate)中的位置,构造函数和覆写toString()的方法可给枚举类型赋值……
动手动脑2
?为什么double类型的数值进行运算得不到“数学上精确”的结果?
无论是单精度还是双精度在计算机中的储存都分为三个部分:符号位(0代表正,1代表负)、指数位(用于储存科学计数法中的指数数据,并且采用移位存储)、尾数部分。比如8.25和120.5的科学计数法表示为:十进制8.25*10^0、1.205*10^2,二进制1.0001*2^3、1.1101101*2^6,这些数以二进制形式存储在计算机里时,会出现00110011001100110011……的无限循环系列,在进行数据类型转换时会出现误差,而能够用二进制表示十进制数据(比如2.25),这个误差就不存在。(本节参考博客园jill[email protected])。
动手动脑3
?以下代码的输出结果是什么?
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="+(X+Y));不同,输出字符串“X+Y=”与X与Y,输出语句2里第一个“+”为加法运算符,第二个“+”为连接运算符。
动手动脑4
?编写一个程序,用户输入两个数,求出其加减乘除,并用消息框显示计算结果
package demo;
import javax.swing.JOptionPane;
public class Test{
public static void main(String[] args) {
int n1=Integer.parseInt(JOptionPane.showInputDialog("Input number 1: "));
int n2=Integer.parseInt(JOptionPane.showInputDialog("Input number 2: ")) //获取从JOptionPane.showInputDialog对话框中输入的值,然后转换为int类型
JOptionPane.showMessageDialog(null,"The sum is:"+(n1+n2)
+"\n"+"The difference is:"+(n1-n2)
+"\n"+"The product is:"+(n1*n2)
+"\n"+"The division is:"+(n1/n2));
}
}
结果截图为: