How java create objects implicitly? Like in case o

2020-04-08 06:35发布

I can't understand how an object is created implicitly.

Example:

String s = "implicit instantiation";

Can I make my own class whose objects can be created implicitly?

3条回答
做个烂人
2楼-- · 2020-04-08 07:05

For every instance of an object you need a Constructor and a constructor its a a special method for construct and initialize methods. Example:

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

So how do you construct a new object in java? Easy with the new operator you create a New Object!

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

But here is something that a lot of newbies get confussed. Why i can do this:

String s= "asdfasd;" 

Because String is a special case in Java and you don't need to add a new operator like all the primitive variables that are classes. Example:

Integer i = 3; 
Double d = 3.3d;

and So on.

查看更多
萌系小妹纸
3楼-- · 2020-04-08 07:17

No, String instantiation is handled implicitly by the compiler. Only the String and Array classes have this property.

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

Autoboxing allows you to implicitly instantiate objects of primitive wrapper types, but that's also a special case handled by the compiler. You can't create your own classes with this ability.

Boolean b = false;
Integer i = 0;
Double pi = 3.1416;
查看更多
叛逆
4楼-- · 2020-04-08 07:18

Unfortunately you just can not do that!

opposite to C or C++ you can not overload any operator in java language, so there is no possible way to do something like

Foo myFoo = 1

in the case of the string class:

String s = "implicit instantiation"

that is sugar sintax for the developers, behind the scenes is the compiler doing the "dirty" work and doing something like (remember there is a string pool):

String s = new String("implicit instantiation")

The same applies for some other Types like Arrays, or wrapper for numbers...

查看更多
登录 后发表回答