【问题标题】:How to init char array using char literals?如何使用 char 文字初始化 char 数组?
【发布时间】: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

标签: java char


【解决方案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'};

        【讨论】:

          猜你喜欢
          • 2013-09-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-04-29
          • 2013-11-11
          • 2023-03-17
          相关资源
          最近更新 更多