首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么String是Java中唯一有文字的类?

为什么String是Java中唯一有文字的类?
EN

Stack Overflow用户
提问于 2009-09-10 12:05:20
回答 9查看 608关注 0票数 2

为什么java.lang.String是唯一存在两种创建方式的类:

1)使用"new“关键字的普通方式。

代码语言:javascript
运行
复制
String s = new String("abc");

2)使用String文本(仅适用于String类)

代码语言:javascript
运行
复制
String s = "abc";

那么为什么有String字面量而没有其他类的字面量呢?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-09-10 12:11:48

String虽然是一个普通的类,但它代表了编程的基本元素之一(其他元素是数字和布尔值)。因此,Java从一开始就将String对象视为半原始变量,并允许这样做。

稍后,当自动装箱成为标准编译器的一部分时,您还可以用这种方式构建数值包装器对象。

代码语言:javascript
运行
复制
Integer i = 123;

正如Tom Hawtin-tackline在对问题的评论中提到的那样。

票数 2
EN

Stack Overflow用户

发布于 2009-09-10 12:08:01

简而言之,因为语言设计者喜欢它。

我猜String是一个很常见的类,所以他们做了一个例外。我相信也有其他一些类似的例外(参见Tom Hawtins评论)

票数 10
EN

Stack Overflow用户

发布于 2009-09-10 12:13:41

抛开自动装箱(这不算IMO --原语类型而不是类;只有一个隐式转换到包装器类),String(String)构造函数实际上很有用。它接受字符数据的副本,这意味着如果原始字符串很小,但具有较大的支持char[],则新字符串独立于它。

例如,如果您正在从文件中读取较短的行,则这可能很重要。

至于为什么会有字符串文字:因为它们很有用。你会用什么来代替?您是否希望强制开发人员使用:

代码语言:javascript
运行
复制
String x = new String(new char[] { 'h', 'e', 'l', 'l', 'o' });

同时又得不到实习机会?

您还需要哪个其他类的字面量?可以说,映射和列表的文字可能会很有用--我不记得它们是否会出现在Java7中。您可以将数组初始化器视为“有点像文字”,因为它是对象初始化的简写。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1404887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档