How java create objects implicitly? Like in case of String class

蹲街弑〆低调 提交于 2019-12-31 00:47:37

问题


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?


回答1:


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;



回答2:


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...




回答3:


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.



来源:https://stackoverflow.com/questions/43372097/how-java-create-objects-implicitly-like-in-case-of-string-class

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!