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


    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)的值。

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

    问题无。

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

  • 相关阅读:
    Registering an Application to a URI Scheme
    Promise相关网址
    设置table的td宽度,不随文字变宽
    Promise实现原理
    【转】编写高质量代码改善C#程序的157个建议——建议117:使用SSL确保通信中的数据安全
    【转】编写高质量代码改善C#程序的157个建议——建议116:避免用非对称算法加密文件
    【转】编写高质量代码改善C#程序的157个建议——建议115:通过HASH来验证文件是否被篡改
    【转】编写高质量代码改善C#程序的157个建议——建议114:MD5不再安全
    【转】编写高质量代码改善C#程序的157个建议——建议113:声明变量前考虑最大值
    【转】编写高质量代码改善C#程序的157个建议——建议112:将现实世界中的对象抽象为类,将可复用对象圈起来就是命名空间
  • 原文地址:https://www.cnblogs.com/hfy717/p/13757056.html
Copyright © 2020-2023  润新知