java如何隐式创建对象?就像String类一样

时间:2017-04-12 14:14:05

标签: java string objectinstantiation

我无法理解如何隐式创建对象。

示例:

String s = "implicit instantiation";

我可以创建自己的类,可以隐式创建对象吗?

3 个答案:

答案 0 :(得分:3)

不,编译器会隐式处理字符串实例化。只有String和Array类具有此属性。

String greeting = "Hello world!";
char[] helloArray = { 'h', 'e', 'l', 'l', 'o', '.' };

Autoboxing允许您隐式实例化原始包装类型的对象,但这也是编译器处理的特殊情况。您无法使用此功能创建自己的类。

Boolean b = false;
Integer i = 0;
Double pi = 3.1416;

答案 1 :(得分:1)

不幸的是你不能这样做!

与C或C ++相反,你不能用java语言重载任何运算符,所以没有办法做类似的事情

Foo myFoo = 1

在字符串类的情况下:

String s = "implicit instantiation"

对于开发人员而言,这是糖sintax,幕后是编译器做的"脏"工作和做某事(记住有一个字符串池):

String s = new String("implicit instantiation")

这同样适用于其他类型的数组,如数组或数字包装......

答案 2 :(得分:0)

对于对象的每个实例,您需要一个构造函数和一个构造函数,它是一个构造和初始化方法的特殊方法。例如:

String s;  // Is not initialized and it's nos constructed.

那么如何在java中构造一个新对象?使用new operator轻松创建新对象!

s = new String("qwe"); // New object constructed

但是这里有许多新手被混淆的东西。为什么我能这样做:

String s= "asdfasd;" 

因为String是Java中的一个特例,并且您不需要像所有类的原始变量一样添加new operator。例如:

Integer i = 3; 
Double d = 3.3d;

等等。