Java基础——类和对象的初始化过程

本节把类和对象的初始化所涉及到的所有代码块阐述一边。

示例代码:

 1 public class Demo {
 2     private static String name;
 3     private String age;
 4
 5     // 主函数
 6     public static void main(String[] args) {
 7         Demo demo = new Demo();
 8
 9     }
10
11     // 构造函数
12     public Demo() {
13         System.out.println("我是构造函数,随着对象建立而运行");
14     }
15
16     // 我是构造代码块
17     {
18         System.out.println("我是构造代码块,随着对象建立而运行,优先于对象的构造函数");
19
20     }
21     // 我是静态代码块
22     static {
23         System.out.println("我是静态代码块,随着类加载而运行");
24     }
25 }

新建一个Demo类,主函数中新建此类对象demo;

运行步骤:

1.Demo类加载的同时,static代码块会一起加载并执行;作用是对类初始化

2.new关键字在堆中开辟空间,分配内存地址;建立对象的特有属性。并进行默认初始化;对属性进行显示初始化。

3.对构造代码块初始化,会优先于构造函数执行,作用是对所有对象初始化;

4.紧跟着构造函数执行,作用是对相关对象初始化;

时间: 2024-10-05 13:15:09

Java基础——类和对象的初始化过程的相关文章

第31节:Java基础-类与对象

前言 Java基础-类与对象,方法的重载,构造方法的重载,static关键字,main()方法,this关键字,包,访问权限,类的继承,继承性,方法的重写,super变量. 方法的重载:成员方法的重载和构造方法的重载 方法的重载 在一个类中可以有多个方法具有相同的名字,但是这些方法的参数个数不同,或参数类型不同,即为方法的重载. class Demo{ // one void dashu(String name){ System.out.println(name); } // two void

解析Java类和对象的初始化过程

类的初始化和对象初始化是 JVM 管理的类型生命周期中非常重要的两个环节,Google 了一遍网络,有关类装载机制的文章倒是不少,然而类初始化和对象初始化的文章并不多,特别是从字节码和 JVM 层次来分析的文章更是鲜有所见. 本文主要对类和对象初始化全过程进行分析,通过一个实际问题引入,将源代码转换成 JVM 字节码后,对 JVM 执行过程的关键点进行全面解析,并在文中穿插入了相关 JVM 规范和 JVM 的部分内部理论知识,以理论与实际结合的方式介绍对象初始化和类初始化之间的协作以及可能存在的

JAVA基础——类和对象

java类与对象学习笔记 一.成员变量和局部变量 (1)定义 1.成员变量 在类中定义,用来描述对象将要有什么.(默认的成员变量值为0) 2.局部变量 在类的方法中定义,在方法中临时保存数据. 演示示例: (2)成员变量和局部变量的区别 1.作用域不同 局部变量的作用域仅限于定义它的方法:成员变量的作用域在整个类内部都是可见的. 2.初始值不同 java会给成员变量一个初始值(初始值为0):java不会给局部变量赋予初始值.(使用局部变量必须要先赋值) 示例: 3.同名的情况 在同一个方法中,不

java基础-类与对象、

一.面向过程的思想和面向对象的思想 面向对象和面向过程的思想有着本质上的区别, 作为面向对象的思维来说,当你拿到一个问题时,你分析这个问题不再是第一步先做什么,第二步再做什么,这是面向过程的思维,你应该分析这个问题里面有哪些类和对象,这是第一点,然后再分析这些类和对象应该具有哪些属性和方法.这是第二点.最后分析类和类之间具体有什么关系,这是第三点. 面向对象有一个非常重要的设计思维:合适的方法应该出现在合适的类里面. 二.简单理解面向对象 就是在程序里面首先分解出来的应该是注意不再是一步一步的过

java中对象的初始化过程

class Parent{ int num = 8;// ->3 Parent(){ //super(); // ->2 //显示初始化 // ->3 //构造代码段 // ->4 show(); // ->5 } {// ->4 System.out.println("Parent constructor code run->"); } public void show(){//被覆盖 System.out.println("num

python基础(类、对象、包)完整的总结

python基础(类和对象.包)类和对象对象是看的见摸的着的类是模板对象需要类才能创建出来类的构成(三个部分)类的名称:类名类的属性:一组数据类的方法:允许进行操作的方法(行为)class 类名():def添加方法class Cat():def run(self):print("cat is running")xiaobai = Cat()xiaobai.run()xiaobai.name = "小白"xiaobai.age = 40类的属性属性就是变量一个类可以创

黑马程序员——Java基础篇之对象归要

1.static关键字 1.1.static可以修饰成员变量,成员方法,还有类(其中这里的类是内部类) 1.2.static修饰的部分会随着类的加载而加载: 加载过程:当JVM执行static修饰的代码时,会在内存的共享区给static部分开辟一个空间,供该类持有,static部分不是某个对象的部分,而是该类共有的,所以当一个函数会被多个对象调用时,最好定义成static,这样比较节省空间. 1.3.静态方法只能访问静态成员 原因:如果静态方法中调用了非静态的变量,那么由于静态方法是随着类的加载

关于Java构造类与对象的思考

简单记录一下Java构造类与对象时的流程以及this和super对于特殊例子的分析. 首先,接着昨天的问题,我做出了几个变形: Pic1.原版: Pic2.去掉了T.foo方法中的this关键字: Pic3.在原版的基础上抹掉了B.foo方法: Pic4.抹掉了原版的B.foo方法,同时去掉了T.foo方法中的this关键字: 这四个图全方位地对this和super两个关键字的有无进行了测试,测试结果表明:这些版本的程序的运行结果都一样... 在这里,还是插一张流程图: 首先说一下super关键

细谈 对象的初始化过程------内存中的实现过程?

今天对于内存的理解 又加深了一步: 对下面代码的理解: class Person { private String name="xiaohong"; private int age=23; private static String country="CN"; { System.out.println(name+" "+age); } public Person(String name,int age) { this.name = name; t