Java - 当一个字符串不是一个字面而是一个对象?
再次,我在脑中又一次挫折之后再次访问Java(请参阅我的个人资料)。这里也提出了类似的问题,但我没有想过要提出这个问题。Java - 当一个字符串不是一个字面而是一个对象?
我一直都明白String
是什么。即在官方API中明确表达的An对象。不过,我一直在阅读关于数据类型的Java指南this。
对我来说这个概念很清楚。基元是文字。也就是说,它们不能被实例化和被指定如下值:
primtype prim =?;
关于Java的官方导游似乎都(正确地)识别字符串作为文字,但把标准是什么被视为一个文字。鉴于java.lang.String
它确实是一个java.lang.Obect
(通过扩展),这个String
是否与literal
之间的根本区别仅在于如何为变量赋值 - 仅仅通过赋值(字面)赋予构造(目的)?如果你能帮助澄清,请随时向我指出更深入的资源?
我也想知道,如果对文字的标准是跨语言一致(如果这意味着“弱类型”语言只能用文字?)
我觉得你很混乱的原始和文字。
类型可以是原始类型,也可以是对象类型(即从Object继承)。
字面意味着代码中的字面意思表示。这可以表示一个基元或一个对象类型。
所以'字面类型'并没有什么意义。一个字符串永远不是文字,它总是一个对象。文字只是表示代码中字符串的一种可能方式。
其他语言的治疗差异很大。例如在C#中,所有东西都从Object派生,包括Java中的'primitive'类型。
它只能被称为一个文字,因为你可以这样做:
"this is a string"
而不必做这样的事情的:
new String(new char[] {'t', 'h', 'i', 's' ...})
文本是,例如,5
,或9.3f
,或'd'
。因此,String
(构建为"this"
)将属于该类别。
一个非文字的例子是new Object();
。如果您使用new
关键字制作String
,则它不是文字。
但是,一旦制作String
,它根本就没有关系。他们仍然是相同的字符串,不管你是否使它像"this"
或new String(new char[]{'t','h','i','s'})
。
这就是我的想法!谢谢! – thejartender 2013-04-09 12:18:51
这仅仅是你如何分辨它选择的问题。 通过认定中,因为它扩展对象是一个对象,但另一方面的Java允许您只需使用
String str = "this is a string"
可能是简单的事情。现在是高达你,你怎么称呼它,直到你现在发生的事情下面
你不应该混淆不同的,非排他的概念是什么。 “literal”是用于在编程语言中表达某些常量项目的词汇/语法概念。 Java中的许多文字描述原始值,然而,在不含原语的不同语言中,可以使用相同的语法来描述不同质量的常量项目。
不同文字描述更复杂的项,例如串或阵列,或甚至功能(参见即将λ-语法 - lambda表达式被广泛认为是“函数文本”)。
在多个地方String有时被称为文字。我非常满意String是一个对象,我只是想清除一些小混乱。 – thejartender 2013-04-09 12:31:42
说“这个字符串字面”是完全有效的,我认为,只要你意识到的意思是相对于字符串的值(或初始化),而不是字符串类型。这就像说'这个字符串是一个空字符串',但'空字符串'不是一个类型。 – 2013-04-09 12:36:37