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.  
        }
  • 相关阅读:
    【数据结构】线性表&&顺序表详解和代码实例
    【智能算法】超详细的遗传算法(Genetic Algorithm)解析和TSP求解代码详解
    【智能算法】用模拟退火(SA, Simulated Annealing)算法解决旅行商问题 (TSP, Traveling Salesman Problem)
    【智能算法】迭代局部搜索(Iterated Local Search, ILS)详解
    10. js时间格式转换
    2. 解决svn working copy locked问题
    1. easyui tree 初始化的两种方式
    10. js截取最后一个斜杠后面的字符串
    2. apache整合tomcat部署集群
    1. apache如何启动
  • 原文地址:https://www.cnblogs.com/zhukaile/p/13504365.html
Copyright © 2011-2022 走看看