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

Posted

技术标签:

【中文标题】如何使用 char 文字初始化 char 数组?【英文标题】:How to init char array using char literals? 【发布时间】:2012-07-27 12:21:11 【问题描述】:

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

char c[] = "abcdefghijklmn";

怎么了?

char数组只能按如下方式初始化吗?

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

【问题讨论】:

应该是 String str="something";对于 Java。您可以使用 String 类的 toCharArray() 方法来获取 char[]。 没有错,这只是两种不同的语言。 它不起作用,因为 Java 有一个真正的 String 类,而不仅仅是像 C 那样的以 null 结尾的字符数组。 char[] 在 Java 中通常没用。您将在 Java 中使用 String 类,而不是触摸 char[] 如果你想要一个可变的char[],请使用 StringBuilder 【参考方案1】:

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

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

但是,如果你需要的是一个字符串,你应该简单地使用一个字符串:

String s = "abcdefghijklmn";

【讨论】:

【参考方案2】:

你可以使用

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

如果您不介意创建不必要的字符串。

与 C 不同,字符串是对象,而不仅仅是字符数组。

也就是说,直接使用 char 数组是非常罕见的。你确定你不想要一个字符串吗?

【讨论】:

与C相比,原始类型不足以表示所有数据类型? 所有对象都是从基本数据类型构建的,包括字符串。但是使用对象的意义在于它们提供了比基本数据类型更丰富的 API。要从开头和结尾删除空格,请使用trim()。要搜索子字符串,请使用indexOf()。要拆分分隔符,请使用split()。想要确保从并发线程访问 String 是安全的:没问题:String 是线程安全且不可变的,这与 char 数组不同。为什么要使用 char 数组并自己重新实现这一切?【参考方案3】:

文字“abcdefghijklmn”是Java 中的String 对象。您可以使用 String toCharArray() 方法快速将其转换为 char 数组。

试试这个:

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

【讨论】:

【参考方案4】:

试试这个:

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

【讨论】:

【参考方案5】:

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

【讨论】:

以上是关于如何使用 char 文字初始化 char 数组?的主要内容,如果未能解决你的问题,请参考以下文章

从字符串文字初始化char数组时会发生什么?

如何用数字初始化 char 类型的全局一维数组?

如何使用省略尾随 '\0' 的字符串文字初始化 std::array<char, N>

如何检查 char 数组中的空格?

如何初始化一个char数组?

为什么不能将char指针定义为数组?