浏览 1591 次
锁定老帖子 主题:Java源码的一个小问题
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-20
(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类型吗? 请各位指教指教 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间: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.个人见解.... |
|
返回顶楼 | |
发表时间: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修饰的;照理来说,它们都是实例方法?!! 再者,从上面看来,这些都是类内的方法调用,应该不用理会什么类方法或者实例方法吧。 |
|
返回顶楼 | |