【问题标题】:String with one character can be casted to char?一个字符的字符串可以转换为字符吗?
【发布时间】:2020-04-12 17:34:13
【问题描述】:
String message = "a";
char message1 = (char) message;
System.out.println(message1);

给我一​​个输出错误,

这应该很容易转换,因为字符串是一个字符"a"

我知道我可以做到,很抱歉,如果两者存储相同(只有一个字符),为什么两者不兼容?

【问题讨论】:

  • "由于字符串是一个字符“a”,因此应该轻松转换吗?"你能把这个问题改写成更容易理解的英语吗?您是在问“为什么不能将 "a" 转换为 char?”或“可以将"a" 转换为char”或“如何将"a" 转换为char?”

标签: java string casting char


【解决方案1】:

如您所见,不,您不能将单个字符 String 转换为 char。但是你可以明确地提取它:

String message = "a";
char message1 = message.charAt(0);

【讨论】:

  • 如果存储相同的一个字符,为什么两者不兼容?
【解决方案2】:

不,你不能那样做。您可以将char 强制转换为Character,因为Character 对象类型是char 的“盒装”版本基本类型

Character charObject  = (Character) 'c';
char charBase = (char) charObject;

实际上,由于自动装箱和自动拆箱,您不需要 explicit 演员表:

Character charObject  = 'c';
char charBase = charObject;

但是,String 是一种对象类型,与任何其他对象类型非常相似。这意味着您不能将其转换为char,您需要使用charAt(int index) 方法从中检索字符。

请注意,您可能希望改用codePointAt(int index),因为Unicode 代码点很可能超出了可以存储在char 表示的16 位中的65536 个代码点。因此,请确保在使用charAt(int index) 时,您的字符串中不存在“补充平面”中定义的字符。

在 Java 中,任何类型都可以转换为 String,但也可能直接将字符附加到字符串中,因此 "strin" + 'g' 可以正常工作。这也是因为String+ 运算符是Java 中的语法糖(即其他对象不能使用+ 作为运算符,您必须使用append() 之类的方法)。请记住,它返回一个新字符串,而不是扩展原始的"strin" 字符串。 Java 字符串毕竟是不可变的。

【讨论】:

    【解决方案3】:

    您不能将字符串转换为字符。下面是一个 sn-p 总是从字符串中选择第一个字符,

    char c = message.charAt(0);
    

    如果您想将字符串转换为字符数组,则可以这样做,

    String g = "test";
    char[] c_arr = g.toCharArray(); // returns a length 4 char array ['t','e','s','t']
    

    【讨论】:

      【解决方案4】:

      带有一个字符的字符串更类似于char[1]。无论如何,直接检索字符:

      String ex = /* your string */;
      if (!ex.isEmpty()) {
          char first = ex.charAt(0);
      }
      

      【讨论】:

        猜你喜欢
        • 2014-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多