• JAVA课上课后问题总结(2019.09.20)


    一、关于原码,反码,补码。

    原码,反码,补码都是计算机存储数字的编码方式,其中计算机内部用补码的形式存取数据。

    原码

    原码就是符号位加上真值的绝对值,即首位为符号位(1表示负,0表示正)其后表示其值。如:

       3 的原码 --> 0000 0000 0000 0000 0000 0000 0000 0011
      -3 的原码 --> 1000 0000 0000 0000 0000 0000 0000 0011

    反码

    正数的反码是其本身不变,

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

       3 的原码 --> 0000 0000 0000 0000 0000 0000 0000 0011
      -3 的原码 --> 1000 0000 0000 0000 0000 0000 0000 0011
    
       3 的反码 --> 0000 0000 0000 0000 0000 0000 0000 0011
      -3 的反码 --> 1111 1111 1111 1111 1111 1111 1111 1100

    补码

    正数的补码是其本身不变,

    负数的补码是其反码加1.如:

       3 的原码 --> 0000 0000 0000 0000 0000 0000 0000 0011
      -3 的原码 --> 1000 0000 0000 0000 0000 0000 0000 0011
    
       3 的反码 --> 0000 0000 0000 0000 0000 0000 0000 0011
      -3 的反码 --> 1111 1111 1111 1111 1111 1111 1111 1100
    
       10 的补码 --> 0000 0000 0000 0000 0000 0000 0000 1010
      -10 的补码 --> 1111 1111 1111 1111 1111 1111 1111 1101

    二、动手动脑:实例EnumTest.java

    源码:

     1 public class EnumTest {
     2 
     3     public static void main(String[] args) {
     4         Size s=Size.SMALL;
     5         Size t=Size.LARGE;
     6         //s和t引用同一个对象?
     7         System.out.println(s==t);  //
     8         //是原始数据类型吗?
     9         System.out.println(s.getClass().isPrimitive());
    10         //从字符串中转换
    11         Size u=Size.valueOf("SMALL");
    12         System.out.println(s==u);  //true
    13         //列出它的所有值
    14         for(Size value:Size.values()){
    15             System.out.println(value);
    16         }
    17     }
    18 
    19 }
    20  enum Size{SMALL,MEDIUM,LARGE};

    运行结果如下:

     

    在java中,使用枚举类型可以代替常量,这是由于常量没有命名空间,使用起来不方便,使用枚举可以使代码更具维护性。

    从运行结果前两行可以看出,枚举类型不是原始数据类型,因此它是一种引用,而不同值的引用是不同的,“==”直接对比枚举变量的值。

    从运行结果第三行可以看出,枚举类型的字符串转换是正确的。

    从运行结果后三行可以看出,枚举类型可被视为对象数组,并能进行正常输出。

    三、动手实验:实例TestDouble.java

    源码:

    1 public class TestDouble {
    2 
    3     public static void main(String args[]) {
    4         System.out.println("0.05 + 0.01 = " + (0.05 + 0.01));
    5         System.out.println("1.0 - 0.42 = " + (1.0 - 0.42));
    6         System.out.println("4.015 * 100 = " + (4.015 * 100));
    7         System.out.println("123.3 / 100 = " + (123.3 / 100));
    8     }
    9 }

    运行结果如下:

     由运行结果可以看出,double类型的运算结果是不精确的,这和double类型数据存储方式有关。

    四、动手动脑:关于输出

    源码:

     1 public class Test {
     2 
     3     public static void main(String[] args) {
     4         int X=100;
     5         int Y=200;
     6         System.out.println("X+Y="+X+Y);
     7         System.out.println(X+Y+"=X+Y");
     8     }
     9 
    10 }

    运行结果如下:

     由运行结果可以看出,在输出时,双引号里可视为字符串输出,而加号则用来连接字符串,想要输出X+Y应该加括号。

  • 相关阅读:
    推荐几个jQuery插件
    windows中安装node.js和测试
    使用javascript改变图片路径
    如何使用jQuery 制作全屏幕背景的嵌入视频
    SQL优化:一些简单的又实用的SQL优化方案【转】
    CentOS 6和 CentOS 7的区别【转】
    ssh密匙互信操作【原创】
    orchestrator的安装和配置
    部署gerrit环境完整记录【转】
    MySQL两地三中心方案初步设计【转】
  • 原文地址:https://www.cnblogs.com/52bb/p/11551350.html
Copyright © 2020-2023  润新知