每日日报之“动手动脑”作业

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

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};

运行结果:

 

结论:枚举类型是引用类型。枚举不属于原始数据类型,其每个具体值都因用一个特定的对象。相同的值则引用同一个对象。对于枚举类型的变量,为其赋值或直接取用枚举类型二者含义相同。

 

2.阅读相应教材,或者使用互联网搜索引擎,弄清楚反码、补码跟原码这几个概念,然后编写示例程序,对正数、负数进行各种位操作,观察输出结果,与手工计算的结果进行比对,看看Java中的数是采用上述哪种码表示的

原码:就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值。

反码:正数的反码是其本身;负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。

补码:正数的补码就是其本身;负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1 (即在反码的基础上+1)。

结论:Java中的数是采用原码表示的。

 

3.Java变量遵循“同名变量的屏蔽原则”,请课后阅读相关资料弄清楚相关知识,然后自己编写一些测试代码,就象本示例一样,有意识地在不同地方定义一些同名变量,看看输出的到底是哪个值

示例:

public class Test{
    private static int value = 1;
    public static void main(String[] args) {
        int value = 2;
        System.out.println(value);
    }
}

 

结果:输出2。由此可看出同名变量屏蔽原则。

 

4.看着这个图,再查查Java中每个数据类型所占的位数,和表示数值的范围,你能得出什么结论

 

结论:JAVA中的类型转换由低到高无精度损失,由高到低则相反。

 

5.动手实验

运行以下代码:

public class TestDouble {

    public static void main(String args[]) {
        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));
    }
}

运行结果如ppt:

 

结论:使用double类型的数值进行计算,其结果是不精确的。

原因:这个涉及到二进制与十进制的转换问题。N进制可以理解为:数值×基数的幂。double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差(除非实际数据恰好是2的n次方)。

 

6.以下代码的输出结果是什么

public class Test{
    public static void main(String[] args) {
        int X=100;
        int Y=200;
        System.out.println("X+Y="+X+Y);
        System.out.println(X+Y+"=X+Y");
    }
}

输出结果:

原因:第一个“+”在”X+Y=“之后,是连接词,依此输出X、Y;第二个”+“在”=X+Y“之前,是运算符,所以输出(X+Y)的值。

 

顺便,今天日程:“动手动脑”作业彻底完成,作业三即将完成。

问题无。

下午及明天计划:所有作业的彻底完成。

 

posted @ 2020-10-01 11:53  谦寻  阅读(159)  评论(0编辑  收藏  举报