我有一个问题要帮我做作业。我们使用字符串文字编写程序并反向打印。我写了它,它工作正常,但我有两个不同的版本。第一个使用扫描仪,因此用户可以输入字符串,然后反向打印。在第二个中,我声明一个字符串文字,然后反向打印。
我的问题不是关于我的程序运行正常,而是我找不到任何在线或我的书中说输入的字符串是字符串文字。我知道字符串文字通常写成
String a = "Welcome to Java"
但可以写成
String a = new String("Welcome to Java")
我假设答案是肯定的,因为我的书基本上说它必须在引号中,但我想在我递交我的作业之前仔细检查我正在转向正确的版本。提前感谢您的任何澄清!
答案 0 :(得分:7)
字符串文字是引号中的字面值,字面意思是代码:
String literal = "string literal";
输入字符串不是字符串文字,只是一个字符串。
答案 1 :(得分:3)
@Shakedown暗示,字符串文字是Java源代码的语法元素。它(在一个松散的意义上)是一个Java String
对象,当你的程序执行时,对应该文字。我们可以说文字表示运行时字符串。此外,JLS指定具有相同字符的两个字符串文字将在简单程序执行的上下文中表示相同的String对象。
在您的代码段中。
String a = "Welcome to Java";
和
String a = new String("Welcome to Java");
...源代码中的"Welcome to Java"
字符序列都是字符串文字,假设它们在同一个执行中使用,它们将表示相同的(实例化)String对象。
但是,new String("Welcome to Java")
不是字符串文字。它是一个创建新String
对象的表达式。并且执行该表达式的结果是保证是不同的 String
对象到文字所表示的对象。
是否必须用引号写出才能被视为字符串文字?
是。更重要的是,它必须在程序的源代码中用引号编写,才能成为字符串文字。
如果我编写了一个接受GUI使用输入的程序,并且用户输入了带有双引号字符的输入,那么这不是字符串文字。相反,它是一个String
恰好以双引号字符开头和结尾。 (是的......在这种情况下,字符串的值将包含引号字符。)
答案 2 :(得分:1)
字符串文字("foo bar baz"
)是String
对象 - 它只是创建此类对象的一种很好的语法。当您从用户那里获得输入时,它也将是String
对象 - 与该文字相同的类型。
但是,字符串文字是指语法(引号中的内容),而不是对象的类型。因此,要准确回答您的问题,用户的输入不是字符串文字。
答案 3 :(得分:1)
输入的字符串与字符串文字没有区别。
字符串以Java格式存储为类String
的对象。得到一个的一种方法是字符串文字:"你好水手"是一个字符串文字,当在Java表达式中使用时,它是类String
的对象。返回字符串的方法也返回类String
的对象。因此,它们可以用于所有目的。
有一些方法可以告诉new String("...")
的文字,但这些文字相当做作。作为初学者,你不必担心这些。