应该没有吧。因为strcpy()的参数都是指针型的。String是类对象。是我的推断。

解决方案 »

  1.   

    你可以定义一个和原来String 同样大小的char数组,然后用 System.arraycopy 把这个字符串的内容拷贝过去,再从定义的那个数组生成字符串。
    直接操作字符串是不可能的,因为 java 中的字符串是不可变对象,即一但生成,其内容就是不可改变的。如果需要可变的字符符,请使用 StringBuffer,但是这个东西,也没有提供 strcpy 这样的方法。虽然限制比较死,但是操作会更安全。String s  = "James Fancy";
    char[] buffer = new char[s.length];
    char[] sbuffer = s.toCharArray();
    System.arraycopy(sbuffer, 0, buffer, buffer.length);
    String d = new String(buffer);不过这样做一点意义都没有,其作用和 String d = new String(s) 是一样的,即多产生了两个 char[] 对象。
    如果你需要取 String 的内容(char 数组),直接用 s.toCharArray() 就可以了,你对这个 char[] 的改变不会影响到 s反正——我还是不明白楼主为什么要这样做。
      

  2.   

    谢谢大家。我其实就是不想再生成一个String对象,不过看来是不可避免的了。
      

  3.   

    就算是 C++ 的 strcpy,实际上和 Java 的生成一个新的 String 对象也是差不多的。
    只不过 C++ 里那个 char[] 可以重复利用
    Java 里的 String 由于其是不可变对象,所以你不能不生成新的 String 对象,但是,如果你的字符串内容不变化的话,直接用 newString = oldString 这样赋值会更好。——反正字符串是不可变对象,你也不用担心 oldString 改变了之后会影响到 newString,因为 oldString 就算改变了,原来的 String 对象还在,oldString 只是又引用了一个新的对象而已。