Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JVM是否总是创建对象类的实例_Java_Jvm_Classloader - Fatal编程技术网

Java JVM是否总是创建对象类的实例

Java JVM是否总是创建对象类的实例,java,jvm,classloader,Java,Jvm,Classloader,假设在下面的代码中,JVM总是创建对象类的实例,因为对象是Java中所有类的父对象 class MyTestclass{ void printMe(String name){ System.out.println('I am '+name); } public static void main(String args[]){ MyTestclass obj = new MyTestclass(); obj.printMe("st

假设在下面的代码中,JVM总是创建对象类的实例,因为对象是Java中所有类的父对象

class MyTestclass{

   void printMe(String name){
        System.out.println('I am '+name);
   }
   public static void main(String args[]){
        MyTestclass obj = new MyTestclass();
        obj.printMe("stackOverFlow.com");
   }
}
另一个类是TestClass2

class TestClass2{

   void printMe(String name){
        System.out.println('I am '+name);
   }
   public static void main(String args[]){
        MyTestclass obj = new MyTestclass();
        TestClass2 obj2 = new TestClass2();
        obj.printMe("stackOverFlow.com");
        obj2.printMe("stackOverFlow.com");
   }
}

如果我运行这两个类,JVM会创建两个对象实例吗?

无论继承层次结构是什么,都只创建一个对象。来自父对象的特征将被继承,并在与new operator一起使用的类的对象中提供

  MyTestclass obj = new MyTestclass();

obj
实例中,一个对象具有
MyTestclass
object
类的所有功能。

无论继承层次结构是什么,都只创建一个对象。来自父对象的特征将被继承,并在与new operator一起使用的类的对象中提供

  MyTestclass obj = new MyTestclass();

一个对象,具有
obj
实例中的
MyTestclass
object
类的所有功能。

否。仅创建了一个对象,并以子对象的名义分配了所有内存,即使对于从父对象继承的字段也是如此

JVM是否总是创建对象类的实例,因为对象是Java中所有类的父类

class MyTestclass{

   void printMe(String name){
        System.out.println('I am '+name);
   }
   public static void main(String args[]){
        MyTestclass obj = new MyTestclass();
        obj.printMe("stackOverFlow.com");
   }
}

不是。但是JVM会调用父构造函数,直到它到达最顶层的对象构造函数,该构造函数调用为

否。只创建了一个对象,所有内存都以子对象的名义分配,即使是从父对象继承的字段也是如此

JVM是否总是创建对象类的实例,因为对象是Java中所有类的父类

class MyTestclass{

   void printMe(String name){
        System.out.println('I am '+name);
   }
   public static void main(String args[]){
        MyTestclass obj = new MyTestclass();
        obj.printMe("stackOverFlow.com");
   }
}

不是。但是JVM会调用父构造函数,直到它到达最顶层的对象构造函数,该构造函数调用为

嗯。。。这取决于您询问是否创建了
对象
的实例的意思

记住继承是如何工作的。假设您有四个类:
Object
Animal
Dog
Terrier
。创建
Terrier

Terrier t = new Terrier();
只创建一个实例。您不会创建单独的
对象
实例。但另一方面,遗传的要点是,
,它
动物
,它
对象
。因此,创建的这个实例不仅仅是一个
对象
,它肯定是一个
对象
,就像其他所有东西一样

你本来可以写的

Object t = new Terrier();

而且它是完全有效的Java


因此答案是:
对象的子类的单个实例被创建,因此它是一个
对象。。。这取决于您询问是否创建了
对象
的实例的意思

记住继承是如何工作的。假设您有四个类:
Object
Animal
Dog
Terrier
。创建
Terrier

Terrier t = new Terrier();
只创建一个实例。您不会创建单独的
对象
实例。但另一方面,遗传的要点是,
,它
动物
,它
对象
。因此,创建的这个实例不仅仅是一个
对象
,它肯定是一个
对象
,就像其他所有东西一样

你本来可以写的

Object t = new Terrier();

而且它是完全有效的Java


因此答案是:创建了
对象
子类的单个实例,因此它是
对象

。理论上,JVM可以在堆栈上“分配”对象,因此实际上不会创建对象,因为它有效地将所有字段解压为局部变量。请参见
-XX:+UseScapeAnalysis
实际上,它很少这样做。理论上,JVM可以在堆栈上“分配”对象,因此实际上不会创建任何对象,因为它有效地将所有字段解压为局部变量。请参见
-XX:+UseScapeAnalysis
,实际上它很少这样做。是的,我的意思是将出现或创建多少对象类实例。是的,我的意思是将出现或创建多少对象类实例。