首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >包装器类的声明

包装器类的声明
EN

Stack Overflow用户
提问于 2013-10-22 14:35:43
回答 5查看 2.3K关注 0票数 3

此问题是问题How can a string be initialized using " "?的后续问题

我想引起您的注意,即使是IntegerDoubleCharacterFloatBoolean包装器类也可以像声明String一样声明:

代码语言:javascript
复制
String s = "Test string"

Integer i = 10; //valid
Double d = 10.00; //valid
Boolean b = true; //valid

这些类是否也会像String类一样被特殊对待。

EN

回答 5

Stack Overflow用户

发布于 2013-10-22 14:42:47

正如我在前面的回答(How can a string be initialized using " "?)中指出的那样

是的,为了在OOP中保留primitive类型,设计人员用WrappersprimitivesObject's之间架起了桥梁,他们有一个特殊的待遇。

原因很明显是explained in docs

然而,有理由使用对象来代替原语,并且

平台为每种原语数据类型提供了包装类。这些类将原语“包装”在一个对象中。通常,包装是由编译器完成的-如果您在需要对象的地方使用基元,编译器会将基元封装在其包装器类中。同样,如果在需要基元的情况下使用number对象,则编译器会为您打开该对象的包装箱。有关更多信息,请参阅Autoboxing and Unboxing

我们在我们的程序中广泛地使用了primitives,因此它可能是一个设计决定,以允许语法,如

代码语言:javascript
复制
   Integer i = 10; //primitive style

然后,当memory发现带有Assignment operator =Wrapper类型声明时,它会在Assignment operator时间为i本身分配,因为它是一个primitive类型

在语法方面,这更方便、更愉快(至少对我来说是这样:)。

而不是写作,

代码语言:javascript
复制
   Integer i = new Integer(10); //Object creation style
票数 4
EN

Stack Overflow用户

发布于 2013-10-22 14:37:56

所有这些陈述如下:

代码语言:javascript
复制
Integer i = 10; //valid
Double d = 10.00; //valid
Boolean b = true; //valid

是有效的,因为autoboxing

Java是

编译器在原始类型和它们对应的对象包装器类

之间进行的自动转换

票数 3
EN

Stack Overflow用户

发布于 2013-10-22 14:48:34

是的,原始包装类的行为也类似于String类。

你可以像下面这样说明

代码语言:javascript
复制
Integer i1 = new Integer(10); //valid
Integer i2 =10;
System.out.println(i1==i2); // this one is false
i1=10;  
System.out.println(i1==i2); //// this one is true
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19510684

复制
相关文章

相似问题

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