标签:
动手动脑一:
仔细阅读示例: EnumTest.java,运行它,分析运行结果?
你能得到什么结论?你掌握了枚举类型的基本用法了吗?
1、源码:
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};
2、输出结果:
false
false
true
SMALL
MEDIUM
LARGE
3、分析和总结用法
枚举类型的使用是借助ENUM这样一个类,这个类是JAVA枚举类型的公共基本类。枚举目的就是要让某个变量的取值只能为若干固定值中的一个。
1、Size s=Size.SMALL;
对s变量进行赋值,只能给已经定义好的常量(即SMALL,MEDIUM,LARGE中的其中一个)。
2、System.out.println(s==t);
判断s是否与t相同。
3、System.out.println(s.getClass().isPrimitive());
调用enum中的方法。
4、Size u=Size.valueOf("SMALL");
对u进行赋值,与1相似,使用不同的赋值语句。
5、System.out.println(s==u);
判断s是否与u相同。
6、for(Size value:Size.values())
{
System.out.println(value);
}
对枚举进行遍历,并且找最大的。
7、enum Size{SMALL,MEDIUM,LARGE};
表明使用类ENUM,名字叫Size,其中有元素SMALL,MEDIUM,LARGE,这几个元素可以看做类中的对象。
7、System.out.println()
System.out.println(s); //运行结果:SMALL(枚举直接提供了toString的方法)
System.out.println(s.name());//运行结果:SMALL(打印名字)
System.out.println(s.ordinal());///得到枚举在序列中的位置
System.out.println(s.getClass());//得到枚举类
System.out.println(s.getDeclaringClass());//返回本类的申明处
动手动脑二:
你看到了什么样的输出,意外吗?
为什么double类型的数值进行运算得不到“数学上精确”的结果?
请通过互联网查找资料,或者是阅读相关计算机教材,解决这个问题。
提示:
这个问题,与浮点数在计算机内部的表示方法有关系。可以使用这个知识在搜索引擎中查找相关资料
1、源码
//double不精确的举例
//毛 2015.9.29
public class TestDouble {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("0.05+0.01=" + (0.05+0.01));
System.out.println("1.0-0.42=" + (1.0-0.42));
System.out.println("4.015*100=" + (4.015*100));
System.out.println("123.3/100=" + (123.3/100));
}
}
2、结果
3、结论
使用double类型的数值进行计算,其结果是不精确的。
double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差(除非实际数据恰好是2的n次方)。
解决方法,使用BigDecimal类。在构建BigDecimal对象时应使用字符串而不是double数值,否则,仍有可能引发计算精度问题。
动手动脑三:
以下代码的输出结果是什么?
int X=100;
int Y=200;
System.out.println("X+Y="+X+Y);
System.out.println(X+Y+"=X+Y");
为什么会有这样的输出结果?
1、运行结果
1、结论
System.out.println("X+Y="+X+Y);//拼接,字符串的连接
System.out.println(X+Y+"=X+Y");//加法
课后练习一:
Java变量遵循“同名变量的屏蔽原则”,请课后阅读相关资料弄清楚相关知识,然后自己编写一些测试代码,就象本示例一样,有意识地在不同地方定义一些同名变量,看看输出的到底是哪个值。
1、源码
//同名变量的屏蔽原则
//毛 2015.9.29
public class Test {
//private static int value = 1;
//同名,去注释,不使用
public static void main(String[] args) {
// TODO Auto-generated method stub
int value = 2;
System.out.println(value);
}
}
2、运行结果
3、结论
注意同名屏蔽的问题。
课后练习二:
编写一个程序,用户输入两个数,求出其加减乘除,并用消息框显示计算结果。
1、源码:
//mao2015.10.7
//用对话框的形式进行两数运算
import javax.swing.JOptionPane;
public class TwoNums {
public static void main(String[] args) {
// TODO Auto-generated method stub
String num1,num2;
int number1,number2;
int add,minus,mul,div;
num1 = JOptionPane.showInputDialog
("input the first integer please");
num2 = JOptionPane.showInputDialog
("input the second integer please");
number1 = Integer.parseInt(num1);
number2 = Integer.parseInt(num2);
add = number1 + number2;
minus = number1 - number2;
mul = number1 * number2;
div = number1/number2;
JOptionPane.showMessageDialog(null, "number1 + number2 is "
+add+"\nnumber1 - number2 is "+minus+"\nnumber1 *"
+ " number2 is "+mul+"\nnumber1 / number2 is "+div
,"Results", JOptionPane.PLAIN_MESSAGE);
}
}
2、运行结果
标签:
原文地址:http://www.cnblogs.com/justmaomao/p/4860067.html