是否可以在Java中没有构造函数的情况下实例化对象

时间:2018-11-13 17:09:13

标签: java oop object instance literals

在学习String文字和String对象时,我发现一个事实,有两种方法可以实例化String类型的变量

//Using literals
String s1 = "text";

//Using constructor
String s2 = new String("text");

我想知道是否可以通过某种方式创建一个类,而不是使用构造函数实例化它,而可以使用文字来实例化它

这是我的意思

class Value {
    int value;
    //Some methods
}

Value val = 10; //Program automatically sets val.value = 10

3 个答案:

答案 0 :(得分:1)

否,这是不可能的。 Java与之最接近的是autoboxing,您可以在其中编写如下内容:

Integer val = 10;

,编译器会自动将该赋值转换为涉及原语缓存的赋值(有一组固定的原语值可保证被缓存:布尔值true / false,字节和char值0-127,以及int值-128至127 ,As per the spec。尽管JVM可能而且几乎总是如此,但具有比其更广泛的基元缓存)。

答案 1 :(得分:0)

不。尽管您可以编写String s1 = "text";,但是Java编译器会自动创建一个对象。这可能是误导您的原因。但是它发生在里面。

答案 2 :(得分:0)

大多数情况下都是不可能的。像您一样创建String并分配int值都使用了构造函数,即使我们无法直接看到它。

但是很少有这样的场景。请阅读this。可以增加您的知识:)