未关闭的字符字面量错误

37

在使用 BlueJ 编写以下代码时,出现了 "Unclosed Character Literal" 错误:

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

但我想不出问题出在哪里。

有任何想法吗?

谢谢。


4
Java中的字符串需要用双引号括起来。使用"hello" - Rohit Jain
好的,所以我得到了太多有关纠正答案的答案,但为什么在双引号中的字符串 " " 而在单引号中的字符 char - Gaurang Tandon
为什么不能这样写:char y; y = 'hello'; - Gaurang Tandon
2
正如我在答案中所说的一样,char 只能接受 一个 字符。按照定义,它是一个字符,并因此而被称为字符。 - nanofarad
8个回答

59

在Java中,单引号只能表示一个字符,必要时需要使用转义。对于字符串你需要如下使用双引号:

y = "hello";

你也使用了

System.out.println(g);

我认为应该是这样的

System.out.println(y);

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

char foo='m';

9

Java 使用双引号"String"表示字符串,单引号'C'表示字符。


5
我很乐意为现有答案添加一些补充。如果您使用不正确的Unicode格式给char赋值,就会出现相同的“未关闭字符文字错误”。例如,当您编写以下内容时:
char HI = '\3072';

您需要使用正确的表单格式,即:
char HI = '\u3072';

2

''表示单个char,而""表示一个String

更改

y = 'hello';

-->

y = "hello";

1

字符串 y = "hello";

这将有效(请注意双引号)。

字符 y = 'h'; 对于字符,这将有效(请注意单引号)。

但类型是关键:一个字符使用''(单引号),字符串使用""(双引号)。


1
Java中有8种原始数据类型。 enter image description here 其中之一是char。当compiler看到定义了char数据类型时,它会从JVM堆中分配1字节的内存,并期望在=符号后面有一个值,该值有两个条件。
  1. 值被包含在'(单引号)中。
  2. 值只能由一个字符组成。它可以是单个字符或对应单个字符的有效代码,你无法使用英文键盘输入该代码。

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

在给定的示例中,您混合了charString数据类型的概念。编译器明确指出:

未关闭的字符文字

意思是,您以单引号'开头,因此编译器只期望在打开'后跟一个单个字符,然后是一个闭合的'。因此,字符文字被认为是未关闭的,因此出现错误。
因此,您可以使用char数据类型和'单引号来包含单个字符。 或者使用String数据类型和"双引号来包含任意长度的字符序列。
因此,正确的方法是:
String y = "hello";
System.out.println(y);

0

请按照我下面的提示使用双引号符号

您的y数据类型是字符串,应该使用双引号符号

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

-1

字符只能取一个值,兄弟!例如: char y = 'h'; 也许你输入了 char y = 'hello'; 或者其他什么。祝好运。对于上面提出的问题,答案非常简单,你必须使用双引号来给出字符串值。足够简单了;)


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