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;
等等。