zoukankan      html  css  js  c++  java
  • 2020.9.30

    一、今日学习内容

           动手动脑1:

    1、s和t引用的不是同一个对象,返回的为fasle。     

    2、原始数据类型有8种,byte(字节) short(短整型) int(整形) long(长整型) float(浮点型) double(双精度) 64 char(字符串) boolean(布尔型)所s.getClass().isPrimitive()会返回fasle;因为这个是enum type,s和u的值都为SMALL,所以返回true。

    3、enum Size{SMALL,MEDIUM,LARGE}是使用一个名为Size的enum类,其中元素有SMALL,MEDIUM,LARGE可看成其中类的对象。

    结论:

    枚举类型的使用是借助ENUM这样一个类,这个类是JAVA枚举类型的公共基本类。枚举目的就是要让某个变量的取值只能为若干固定值中的一个。

    1、枚举类型是引用类型

    2、枚举不属于原始数据类型,它的每个具体值都引用一个特定的对象。相同的值则引用同一个对象。

    3、可以使用“==”和equals()方法直接比对枚举变量的值,换句话说,对于枚举类型的变量,“==”和equals()方法执行的结果是等价的。

    枚举的基本用法:

    1、for(Size value:Size.values()){
                System.out.println(value);

         }对枚举进行遍历,并且找出最大的。

    2、Size s=Size.SMALL 从字串转换为枚举

    3、System.out.println(s==u)判断s与u是否相同

    4、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());//返回本类的申明处

        动手动脑2:

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

    原因:涉及到二进制与十进制的转换问题。N进制可以理解为:数值×基数的幂,例如我们熟悉的十进制数123.4=1×10²+2×10+3×(10的0次幂)+4×(10的-1次幂);其它进制的也是同理,例如二进制数11.01=1×2+1×(2的0次幂)+0+1×(2的-2次幂)=十进制的3.25。double类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,在最低位上一定会与实际数据存在误差(除非实际数据恰好是2的n次方)。

    解决方法:使用BigDecimal类。在构建BigDecimal对象时应使用字符串而不是double数值,否则,仍有可能引发计算精度问题。

     

       动手动脑3:

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

    int X=100;

    int Y=200;

    System.out.println("X+Y="+X+Y);

    System.out.println(X+Y+"=X+Y");

    为什么会有这样的输出结果?

     结论:

     System.out.println("X+Y="+X+Y);//拼接,字符串的连接

     System.out.println(X+Y+"=X+Y");//加法

      动手动脑4:

      

    结论:Java变量遵循“同名变量的屏蔽原则”。

      动手动脑5:

      反码,补码,原码

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

          如单字节的5的原码为:0000 0101;-5的原码为1000 0101。

       (2)反码:正数:正数的反码与原码相同。负数:负数的反码,符号位为“1”,数值部分按位取反。可见如果一个反码表示的是负数, 人脑无法直观的看出来它的数值. 通常 要将其转换成原码再计算。

         如单字节的5的反码为:0000 0101;-5的反码为1111 1010。

       (3)补码:正数的补码就是其本身。负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)。对于负数, 补码表示方式也是人脑无法直观看出其数值的. 通常也需要转换成原码在计算其数值。

         如单字节的5的补码为:0000 0101;-5的原码为1111 1011。

    结论:Java中的数值由补码表示。

    示例程序:

    二、遇到的问题

        对示例中  s.getClass().isPrimitive()  、for(Size value:Size.values()) 的用法不清楚

        对BigDecimal类的用法不清楚不了解

    三、明日计划

        完善课堂测试的题目。

  • 相关阅读:
    【Java集合】-- LinkedList源码解析
    【Java集合】--ConcurrentHashMap源码解析
    【Java集合】--ConcurrentHashMap源码解析
    【Java集合】-- CopyOnWriteArrayList源码解析
    【Java集合】-- CopyOnWriteArrayList源码解析
    【Java集合】-- ArrayList源码解析
    【Java集合】-- ArrayList源码解析
    【Java集合】-- HashMap源码解析
    工厂模式和抽象工厂模式
    常见的排序算法整理
  • 原文地址:https://www.cnblogs.com/wmdww/p/13756912.html
Copyright © 2011-2022 走看看