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

前端 未结 3 1495
悲哀的现实
悲哀的现实 2021-01-19 19:06

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

Example:

String s = \"implicit instantiation\";

Can I make my own class w

相关标签:
3条回答
  • 2021-01-19 19:32

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

    0 讨论(0)
  • 2021-01-19 19:41

    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;
    
    0 讨论(0)
  • 2021-01-19 19:41

    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.

    0 讨论(0)
提交回复
热议问题