我想知道有些java代码,一直到最后的话,只有toString(), ArrayList(), 等这样,
我想知道这些事具体怎么实现的。想知道这些代码是怎么写的。
有谁知道的话,能共享吗?

解决方案 »

  1.   

    去jdk的安装目录,里面有个src.zip。
      

  2.   

    刚才我看了,找了一个进去,一直到package java.lang.reflect文件夹里了。
    比如说 array.java的文件,这个文件里面有很多function,可是这个文件里面没有import任何东西,这些是怎么运行的啊?有什么原理吗?
      

  3.   

    所有的类都是object的子类
    而object有toString()方法
    其他子类(如date) 都会重写toString()方法
    建议看源代码
      

  4.   

    没有import,代表这个类中所用的类均为同包或java.lang下的。
      

  5.   

    最大的类是java.lang下的object.java吗?那里面也有很多方法啊,看里面又有throwable,又有Serializable,可到了java.io下的serializable.java的时候,就只有,public interface Serializable {
    }
    感觉有点晕啊。
    这里的最顶端的object在哪里啊?是怎么个流程啊。
      

  6.   

    不同的类里有不同的toString实现方法 比如Date是输出个日期    public String toString() {
    // "EEE MMM dd HH:mm:ss zzz yyyy";
    BaseCalendar.Date date = normalize();
    StringBuilder sb = new StringBuilder(28);
    int index = date.getDayOfWeek();
    if (index == gcal.SUNDAY) {
        index = 8;
    }
    convertToAbbr(sb, wtb[index]).append(' ');   // EEE
    convertToAbbr(sb, wtb[date.getMonth() - 1 + 2 + 7]).append(' ');  // MMM
    CalendarUtils.sprintf0d(sb, date.getDayOfMonth(), 2).append(' '); // dd CalendarUtils.sprintf0d(sb, date.getHours(), 2).append(':');   // HH
    CalendarUtils.sprintf0d(sb, date.getMinutes(), 2).append(':'); // mm
    CalendarUtils.sprintf0d(sb, date.getSeconds(), 2).append(' '); // ss
    TimeZone zi = date.getZone();
    if (zi != null) {
        sb.append(zi.getDisplayName(date.isDaylightTime(), zi.SHORT, Locale.US)); // zzz
    } else {
        sb.append("GMT");
    }
    sb.append(' ').append(date.getYear());  // yyyy
    return sb.toString();
        }而List则是打印包含的元素的toString    public String toString() {
    StringBuffer buf = new StringBuffer();
    buf.append("[");        Iterator<E> i = iterator();
            boolean hasNext = i.hasNext();
            while (hasNext) {
                E o = i.next();
                buf.append(o == this ? "(this Collection)" : String.valueOf(o));
                hasNext = i.hasNext();
                if (hasNext)
                    buf.append(", ");
            } buf.append("]");
    return buf.toString();
        }实现这个方法的目的通常都是为了便于调试
      

  7.   

    Object不就是java.lang下的object.java吗
    serializable接口属于标识性接口,没有任何方法约定,任何类实现该接口,都会被jvm当成是可以被序列化、串行化的类。
    rmi规范里的java.rmi.Remote接口也属于类似的标识性接口。
      

  8.   

    可是在java.lang下的object.java里有很多继承了或者throw了很多方法,那object也是继承了别的?
      

  9.   

    没看错吧
    源码中Object没有继承任何类。
    他的好多方法都是native本地的。
      

  10.   

    我可能说错了,我的意思是里面的wait(),finalize(), notifyAll()这些方法。
    不知道这些是在哪里定义的。
      

  11.   

    他还使用了toString的方法,上面的怎么会继承toString 方法啊,object.java不是最上面的吗。而toString不是吧?
      

  12.   

    这几个方法都是在本地实现的方法,与操作系统有关,我们只管声明调用即可,具体是什么操作系统,该怎么调用,是jvm替我们隔离和决定的。
      

  13.   

    哦,知道了。谢谢。那就是我们只能够知道这里,其他的部分是由jvm管理的意思吧?
      

  14.   

    toString方法已经在Object类里实现了呀。
      

  15.   

    算是吧,实际我们编写的程序与操作系统之间夹了个jvm这一层,而不是直接对接,而jvm向下作出兼容各种操作系统的版本,向上提供统一的服务环境,才使得java可以一处编译处处运行。