自学内容网 自学内容网

【Java】Static关键字与类的实例化

关键字:static

作用:主要用于内存管理

范围:可以用在变量、方法、代码块和嵌套类上。java关键字属于类,但不是类的实例。


类的成员变量包括:

【静态变量/类变量】指被static修饰的成员变量

运行时,只分配一次内存。在加载类的过程中完成静态变量的内存分配。

类的内部可以在任何方法中直接访问静态变量;其他类中可以通过类名访问该类的静态变量。

静态变量的最主要作用是节省内存空间。


【实例变量】:指没有被static修饰的成员变量

每创建一个实例,java虚拟机就会为实例变量分配一次内存。

类的内部可以在非静态方法中直接访问实例变量;本类的静态方法或其他类中需要通过类的实例对象进行访问。

类的方法包括:

【静态方法/类方法】:指被static修饰的成员方法

通过类直接调用,不需要创建类的对象。可以直接通过类名.方法名调用

静态方法中只能访问类成员变量,不能访问实例变量(同理,静态方法只能访问静态方法,而实例方法可以访问类方法和实例方法)

静态方法中不能使用super、this关键字

静态方法的调用通过类名.类方法和对象.类方法

public static void method1();

【实例方法】:指没有被static修饰的成员方法

可以直接访问所属类的静态变量、静态方法、实例变量和实例方法

实例方法只能通过对象.实例方法访问

实例方法可以被覆盖(静态方法不能被覆盖)

public void method2();

【构造方法】:指没有返回值(没有void)方法名与类名一样的方法

方法名与类名相同 不要返回类型(例如return、void等) 不能被static、final、native、abstract和synchronized修饰,不能被子类继承

public method(){};
类的实例化过程:

1)给对象分配空间,对属性按照类型进行默认初始化

2)加载父类->本类->子类静态代码块

3)初始化父类属性、父类构造代码块、父类构造方法。

4)初始化本类属性、构造代码块、构造方法。

5)初始化子类属性、构造代码块、构造方法。

总结:对象空间的分配和默认属性的初始化->静态代码初始化->属性、构造代码块、构造方法初始化(根据代码书写的先后顺序)

静态代码块若使用了某个静态成员变量,那么该静态成员变量一定比静态代码块先加载


附录一:关键字及作用分类(转载自尚硅谷《java从入门到精通》)

 


原文地址:https://blog.csdn.net/m0_45863636/article/details/135420230

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!