未闭合字符文字错误
Posted
技术标签:
【中文标题】未闭合字符文字错误【英文标题】:Unclosed Character Literal error 【发布时间】:2013-06-25 00:33:19 【问题描述】:使用 BlueJ 编写时出现错误“Unclosed Character Literal”:
class abc
public static void main(String args[])
String y;
y = 'hello';
System.out.println(y);
但我不知道出了什么问题。 有什么想法吗?
谢谢。
【问题讨论】:
Java 中的字符串需要用双引号括起来。使用"hello"
。
docs.oracle.com/javase/tutorial/java/data/strings.html
好的,所以我得到了太多关于更正答案的答案,但为什么 String
s 在 " " 和 char
在 ' ' 中?
为什么不char y;y = 'hello';
正如我在回答中所说,char
只能带 一个 字符。顾名思义,它是一个字符,并因此而被称为字符。
【参考方案1】:
在 Java 中,单引号只能占用一个字符,必要时可以转义。字符串需要使用全引号,如下:
y = "hello";
你也用过
System.out.println(g);
我认为应该是
System.out.println(y);
注意:在创建char
值时(您以后可能会使用它们)您需要单引号。例如:
char foo='m';
【讨论】:
【参考方案2】:Java 对"String"
使用双引号,对'C'
haracters 使用单引号。
【讨论】:
【参考方案3】:我想对现有答案做一点补充。 如果您为具有不正确 unicode 格式的 char 赋值,您会得到相同的“未封闭字符文字错误”。 就像你写的一样:
char HI = '\3072';
您必须使用正确的格式:
char HI = '\u3072';
【讨论】:
【参考方案4】:'' 包含单个 char
,而 "" 包含一个 String
。
改变
y = 'hello';
-->
y = "hello";
【讨论】:
【参考方案5】:字符串 y = "你好";
会起作用(注意双引号)。
char y = 'h'; 这适用于字符(注意单引号)
但类型是关键:''(单引号)表示一个字符,“”(双引号)表示字符串。
【讨论】:
【参考方案6】:使用双引号符号,如下所述
您的y
数据类型是字符串,它应该双引号符号
class abc
public static void main(String args[])
String y;
y = "hello";
System.out.println(y);
【讨论】:
【参考方案7】:Java 中有 8 种原始数据类型。
char
就是其中之一。当compiler
看到char
数据类型被定义。它从 JVM 堆中分配 1 字节的内存,并期望在 =
符号之后有两个条件的值。
'
中包含的值(单引号)。
值为单个字符长。可以是单个字符,也可以是对应单个字符的有效代码,不能使用英文键盘输入。
同理,String类型的数据类型应该用"
(双引号)括起来,并且可以有任意长度的字符序列。
在给定的示例中,您混合了 char
和 String
数据类型的概念。编译器清楚地说:
未闭合字符字面量
意思是,您从 '
单引号开始,因此编译器只期望在打开 '
之后是单个字符,然后是关闭 '
。因此,字符文字被视为unclosed
,您会看到错误。
因此,您要么使用char
数据类型和'
单引号将单个字符括起来。
或者使用String
数据类型和"
双引号将任意长度的字符序列括起来。
所以,正确的做法是:
String y = "hello";
System.out.println(y);
【讨论】:
【参考方案8】:角色只需要一个值,伙计!喜欢: 字符 y = 'h'; 也许你输入了 char y = 'hello';或之类的。祝你好运。对于上面提出的问题,答案非常简单,您必须使用双引号来给出字符串值。很简单;)
【讨论】:
以上是关于未闭合字符文字错误的主要内容,如果未能解决你的问题,请参考以下文章