zoukankan      html  css  js  c++  java
  • JAVA语法基础作业——动手动脑以及课后实验性问题

    动手动脑一:

    仔细阅读示例: EnumTest.java,运行它,分析运行结果?

    你能得到什么结论?你掌握了枚举类型的基本用法了吗?

    1、源码:

    public class EnumTest {

    public static void main(String[] args) {

    Size s=Size.SMALL;

    Size t=Size.LARGE;

    //st引用同一个对象?

    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相似,使用不同的赋值语句。

    5System.out.println(s==u); 

    判断s是否与u相同。

    6for(Size value:Size.values())

    {

    System.out.println(value);

    }

    对枚举进行遍历,并且找最大的。

    7enum 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个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差(除非实际数据恰好是2n次方)。

    解决方法,使用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+" number1 - number2 is "+minus+" number1 *"

                          + " number2 is "+mul+" number1 / number2 is "+div

                          ,"Results", JOptionPane.PLAIN_MESSAGE);

    }

    }

    2、运行结果

  • 相关阅读:
    父子组件双向通讯
    高德地图采坑实践之文本标记点击事件左半边不生效(已解决)
    高德地图 location字段控制台显示 为字符串类型 实际为对象
    允许长单词、数字、URL换行到下一行
    python 格式化输出详解(占位符:%、format、f表达式)——上篇 理论篇
    python tkinter实现俄罗斯方块 基础版
    python递归三战:Sierpinski Triangle、Tower of Hanoi、Maze Exploring
    python(pygame)滑稽大战(类似飞机大战) 教程
    编辑器测试-TinyMCE
    封装cookie localStorage sessionStorage
  • 原文地址:https://www.cnblogs.com/justmaomao/p/4860067.html
Copyright © 2011-2022 走看看