this关键字static关键字

时间:2021-05-06 19:38:52

this关键字:

this关键字static关键字

内存图解:

this关键字static关键字

this语句的第二个功能:this也可以在构造函数中调用其他构造函数。

注意:只能定义在构造函数的第一行,因为初始化动作要先执行(也就是java的规则,以后面的初始化规则为主,省的覆盖)

一般函数不能调用构造函数,但是构造函数可以调用一般函数,构造函数也可以调用其他构造函数,就用到了this语句。

this只要方法当中用到了本类对象全是this来表示对象。


Static关键字:
1,数据共享 static 修饰共享数据。

this关键字static关键字

静态数据 可以被对象调用,也可以直接被类名进行调用:如图:

this关键字static关键字


static的特点:

1,static是一个修饰符,用于修饰成员。

2,static修饰的成员被所有的对象所共享

3,static优先于对象存在,因为static的成员随着类的加载就已经存在了

4,static修饰的成员多了一种调用方式,就是可以直接被类名所调用。类名.静态数据

5,static修饰的数据是共享数据,对象中存储的是特有数据。



静态变量(类变量)和成员变量(实例变量):如图

this关键字static关键字

成员变量和静态变量的区别?

1, 两个变量的生命周期不同

成员变量随着对象的创建而存在,随着对象的被回收而释放。

静态变量随着类的加载而存在,随着类的消失而消失。

2, 调用方式不同

成员变量只能被对象调用。

静态变量可以被对象调用,还可以被类名调用。

3,别名不同。

成员变量也称为实例变量

静态变量成为类变量

4,数据存储的位置不同

成员变量数据包储存在堆内存的对象中,所以也叫对象的特有数据。

静态变量数据储存在方法区(共享数据区)的静态区,所以也叫对象的共享数据。

(寄存器(供给cpu用的内存),本地方法区(调用系统底层的内容的),方法区,堆内存,栈内存)


静态使用的注意事项:

1,静态方法只能访问静态成员。(静态先存在,非静态是随着对象的存在而后存在的)如图:

this关键字static关键字

2, 静态方法中不可以使用this和super关键字。

3,主函数是静态的。

静态主函数调用非静态方法:

调用show有两种方式1,用类名.show,2用对象.show。就解决了这个问题

this关键字static关键字


静态前面省略的是类名,非静态前面省略的是this 如图:country是属于类的 本类使用本类静态成员需要使用名字吗,可以省略 省略的是类名(Person)

this关键字static关键字


主函数特殊之处:

1,格式是固定的

2,被jvm所识别和调用。


public:因为权限必须是最大的。

static:不需要对象的,直接用主函数所属类名调用即可。(虚拟机直接用类名进行调用主函数)

void:主函数没有具体的返回值。

main:函数名,不是关键字,只是一个jvm识别的固定的名字。

String[] args:这是主函数的参数列表,是一个数组类型的参数,而且元素都是字符串类型。



内存图解:

this关键字static关键字

栈内存,堆内存,方法区(非静态和静态)


静态什么时候用:如图:

this关键字static关键字

静态代码块:

随着类的加载而执行,而且只执行一次。

作用:用于给类进行初始化。

有的类不需要对象,就不用构造函数进行初始化,就用静态代码块进行初始化(这种类里边一般全都是静态属性)

如图: 

this关键字static关键字


构造代码块:可以给所有对象进行初始化。生成一个对象执行一次。

构造函数:是给对应的对象进行针对性的初始化。

静态代码块:是给类进行初始化的:随着类的加载,而存在。并且只执行一次。

如图:

this关键字static关键字


该类中全是静态方法,不需要创建对象,就可以将本类的构造器私有化,别人就创建不了对象。如图:

this关键字static关键字