一、课堂动手实验一:
把main()方法的返回值由 void 改为 int ,程序能编译通过吗?能运行吗?
验证结果:
二、动手动脑:
仔细阅读示例: EnumTest.java,运行它,分析运行结果?
你能得到什么结论?你掌握了枚举类型的基本用法了吗?
源代码:
public class EnumTest {
public static void main(String[] args) {
Size s=Size.SMALL;
Size t=Size.LARGE;
//s和t引用同一个对象?
System.out.println(s==t);
//是原始数据类型吗? 不是
System.out.println(s.getClass().isPrimitive());
//从字符串中转换
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};
结果:
false
false
true
SMALL
MEDIUM
LARGE
枚举类型仅适用于JDK 5.0及更新的版本.
枚举可用于switch语句中。
枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象。相同的值则引用同一个对象。
可以使用“==”和equals()方法直接比对枚举变量的值,换句话说,对于枚举类型的变量,“==”和equals()方法执行的结果是等价的。
三、动手动脑实验:
为什么double类型的数值进行运算得不到“数学上精确”的结果?
请通过互联网查找资料,或者是阅读相关计算机教材,解决这个问题。
提示:
这个问题,与浮点数在计算机内部的表示方法有关系。可以使用这个知识在搜索引擎中查找相关资料
java中double类型数据是用64位来表示的,精度肯定是有限的,在需要更高精度的运算过程中,有两种方法可供参考:
1. 自己用超过64位来表示一个double类型,比如用100个byte[]来表示一个double(800bytes);这样的话,double的加减乘除就需要自己实现一遍了。很多IT公司有这样的面试题。
2. 用java自带的BigDecimal类可以方便做高精度的运算。(c++中是没有BigDecimal这种方面的类的,所以只能用第一种方法)
四、动手动脑:
例:package com;
class Test {
private static int value=1;
public static void main(String[] args){
int value=2;
System.out.println(value);
}
}
输出结果:2
五、以下代码输出什么?
以下代码的输出结果是什么?
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、编写一个程序,用户输入两个数,求出其加减乘除,并用消息框显示计算结果。
源代码:
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("请输入两个整数:");
double a,b;
a=input.nextDouble(); //输入第一个数
b=input.nextDouble(); //输入第二个数
double sum,difference,product,quotient;
sum=a+b;
difference=a-b;
product=a*b;
quotient=a/b;
//输出对话框显示结果
JOptionPane.showMessageDialog(
null, "The sum is " + sum +"\n"+
"The difference is "+ difference +"\n"+
"The product is "+product+"\n"+
"The quotient is "+quotient,"Results",
JOptionPane.PLAIN_MESSAGE );
System.exit( 0 );
}
}
运行结果: