您的位置:首页 > 编程语言 > Java开发

JAVA语法基础作业——动手动脑以及课后实验性问题

2015-10-08 09:12 579 查看
动手动脑一:

仔细阅读示例: 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、运行结果





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: