[英]Java- when a user inputs a string, is it a string literal?
我有一个问题可以帮我做作业。 我们使用字符串文字编写程序并反向打印。 我写了它,它工作正常,但我有两个不同的版本。 第一个使用扫描仪,因此用户可以输入字符串,然后反向打印。 在第二个中,我声明一个字符串文字,然后反向打印。
我的问题不是关于我的程序运行正常,而是我找不到任何在线或我的书中说输入的字符串是字符串文字。 我知道字符串文字通常写成
String a = "Welcome to Java"
但可以写成
String a = new String("Welcome to Java")
我假设答案是肯定的,因为我的书基本上说它必须在引号中,但我想在我递交我的作业之前仔细检查我正在转向正确的版本。 在此先感谢任何澄清!
字符串文字是引号中的字面值,字面意思是在代码中:
String literal = "string literal";
输入字符串不是字符串文字,只是字符串。
在@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
对象的表达式。 并且执行该表达式的结果保证是与文字表示的String
不同的 String
对象。
是否必须用引号写出才能被视为字符串文字?
是。 更重要的是,它必须在程序的源代码中用引号编写 ,才有资格作为字符串文字。
如果我编写了一个接受GUI使用输入的程序,并且用户输入了带有双引号字符的输入,那么这不是字符串文字。 相反,它是一个String
,恰好以双引号字符开头和结尾。 (是的......在这种情况下,字符串的值将包含引号字符。)
字符串文字( "foo bar baz"
)是一个String
对象 - 它只是创建这些对象的一种很好的语法。 当您从用户那里获得输入时,它也将是一个String
对象 - 与该文字相同的类型。
但是,字符串文字是指该语法(引号中的内容),而不是对象的类型。 因此,要准确回答您的问题,用户的输入不是字符串文字。
输入的字符串与字符串文字没有区别。
字符串以Java形式存储为String
类的对象。 得到一个的一种方法是字符串文字:“hello sailor”是一个字符串文字,当在Java表达式中使用时,它是String
类的对象。 返回字符串的方法也返回String
类的对象。 所以它们在所有目的上都是等价的。
有办法从一个new String("...")
告诉文字,但那些是相当人为的。 作为初学者,您不必担心这些。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.