构造器(构造函数)
特点
1. 构造器的名字和类名相同。
2. 不用定义返回值类型。
3. 不可以写return语句。
作用
给对象进行初始化。
注意
1. 默认构造器的特点。
2. 多个构造器是以重载的形式存在的。
3. 注解类不可以有构造器。
4. 接口不可以有构造器。
this和super
特点
this代表其所在方法所属对象的引用,super代表其所在方法所属对象的父类的引用。
换言之:this指向本类对象的引用,super指向父类对象的引用。
当在函数内需要用到调用该函数的对象时,就用this;需要用到调用该方法的对象的父类对象时,就用super。
注意
this 一般用于区分局部变量和成员变量同名的情况。
this/super 用于子类父类构造函数间互相调用
this()/super() 函数必须在构造函数的第一行,且有且仅有一个。
示例
public class Person {private String name;private int age;public Person(String name, int age) {super();this.name = name;this.age = age;}public Person() {super();}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}}
static 关键字
用于修饰成员(实例域和方法)
问题:多个对象中出现共同的数据,耗费内存空间
作用:可以使用static修饰成员,表示该成员占用方法区(共享区,数据区),并且每个对象都可以访问该成员数据。
调用:多一种调用方式,可以直接被类名调用:类名.静态成员(当具有权限时)。
特点
1. 随着类的加载而加载,随着类的释放而释放。
2. 优先于对象存在。
3. 被所有对象所共享。
4. 可以直接被类名调用。
实例域(对象的成员变量)和静态域(类的静态变量)区别
1. 存放位置。
静态域随着类的加载而存在于方法区中。实例域随着对象的建立而存在堆区中。
2. 生命周期。
静态域生命周期最长。
注意
1. 静态方法不能访问非静态成员。
2. 静态方法中不可以使用this,super关键字。
3. 主函数是静态的。
使用
1. 对象共享数据,使用静态变量。
2. 不需要访问非静态成员的方法,并且是程序中共用的功能,可以使用静态方法,以便复用,并且不用建立对象。
为使其更严谨,不允许建立对象,可以私有化构造函数。
静态代码块
随着类加载执行,只执行一次。用于给类初始化。
示例
public class Demo {// 显式初始化int x = 3;// 默认初始化String name;// 静态变量初始化static String code = "Java";// 静态代码块static {System.out.println("静态代码块:随着类加载执行,只执行一次。");}// 构造代码块{System.out.println("构造代码块:对象创建时运行一次。");}// 构造函数Demo() {name = "my class";}Demo(int x) {// this语句必须定义在构造函数第一行this();this.x = x;}Demo(int x, String name) {this(x);this.name = name;}public void print() {System.out.println("name=\"" + name + "\"; x=" + x);}public static void main(String[] args) {Demo d = new Demo(5);d.print();}}
对于
Demo d = new Demo(5);
执行过程:
1. 使用new,所以先找到Demo.class文件并加载内存(方法区)。
2. 进行静态域初始化。
3. 执行该类中的静态代码块,如果有,进行默认初始化。
4. 堆区开辟空间,分配地址。
5. 堆区中建立对象,进行默认初始化。
6. 对对象进行显式初始化。
7. 对对象进行构造代码块初始化。
8. 对对象进行构造函数初始化。
9. 将内存地址赋值给栈区中的d变量。
主函数
主函数:特殊函数,可以被JVM调用作为程序入口。
定义
public:代表访问权限最大。
static:代表主函数随类的加载就已经存在。
void:主函数无具体的返回值。
main:不是关键字,但是是一个特殊单词,可以被JVM识别。
参数String[] args,字符串数组
主函数是固定格式,JVM识别。但是可以重载等,但是虚拟机只从字符串数组参数主函数执行(args可以更改其他名字)。
本文详细介绍了构造器(构造函数)的特点与作用,以及this和super关键字的使用方法。同时,深入探讨了static关键字的作用及特点,包括静态变量、静态方法、静态代码块的应用场景与注意事项。
458

被折叠的 条评论
为什么被折叠?



