4

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

例子:

String s = "implicit instantiation";

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

4

3 回答 3

3

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

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

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

Boolean b = false;
Integer i = 0;
Double pi = 3.1416;
于 2017-04-12T14:17:07.103 回答
1

不幸的是,你不能那样做!

与 C 或 C++ 相反,您不能重载 Java 语言中的任何运算符,因此无法执行类似的操作

Foo myFoo = 1

在字符串类的情况下:

String s = "implicit instantiation"

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

String s = new String("implicit instantiation")

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

于 2017-04-12T14:19:39.913 回答
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;

等等。

于 2017-04-12T21:02:15.740 回答