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

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

例:

String s = "implicit instantiation"; 

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

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

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

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

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

不幸的是你不能那样做!

与C或C ++相反,您不能在java语言中重载任何运算符,因此没有可能的方法来执行类似的操作

 Foo myFoo = 1 

在字符串类的情况下:

 String s = "implicit instantiation" 

对于开发人员来说,这是糖sintax,幕后是编译器做“脏”工作并做类似的事情(记住有一个字符串池):

 String s = new String("implicit instantiation") 

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

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

 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; 

等等。