如何使用char字面值初始化char数组?

19

以下语句在Java中不起作用,但在C中起作用:

char c[] = "abcdefghijklmn";

有什么问题吗?

Char数组只能像下面这样初始化吗?

char c[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n'};

Java中应该使用String str="something";。您可以使用String类的toCharArray()方法来获取char[]。 - nhahtdh
2
没问题,那只是两种不同的语言而已。 - MByD
1
它不能工作是因为Java有一个真正的String类,而不仅仅是像C一样的以null结尾的字符数组。 - Paul Tomblin
1
在Java中,char[]通常是无用的。你会比接触char[]更多地使用Java中的String类。 - nhahtdh
如果您想要一个可变的char[],可以使用StringBuilder。 - Peter Lawrey
5个回答

25
你可以使用 标签。
char c[] = "abcdefghijklmn".toCharArray();

如果你不介意创建一个不必要的字符串。

与C语言不同,String是对象而不仅仅是字符数组。

尽管如此,直接使用字符数组非常罕见。你确定不想使用String吗?


原始类型不足以表示所有数据类型,与C相比如何? - Victor S
7
所有对象都由基本数据类型构建而成,其中包括字符串。但使用对象的重点在于它们提供比基本数据类型更丰富的API。想要从开头和末尾删除空格,请使用 trim()。想要搜索子字符串,请使用 indexOf()。想要在分隔符上分割,请使用 split()。想要确保从并发线程对字符串的访问是安全的:没问题:String 是线程安全和不可变的,而不像 char 数组。为什么要使用 char 数组并自行重新实现所有这些功能呢? - JB Nizet

11

你可以从一个字符串初始化它:

char[] c = "abcdefghijklmn".toCharArray();

但是,如果你需要的是一个字符串,你应该直接使用字符串:

String s = "abcdefghijklmn";

2
在Java中,字面值"abcdefghijklmn"是一个String对象。您可以使用String的toCharArray()方法快速将其转换为字符数组。
尝试一下:
char[] c = "abcdefghijklmn".toCharArray();

2

试试这个:

String a = "abcdefghijklmn";   
char[] c = a.toCharArray();

2

如果你不想使用String的toCharArray()方法,那么char数组必须像其他数组一样进行初始化- char[] c = new char[] {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n'};


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接