Java ToCharray是否调整字符数组的大小?

Java ToCharray是否调整字符数组的大小?,java,arrays,Java,Arrays,java中存在与toCharArray的混淆。当我写这段代码时,我注意到在这一行之后,ch=str.toCharArray()字符数组已调整大小 public static void main(String[] args){ String str = "helo java"; char[] ch = new char[str.length() + 1]; ch = str.toCharArray(); ch[str.length()] = '\uFDD0';

java中存在与
toCharArray
的混淆。当我写这段代码时,我注意到在这一行之后,
ch=str.toCharArray()字符数组已调整大小

public static void main(String[] args){
    String str = "helo java";
    char[] ch = new char[str.length() + 1];
    ch = str.toCharArray();
    ch[str.length()] = '\uFDD0';
    for(int i = 0; ch[i] != '\uFFD0'; i++){
        System.out.print(ch[i]);
    }         
}
那么我的问题是这个函数会重新调整数组的大小吗? 对不起,我的英语不好。谢谢

toCharArray()
方法返回新的字符数组,因此您以前的原始字符数组丢失了
根据

返回一个新分配的字符数组,其长度为该字符串的长度,其内容初始化为包含该字符串表示的字符序列

tocharray()
方法返回新的字符数组,因此以前的原始字符数组丢失
根据

返回一个新分配的字符数组,其长度为该字符串的长度,其内容初始化为包含该字符串表示的字符序列

tocharray()
方法返回新的字符数组,因此以前的原始字符数组丢失
根据

返回一个新分配的字符数组,其长度为该字符串的长度,其内容初始化为包含该字符串表示的字符序列

tocharray()
方法返回新的字符数组,因此以前的原始字符数组丢失
根据

返回一个新分配的字符数组,其长度为该字符串的长度,其内容初始化为包含该字符串表示的字符序列


toCharArray
不会调整字符数组的大小

char[]ch=新字符[str.length()+1]创建长度为10的新数组。str.length()是9

ch=str.toCharArray()
指定ch引用str.toCharArray()返回的新数组;所以现在
ch
引用了一个大小为9的数组


现在
ch[str.length()]
将导致异常

toCharArray
不会调整字符数组的大小

char[]ch=新字符[str.length()+1]创建长度为10的新数组。str.length()是9

ch=str.toCharArray()
指定ch引用str.toCharArray()返回的新数组;所以现在
ch
引用了一个大小为9的数组


现在
ch[str.length()]
将导致异常

toCharArray
不会调整字符数组的大小

char[]ch=新字符[str.length()+1]创建长度为10的新数组。str.length()是9

ch=str.toCharArray()
指定ch引用str.toCharArray()返回的新数组;所以现在
ch
引用了一个大小为9的数组


现在
ch[str.length()]
将导致异常

toCharArray
不会调整字符数组的大小

char[]ch=新字符[str.length()+1]创建长度为10的新数组。str.length()是9

ch=str.toCharArray()
指定ch引用str.toCharArray()返回的新数组;所以现在
ch
引用了一个大小为9的数组

现在
ch[str.length()]
将导致异常

.tocharray()
分配一个新的字符数组,这意味着您在此处丢失了原始数组

改为这样做:

final CharBuffer charbuf = CharBuffer.allocate(str.length() + 1);
// String implements CharSequence, so this works
charbuf.append(str).append('\uffd0');
// charbuf.array() contains the underlying char array
.tocharray()
分配一个新的字符数组,这意味着您在此处丢失了原始数组

改为这样做:

final CharBuffer charbuf = CharBuffer.allocate(str.length() + 1);
// String implements CharSequence, so this works
charbuf.append(str).append('\uffd0');
// charbuf.array() contains the underlying char array
.tocharray()
分配一个新的字符数组,这意味着您在此处丢失了原始数组

改为这样做:

final CharBuffer charbuf = CharBuffer.allocate(str.length() + 1);
// String implements CharSequence, so this works
charbuf.append(str).append('\uffd0');
// charbuf.array() contains the underlying char array
.tocharray()
分配一个新的字符数组,这意味着您在此处丢失了原始数组

改为这样做:

final CharBuffer charbuf = CharBuffer.allocate(str.length() + 1);
// String implements CharSequence, so this works
charbuf.append(str).append('\uffd0');
// charbuf.array() contains the underlying char array

char[]ch
是对字符数组的引用,您可以将ch分配给不同的数组,例如:

char[] a = new char[1];
char[] b = new char[2];

char[] ch;
ch = a; // here ch is pointing to the same array as a, so it's length is 1.
ch = a; // here ch is pointing to the same array as b, so it's length is 2.
因此,您可以这样编写您想要的代码(当然有很多可能的实现):

publicstaticvoidmain(字符串[]args){
String str=“hello java”;
char[]ch=str.toCharArray();
ch=数组.copyOf(ch,ch.length+1);
ch[ch.length-1]='\uFDD0';
for(int i=0;i
如您所见,您可以使用
Arrays.copyOf()
将数组的副本调整为新长度,然后在其中引入新字符


请注意,您使用的是
ch[i]!='\uFFD0'
在停止条件下,这在Java中是不正确的,因为您正在比较指针,而使用
!(ch[i].equals('\uFDD0')
char[]ch
是对字符数组的引用,您可以将ch分配给不同的数组,例如:

char[] a = new char[1];
char[] b = new char[2];

char[] ch;
ch = a; // here ch is pointing to the same array as a, so it's length is 1.
ch = a; // here ch is pointing to the same array as b, so it's length is 2.
因此,您可以这样编写您想要的代码(当然有很多可能的实现):

publicstaticvoidmain(字符串[]args){
String str=“hello java”;
char[]ch=str.toCharArray();
ch=数组.copyOf(ch,ch.length+1);
ch[ch.length-1]='\uFDD0';
for(int i=0;i
如您所见,您可以使用
Arrays.copyOf()
将数组的副本调整为新长度,然后在其中引入新字符


请注意,您在停止条件下使用
ch[i]!='\uFFD0'
进行迭代,这在Java中是不正确的,因为您正在比较指针,而使用
!(ch[i]。equals('\uFDD0')

什么
char[]ch
是对char数组的引用,您可以将ch分配给不同的数组,例如:

char[] a = new char[1];
char[] b = new char[2];

char[] ch;
ch = a; // here ch is pointing to the same array as a, so it's length is 1.
ch = a; // here ch is pointing to the same array as b, so it's length is 2.
因此,您可以这样编写您想要的代码(当然有很多可能的实现):

publicstaticvoidmain(字符串[]args){
String str=“hello java”;
char[]ch=str.toCharArray();
ch=