zoukankan      html  css  js  c++  java
  • java笔记

    子类父类拥有同名的方法时:

        *当子类与父类拥有一样的方法,并且让一个父类变量引用一个子类对象时,到底调用哪个方法,由对象自己的“真实”类型所决定,这就是说:对象是子类型的,它就调用子类型的方法,是父类型的,它就调用父类型的方法。

        *这个特性实际上就是面向对象“多态”特性的具体表现。

        *如果子类与父类有相同的字段,则子类中的字段会代替或隐藏父类的字段,子类方法中访问的是子类中的字段(而不是父类中的字段)。如果子类方法确实想访问父类中被隐藏的同名字段,可以用super关键字来访问它。

        *如果子类被当作父类使用,则通过子类访问的字段是父类的!

    在实际开发中,要避免在子类中定义与父类同名 的字段。不要自找麻烦!

    数字类型的String字符串转换为浮点数通常采用parseDouble()和valueOf()方法,两者主要是存在以下两点区别。

    区别一:参数区别
    Double.parseDouble(java.lang.String)的参数只能是String,如果参数改为double类型提示“The method parseDouble(String) in the type Double is not applicable for the arguments (double)”错误。
    Double.valueOf()的参数类型可以是浮点型或者是字符串均可。

    1.  
      String pi = "3.1415926";
    2.  
      double floatOrDouble = 3.1415926;
    3.  
      double parseDouble = Double.parseDouble(pi);
    4.  
      //提示错误 Change type of"floatOrDoubleP" to "String"
    5.  
      //double floatOrDoubleP = Double.parseDouble(floatOrDouble);
    6.  
      System.out.println(parseDouble);
    7.  
      //System.out.println(floatOrDoubleP);
    8.  
      Double valueOf = Double.valueOf(pi);
    9.  
      Double floatOrDoubleV = Double.valueOf(floatOrDouble);
    10.  
      System.out.println(valueOf);
    11.  
      System.out.println(floatOrDoubleV);

    控制台输出结果:

    1.  
      3.1415926
    2.  
      3.1415926
    3.  
      3.1415926

    区别二:返回类型
    Double.parseDouble(java.lang.String)把数字类型的字符串转换成double类型
    Double.valueOf()方把数字类型的字符串转换成Double类型
    Double.parseDouble()方法的源码:

    1.  
      public static double parseDouble(String s) throws NumberFormatException {
    2.  
      return FloatingDecimal.readJavaFormatString(s).doubleValue();
    3.  
      }

    Double.valueOf()方法的源码:

    1.  
      public static Double valueOf(String s) throws NumberFormatException {
    2.  
      // new Double()
    3.  
      return new Double(FloatingDecimal.readJavaFormatString(s).doubleValue());
    4.  
      }

    通过格式化小数点位数两者结果相同,可以看出除参数和返回类型外两者区别不大。

    1.  
      DecimalFormat df = new DecimalFormat("0.00");
    2.  
      System.out.println(df.format(Double.parseDouble(pi)));
    3.  
      System.out.println(df.format(Double.valueOf(pi)));

    控制台输出结果:

    1.  
      3.14
    2.  
      3.14

    Integer工具类也是很相似的,但是Integer的valueOf内部实现的时候会有一些不同。
    Integer.valueOf()方法的源码:

      1.  
        public static Integer valueOf(int i) {
      2.  
        if (i >= IntegerCache.low && i <= IntegerCache.high)
      3.  
        return IntegerCache.cache[i + (-IntegerCache.low)];
      4.  
        return new Integer(i);
      5.  
        }
  • 相关阅读:
    【转载】数据结构与算法设计
    【转载】简述Linux的启动过程
    【转载】20分钟MySQL基础入门
    【转载】linux内核笔记之进程地址空间
    【转载】linux内核笔记之高端内存映射
    Logical Address->Linear Address->Physical Address
    【转载】教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神
    【转载】不会编程也能写爬虫?可视化爬虫工具是什么东东
    【转载】我是一个键盘
    80. Remove Duplicates from Sorted Array II
  • 原文地址:https://www.cnblogs.com/zhukaile/p/13504365.html
Copyright © 2011-2022 走看看