在编写时使用 BlueJ 得到错误 "Unclosed Character Literal" :
class abc
{
public static void main(String args[])
{
String y;
y = 'hello';
System.out.println(y);
}
}
但我不知道出了什么问题。任何的想法?
谢谢。
在 Java 中,单引号只能取一个字符,必要时可以转义。您需要对字符串使用以下全引号:
y = "hello";
你也用过
System.out.println(g);
我认为应该是
System.out.println(y);
注意:在创建char
值时(稍后您可能会使用它们),您需要单引号。例如:
char foo='m';
Java 对字符使用双引号,对字符使用"String"
单引号'C'
。
我想对现有答案做一点补充。如果您为具有不正确 unicode 形式的 char 赋值,您会得到相同的“未封闭字符文字错误”。就像你写的那样:
char HI = '\3072';
您必须使用正确的形式,即:
char HI = '\u3072';
'' 包含 single char
,而 "" 包含 a String
。
改变
y = 'hello';
-->
y = "hello";
字符串 y = "你好";
会工作(注意双引号)。
字符 y = 'h'; 这适用于字符(注意单引号)
但类型是关键:''(单引号)表示一个字符,“”(双引号)表示字符串。
使用我在下面提到的双引号符号您的y
数据类型是字符串,它应该双引号符号
class abc
{
public static void main(String args[])
{
String y;
y = "hello";
System.out.println(y);
}
}
Java中有8种原始数据类型。
是其中之一。当看到一个数据类型被定义。它从 JVM 堆中分配 1 字节的内存,并期望符号后的值具有两个条件。
char
compiler
char
=
'
(单引号)。同样,String 类型的数据类型应该用"
(双引号)括起来,并且可以有任意长度的字符序列。
在给定的示例中,您混合了数据类型char
和String
数据类型的概念。编译器清楚地说:
未封闭字符文字
意思是,你从'
单引号开始,所以编译器在打开之后只需要一个字符'
,然后是一个结束'
。因此,考虑了字符文字unclosed
,您会看到错误。
因此,您可以使用char
数据类型和'
单引号将单个字符括起来。或者使用String
数据类型和"
双引号将任意长度的字符序列括起来。
所以,正确的做法是:
String y = "hello";
System.out.println(y);
角色只需要一个值,伙计!比如:char y = 'h'; 也许你输入了 char y = 'hello'; 或之类的。祝你好运。对于上面提出的问题,答案非常简单,您必须使用双引号来给出字符串值。很容易;)