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、运行结果

  • 相关阅读:
    在Centos 7下编译openwrt+njit-client
    开博随笔
    Chapter 6. Statements
    Chapter 4. Arrays and Pointers
    Chapter 3. Library Types
    Chapter 2.  Variables and Basic Types
    关于stm32不常用的中断,如何添加, 比如timer10 timer11等
    keil 报错 expected an identifier
    案例分析 串口的地不要接到电源上 会烧掉
    案例分析 CAN OPEN 调试记录 进度
  • 原文地址:https://www.cnblogs.com/justmaomao/p/4860067.html
Copyright © 2011-2022 走看看