• 动手动脑


    1.EunmTes.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};
    运行结果:枚举类型不属于原始数据类型,是引用类型,每个具体指引用一个特定的对象
    结论:再对比枚举类型值时,==和equals()等价
    2.变量的有效区域
    public class Test {
    private static int value = 1;
    public static void main(String[] args) {
    int value = 2;
    System.out.println(value);
    运行结果为2
    Java遵循同名变量屏蔽原则,即每个变量都有一个“有效”的区域(称为“作用域”),出了这个区域,变量将不再有效,同名的变量在指定的范围内有自动屏蔽的原则。即局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。
    3.Java类型转换
    结论:不同数据类型进行类型转换时可能会有精度的缺失,因此要注意各种类型的取值范围。
    4.TestDouble.java
    public class TestDoouble {

         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类型的数值占用64bit,即64个二进制数,除去最高位表示正负符号的位,
      在最低位上一定会与实际数据存在误差。比如要用4bit来表示小数3.26,从高到低位依次对应2的1,0,-1,-2次幂
      ,应当在二进制数11.01(对应十进制的3.25)和11.10(对应十进制的3.5)之间选择。简单来说就是我们给出的数值,
      在大多数情况下需要比64bit更多的位数才能准确表示出来(甚至是需要无穷多位),而double类型的数值只有64bit,
      后面舍去的位数一定会带来误差,无法得到“数学上精确”的结果。
     5.BigDecimal.Java
    在构建BigDecimal对象时应使用字符串而不是double数值,否则,仍有可能引发计算精度问题。(为什么会这样呢?)
    Double,不能准确地代表16位有效数以上的数字,在使用BigDecimal时,应用 BigDecimal(String)构造器创建对象才有意义。另外,BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算 符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是BigDecimal的对象。
    6.

    从输出结果我们可以看出只有与 ” ” 字符串直接相连的后面 “+” 加号才会都被定义成连接符。

    System.out.println(“X+Y=”+X+Y); 这条输出语句打印的内容 ”  ” 字符串后面的两个 “+” 加号都会被定义成连接符,所以是100200而不是300.
    System.out.println(X+Y+”=X+Y”); 而这条输出语句打印的内容前面的X+Y会先运算的,因为前面的 “+” 加号还是运算符,Y后面的+加号才是连接符。只有与 ” ” 字符串直接相连时后面 “+” 加号才会都被定义成连接符。
    而且老师给的程序有问题
  • 相关阅读:
    Ubuntu安装deb软件包错误(依赖关系问题)解决
    scrapy抓取的中文结果乱码解决办法
    删除Git记录里的大文件
    Ubuntu18.04 修改DNS
    linux实现ssh免密码登录
    Vim进阶指南
    查找相同图片并重命名
    Markdown进阶指南
    一眼看穿flatMap和map的区别
    Java8简明指南
  • 原文地址:https://www.cnblogs.com/NCLONG/p/9751140.html
Copyright © 2020-2023  润新知