Java中new一个对象执行什么代码

New一个类的的时候,

  1. 执行父类的static成员和static代码块(按照先后顺序)
  2. 执行子类的static成员和static代码块(按照先后顺序)
  3. 执行父类的非static成员字段变量和代码块的初始化(按照先后顺序)
  4. 执行父类的构造方法
  5. 执行子类的非static成员字段变量和代码块的初始化(按照先后顺序)
  6. 执行子类的构造方法

记忆方法:从父到子,静态到非静态
参考链接

package excise;

class A{
	static{
		System.out.print("a");
	}
	public A(){
		System.out.print("b");
	}
}

class B extends A{
	static{
		System.out.print("c");
	}
	public B(){
		System.out.print("d");
	}
}

public class excise {
	public static void main(String[] args) {
		A b = new B();
		b = new B();
	}
}

输出结果:

acbdbd

解析:
易混淆

A b;		//定义一个类变量(引用),类型为A,变量名b
b = new B()	//实例化B,并将它赋值给b

A b = new B();
b = new B();

new了两次B(),其实第一次new的B还在,只不过找不到了,只能等待垃圾回收机制释放,b指向第二次new的B

第一次new的时候,首次static块会被加载到缓存中,第二次new的时候,不需要重复加载,直接用即可,所以static块只加载一次

参考链接
参考链接
参考链接
参考链接

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 1. 根据类加载器,将类的静态代码块和成员变量加载到JVM。 2. 在内存的堆区对象分配一块空间。 3. 根据类的构造方法,初始化对象的成员变量。 4. 在堆区对象上创建一个指向方法区方法的指针,指向类的方法。 5. 返回对象的引用。 ### 回答2: 在Java,使用关键字"new"来创建一个对象。创建对象的过程主要包括以下几个步骤: 1. 在内存分配空间:使用关键字"new"来申请一块内存空间,用来存储对象的成员变量和方法。 2. 分配对象的引用:为这个对象分配一个引用变量,该引用变量用来指向申请到的内存空间。例如:Person person = new Person(); 3. 调用构造方法:通过new关键字后面的构造方法来初始化对象的成员变量。构造方法是一个特殊的方法,它的名称与类名相同,并没有返回类型。在使用new关键字创建对象时,自动调用该构造方法。 4. 执行初始化代码块:如果对象定义了初始化代码块,在对象创建的过程,这些初始化代码执行。 5. 返回对象的引用:创建对象后,new表达式返回对象的引用,我们可以通过引用来访问对象的成员变量和方法。 需要注意的是,使用new关键字创建对象时,在堆内存创建对象,而引用变量则是存储在栈内存。当没有任何引用指向这个对象时,它变成垃圾,由Java的垃圾回收机制自动回收。 总结来说,使用new关键字创建对象的过程包括:内存分配、引用分配、构造方法调用、初始化代码执行和返回对象引用等步骤。这样我们就可以通过引用来操作和访问对象的成员变量和方法。 ### 回答3: 在Java,使用关键字"new"来创建一个对象。创建对象的过程可以分为三个步骤: 1. 分配内存空间:当执行"new"关键字时,首先在堆内存分配一块存储对象的内存空间。这个内存空间的大小由对象的成员变量决定。 2. 初始化成员变量:在内存空间分配完毕后,调用对象的构造方法来初始化对象的成员变量。构造方法是一个与类名相同的方法,通过构造方法可以对对象进行初始化操作。 3. 返回对象的引用:初始化成员变量后,返回一个指向该对象的引用。这个引用可以用来访问对象的成员变量和方法。 下面是一个示例代码,演示了在Java使用"new"关键字创建对象的过程: ``` public class Student { private String name; private int age; public Student(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } public static void main(String[] args) { // 创建一个Student对象 Student student = new Student("张三", 18); // 使用对象引用访问成员变量和方法 System.out.println("姓名:" + student.getName()); System.out.println("年龄:" + student.getAge()); } } ``` 在示例代码,创建Student对象的过程是: 1. 分配内存空间,创建一个存储Student对象的内存空间。 2. 调用Student的构造方法,将传入的参数赋值给对象的成员变量。 3. 返回一个指向该对象的引用,赋值给变量"student"。 4. 最后,我们可以使用"student"引用来访问Student对象的成员变量和方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值