• 01 课下动手动脑总结


    动手动脑1、

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

                      }

             }

     

    }

    运行结果:

     

    结论:枚举类型不是原始类型,它的每一个具体值都引用一个特定对象,相同的值就引用同一对象。使用==与equals方法比较执行效果相同。

    动手动脑2:

    反码:正数的反码是其本身,负数的反码是在其原码的基础上, 符号位(就是第一位)不变,其余各个位取反.

    例(以8位二进制为例):原码00000001(1),10000001(-1)

    反码00000001(1),11111110(-1)

    0的反码,+0:00000000。-0:11111111。

    补码:计算机中二进制形式的补数。补码是用来解决负数在计算机中的表示问题的。正数的补码就是其本身;负数的补码是在其原码的基础上,符号为不变,其余各位取反,最后加1.(即在反码的基础上加1)并且补码解决了0的符号及两个编码的问题。

    例(以8位二进制为例):1:00000001。-1:11111111

    原码:原码是一种计算机中对数字的二进制定点表示方法。就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值.原码的表示法是在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1,其余位表示数值的大小。

    例(以8位二进制为例):(1)00000001,(-1)10000001

    0的原码有两种,+0:00000000。-0:10000000

    Java中的数使用补码表示。

    程序验证:

    package session;

    import java.util.Random;

    class text {

             private static int value=1;

             public static void main(String[] args) {

                      int i=1;

                      int j=-1;

                      System.out.println(i+j);

             }      

    }

    运行结果:

    原码1+(-1)二进制表示:00000001+10000001=10000010,即结果为-2.显然不是原码表示。

    反码1+(-1)二进制表示:00000001+11111110=11111111,结果为-0,也不是反码表示。

    补码1+(-1)二进制表示:00000001+11111111=00000000.结果为0,所以java的数采用补码表示。

    动手动脑3:

    package session;

    import java.util.Random;

    class text {

             private static int value=1;

             public static void main(String[] args) {

                      int value=2;

                      System.out.println(value);

             }      

    }

    运行结果为2;证明全局变量与局部变量同名时,会优先使用局部变量。

    结论:每个变量都有一个“有效”的区域(作用域),即变量被定义的区域,而出了这个区域,变量将不再有效(全局变量除外)。Java的同名屏蔽原则,即同名的变量在指定的范围内有自动屏蔽的原则。在程序中局部变量可以与全局变量同名,但在函数内使用这个变量时,会优先用到同名的局部变量,而不是全局变量。

    动手实验:

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

        }

    }

    运行结果:

    结论:使用double类型进行运算,结果不准确。

    动手动脑4:

    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");

    }

    }

    运行结果:

    结论:字符串后面使用+会被看成两个字符串的连接,而在字符串之前使用就不会被认为连接。

  • 相关阅读:
    Rancher安装
    JDK8日期时间对象
    String经典面试题
    String
    单例模式
    多线程
    接口
    代码块
    内存吞金兽(Elasticsearch)的那些事儿 -- 常见问题痛点及解决方案
    内存吞金兽(Elasticsearch)的那些事儿 -- 写入&检索原理
  • 原文地址:https://www.cnblogs.com/haobox/p/13759244.html
Copyright © 2020-2023  润新知