没试过,可能编译器仅把字符串看成字符数组。而实际上字符串还有个结尾标志,compareTo里面的代码执行时找不到结束标志便抛出了异常。

解决方案 »

  1.   

    但是字符串是String对象,那char[]呢。如果真像你说的这样(我这里现在没java环境),那编译器到底是如何理解这两者的。
      

  2.   

    ft, char[] 也是对象, 调用的是 compareTo(Object)
    这个方法, 但是实际上不是, 运行时当然就会出错了.
      

  3.   

    To SuperMMX(笑天子) :
        你看看JDK,compareTo的参数是String,不是Object。
      

  4.   

    int compareTo(Object o)
              Compares this String to another Object. int compareTo(String anotherString)
              Compares two strings lexicographically. int compareToIgnoreCase(String str)
              Compares two strings lexicographically, ignoring case considerations.
    懒得说话了, 自己看吧.
      

  5.   

    To lyhook(问题人物)
    你看看jdk.compareTo的参数有String,也有Object
     int compareTo(Object o) 
              Compares this String to another Object. 
     int compareTo(String anotherString) 
              Compares two strings lexicographically. 
     int compareToIgnoreCase(String str) 
              Compares two strings lexicographically, ignoring case considerations. 
      

  6.   

    咳,是我错了!
    我手边的这本参考书(java 2 命令详解)里只有String参数的,犯懒了,就没查JDK。谢谢各位,我给分。
      

  7.   

    SuperMMX(笑天子)说得对。查Java Language Specification:4.3.1 Objects
    An object is a class instance or an array.