public class Reserve {
    
    public static char[] reserves(String a){
        int n=a.length();
        char c;
        char[] s=new char[n];
        s=a.toCharArray();                //这句不是可以吗!
        for(int i=0;i<(n-1)/2;i++)
        {c=s[i];
         s[i]=s[n-1-i];
         s[n-1-i]=c;
        }
        System.out.println(s);
        a=s.toString();                      //  这个语句有什么问题?
        System.out.println(a);           //为什么会输出  “[C@35ce36“
        return s;
    }
    
    public static void main (String[] args){
        String k="abcdefgijklmnopqrstuvwxyz!";
        System.out.println("-----------------");
        System.out.println(Reserve.reserves(k));
    }
    
}
运行结果:
-----------------
!zyxwvutsrqpnomlkjigfedcba
[C@35ce36
!zyxwvutsrqpnomlkjigfedcbas的toString()是要返回s的地址吗?
那么是否需要StringBuffer 将s转回String呢?
或者有更高明的办法!还有 我在API里怎么就找不到javax.severlet包呢?

解决方案 »

  1.   

    jdk不包括javax.severlet包;下载一个j2ee包,里面包含;其他WEB容器也带了,或者IDE也带了.
    你的确代码中s是个数组对象,s.toString()它返回一个代表对象的字符串.
      

  2.   

    a = new String(s);array一般都用new String(...)
    只有StringBuffer才用toStringStringBuffer本身就提供reverse()方法,何必自己写char[] s=new char[n];是多余的
    直接char[] s=a.toCharArray();
      

  3.   

    StringBuffer本身就提供reverse()方法,何必自己写
      

  4.   

    public class Reserve {
        
        public static char[] reserves(String a){
            int n=a.length();
            char c;
            char[] s=new char[n];
            s=a.toCharArray();                //这句不是可以吗!
            for(int i=0;i<(n-1)/2;i++)
            {c=s[i];
             s[i]=s[n-1-i];
             s[n-1-i]=c;
            }
            System.out.println(s);
            //a=s.toString();                      //  这个语句有什么问题?
            a = new String(s);
            System.out.println(a);           //为什么会输出  “[C@35ce36“
            return s;
        }
        
        public static void main (String[] args){
            String k="abcdefgijklmnopqrstuvwxyz!";
            System.out.println("-----------------");
            System.out.println(Reserve.reserves(k));
        }
        
    }
      

  5.   

    [ 表示数组, C表示char,@35ce36表示首地址(记不清是从大到小的记录,还是从小到大的记录)
      

  6.   

    s是char数组,为引用类型,跟其他没有重写过toString()方法的类一样,它将返回该对象的首地址,而StringBuffer的toString()方法是重写过的,以及常见的集合类型(如List,Map等)的toString()方法都是重写过的版本
      

  7.   

    to   bigc2000(公元2005年4月9日) 你是看了《深入JAVA虚拟机》才有这样的认识么?
      

  8.   

    to   liaoxiaoqi(天崖) 我是说我下载的文档你找不到  javax.severlet包
    而不是说JDK里面
    我想学习severlet的类库