zoukankan      html  css  js  c++  java
  • java基础_对象初始化过程

    1.因为new Studen()用到了Student类,所以会把它从硬盘上加载进入内存

    2.如果有static静态代码块就会随着类的加载而执行,还有静态成员方法和普通方法也会随着类的加载而被加载

    3.在堆中开辟空间,分配内存地址

    4.在堆中建立对象特有属性(非静态成员),并同时对特有属性进行默认初始化

    5.对属性进行显示初始化 比如  在类中 String name="123";

    6.执行构造代码块,对所有对象进行初始化

    7.执行对应的构造函数,对对象进行初始化(调用不同的构造函数)

    8.讲内存地址给栈中的变量

     ====================================================

    1.先执行静态代码块且 只执行一次

    2.执行构造代码块 每次new新对象都会执行

    3.执行构造方法

    实例如下

    package j2se;
    /*
     *静态代码块随着类的加载而执行,优先于主函数执行,切只执行一次
     *new 对象时,先调用构造代码块,再执行相应的构造方法 
     */
    class Student{
    	String name="fff";
    	int age;
    	private static String country="中国";
    
    	public Student(){
    		System.out.println("我是无参构造方法");
    	}
    	public Student(String name){
    		this.name=name;
    		System.out.println("我是一个参数构造方法");
    	}
    	public Student(String name,int age){
    		this(name);
    		this.age=age;
    		System.out.println("我是两个参数构造方法");
    	}
    	public static void get(){
    		System.out.println("我是静态成员方法");
    	}
    	static{
    		System.out.println("我是静态代码块");
    	}
    	{
    		System.out.println("我是构造代码块");
    	}
    }
    public class A6_43 {
    	public static void main(String[] args) {
    		Student a=new Student();		
    		Student b=new Student("小明");
    		Student c=new Student("小明",27);
    
    	}
    }
    

    运行结果:

    我是静态代码块
    我是构造代码块
    我是无参构造方法
    我是构造代码块
    我是一个参数构造方法
    我是构造代码块
    我是一个参数构造方法
    我是两个参数构造方法

  • 相关阅读:
    循环神经网络(LSTM和GRU)(1)
    threading包的例子和queue包的例子
    xgboost调参
    理解 Python 中的 *args 和 **kwargs
    TFRecords文件的生成和读取(1)
    tensorflow函数介绍(4)
    python其他篇(1)
    python实现Restful服务(基于flask)(2)
    开源多线程性能测试工具-sysbench
    MySQL 8.0.0 版本发布,亮点都在这了!
  • 原文地址:https://www.cnblogs.com/youning/p/6765074.html
Copyright © 2011-2022 走看看