论坛首页 Java企业应用论坛

Java源码的一个小问题

浏览 1587 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2009-12-20  
在java.lang.Integer类中方法parseInt(String s)和valueOf(String s, int radix)的定义如下:
(1)
    public static int parseInt(String s) throws NumberFormatException {
        return parseInt(s,10);
    }
以及:
(2)
    public static Integer valueOf(String s, int radix) throws NumberFormatException {
        return Integer.valueOf(parseInt(s,radix));
    }

问题:为什么(2)中(return那一行)的valueOf方法的调用要在前面用上Integer类型?
         或者说,直接改写成这个样子又会什么问题呢?改写:
    public static Integer valueOf(String s, int radix) throws NumberFormatException {
        return valueOf(parseInt(s,radix));
    }
在或者说,(1)中(return那一行)的parseInt方法的调用需要在前面加上Integer类型吗?

请各位指教指教
   发表时间:2009-12-20  
1.这要继续看valueOf(int i)里面的代码~~
2.int到integer是可以自动包装的~所以无需显式的转换
3.我估计valueOf(String s)里面也是这么写的,这样只需要实现 parseInt(String s,int radiox)就可以了
4.直接改成return valueOf(parseInt(s,radix));话你自己试试吧,我估计编译器自己能识别出来如果你不导入其他能让他混淆的类.....
5.个人见解....
0 请登录后投票
   发表时间:2009-12-20  
类方法与实例方法的区别是:方法根据是否有static修饰可以分为类方法和对象方法(实例方法)。  访问时,类方法可以直接通过类名来引用,而实例方法必须通过对象名来访问,也就是说要想使用实例方法,就必须创建一个该类的对象。

  再看看源码的java.lang.Integer类的定义:

  package java.lang;

  public final class Integer {
    ...
    ...
    public static int parseInt(String s) { //方法(1)
        return parseInt(s,10);
    }

    public static Integer valueOf(String s, int radix) { //方法(2)
        return Integer.valueOf(parseInt(s,radix));
    }

    public static int parseInt(String s, int radix) {//方法(3)
      ...
      ...
    }

    public static Integer valueOf(int i) {//方法(4)
      ...
    }


  }

  从上面来看,很明显,方法(1)调用的方法(3)parseInt(String s,int radix)是static修饰的;方法(2)调用的方法(4)valueOf(int i)也是static修饰的;照理来说,它们都是实例方法?!!
  再者,从上面看来,这些都是类内的方法调用,应该不用理会什么类方法或者实例方法吧。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics