29

在编写时使用 BlueJ 得到错误 "Unclosed Character Literal" :

class abc
{
   public static void main(String args[])
   {
       String y;
       y = 'hello';
       System.out.println(y);
   }
}

但我不知道出了什么问题。任何的想法?

谢谢。

4

8 回答 8

51

在 Java 中,单引号只能取一个字符,必要时可以转义。您需要对字符串使用以下全引号:

y = "hello";

你也用过

System.out.println(g);

我认为应该是

System.out.println(y);

注意:在创建char值时(稍后您可能会使用它们),您需要单引号。例如:

char foo='m';
于 2013-06-27T13:20:29.653 回答
8

Java 对字符使用双引号,对字符使用"String"单引号'C'

于 2013-06-27T13:20:37.927 回答
4

我想对现有答案做一点补充。如果您为具有不正确 unicode 形式的 char 赋值,您会得到相同的“未封闭字符文字错误”。就像你写的那样:

char HI = '\3072';

您必须使用正确的形式,即:

char HI = '\u3072';
于 2017-07-24T16:23:15.547 回答
2

'' 包含 single char,而 "" 包含 a String

改变

y = 'hello';

-->

y = "hello";
于 2013-06-27T13:20:05.690 回答
1

字符串 y = "你好";

会工作(注意双引号)。

字符 y = 'h'; 这适用于字符(注意单引号)

但类型是关键:''(单引号)表示一个字符,“”(双引号)表示字符串。

于 2014-10-21T19:28:49.620 回答
0

使用我在下面提到的双引号符号您的y数据类型是字符串,它应该双引号符号

class abc
{
   public static void main(String args[])
   {
       String y;
       y = "hello";
       System.out.println(y);
   }
}
于 2021-09-30T09:13:11.043 回答
0

Java中有8种原始数据类型。 是其中之一。当看到一个数据类型被定义。它从 JVM 堆中分配 1 字节的内存,并期望符号后的值具有两个条件。在此处输入图像描述 charcompilerchar=

  1. 包含在里面的值'(单引号)。
  2. 值是单个字符长。它可以是单个字符,也可以是对应单个字符的有效代码,您无法使用英文键盘键入。

同样,String 类型的数据类型应该用"(双引号)括起来,并且可以有任意长度的字符序列。

在给定的示例中,您混合了数据类型charString数据类型的概念。编译器清楚地说:

未封闭字符文字

意思是,你从'单引号开始,所以编译器在打开之后只需要一个字符',然后是一个结束'。因此,考虑了字符文字unclosed,您会看到错误。

因此,您可以使用char数据类型和'单引号将单个字符括起来。或者使用String数据类型和"双引号将任意长度的字符序列括起来。

所以,正确的做法是:

String y = "hello";
System.out.println(y);
于 2021-10-01T05:52:31.420 回答
-1

角色只需要一个值,伙计!比如:char y = 'h'; 也许你输入了 char y = 'hello'; 或之类的。祝你好运。对于上面提出的问题,答案非常简单,您必须使用双引号来给出字符串值。很容易;)

于 2019-07-24T23:52:16.257 回答