JavaSE基础知识(十八)

42、this关键字

*this是一个关键字,翻译为:这个

*this是一个引用,this是一个变量,this变量中保存了内存地址指向了自身,this存储在JVM堆内存java对象内部。

*创建100个java对象,每一个对象都有this,也就是说有100个不同的this

*没有static关键字的方法被称为“实例方法”,实例方法的访问方式为:“引用.”

*没有static关键字的变量被称为“实例变量”

*当一个行为/动作执行的过程当中是需要对象参与的,那么这个方法一定要定义为“实例方法”

*this可以出现在“实例方法”当中,this指向当前正在执行这个动作的对象。(this代表当前对象)

*this在多数情况下是可以省略不写的。

*带有static的方法是通过类名的方式访问的,static方法的调用不需要对象,直接使用类名

所以执行过程中没有当前对象,所以不能使用this。

*在带有static的方法当中不能“直接”访问实例变量和实例方法。

因为实例变量和实例方法都需要对象的存在。

而static的方法中是没有this的,也就是说当前对象。

*“this.”用来区分局部变量和实例变量的时候不能省。

*this可以用在哪里:

-可以使用在实例方法中,代表当前对象【语法格式:this.】

-可以使用在构造方法中,通过当前构造方法调用其它的构造方法【语法格式:this(实参);】

-this()这语法只能出现在构造函数的第一行。

*带有static的方法,其实既可以采用类名的方式访问,也可以采用引用的方式访问。

即使采用引用的方式去访问,实际上执行的时候和引用指向的对象无关。

在实际开发中,使用引用的方式访问带有static的方法,程序会出现警告。

所以带有static的方法还是建议使用“类名.”的方式访问。

43、static关键字

*static英语单调翻译为静态的,static修饰的方法是静态方法,static修饰的变量是静态变量,

所有static修饰的元素都称为静态的,都可以使用“类名.”方式访问,但是也可以使用“引用.”的方式访问【但是不建议】。

*成员变量声明为实例变量的情况:

-所有对象都有同一个属性,但是这个属性的值会随着对象的变化而变化【不同对象的同一属性值不同】

*成员变量声明为静态变量的情况:

-所有对象都有同一个属性,并且所有对象的这个属性值都是一样的,建议定义为静态变量,节省内存开销。

-静态变量在类加载的时候初始化,内存在方法区中开辟。访问的时候不需要创建对象,直接使用“类名.静态变量名”的方式访问。

*可以使用static 关键字来定义“静态代码块”。

(1)、语法格式:

static{

java语句;

}

(2)、静态代码块在类加载时执行,并且只执行一次。

(3)、静态代码块在一个类中可以编写多个,并且遵循自上而下的顺序依次执行。

(4)、静态代码的作用是什么?怎么用?用在哪儿?什么时候用?

-静态代码的使用和需求有关,例如项目中要求在类加载的时刻/时机执行代码完成日志的记录。

那么这段记录日志的代码就可以编写到静态代码块中,完成日志记录。

-静态代码块是java为程序员准备一个特殊的时刻,这个特殊的时刻被称为类加载

时刻。若希望在此刻执行一段特殊的程序,这段程序可以直接放到静态代码块中。

-通常在静态代码中完成预备工作,先完成数据的准备工作,例如:初始化连接池,解析XML配置文件……

(5)、扩展:

-实例语句/代码【实际使用的非常少】

-实例代码可以编写多个,也是遵循自上而下的顺序依次执行。

-实例代码块在构造方法执行之前执行,构造方法依次执行,实例代码块对应执行一次。

-实例代码也是java语言为程序员准备的一个特殊时机,这个特殊时机被称为:“对象初始化时机”。

(6)、方法什么时候定义为静态的?

-方法描述的是动作,当所有的对象执行这个动作的时候,最终产生的影响是一样的,那么这个对象已经不再属于

某一个对象动作了,可以将这个动作提升为类级别的动作,模板级别的动作。

-静态方法无法直接访问实例变量和实例方法。

-大多数方法都定义为实例方法,一般一个行为或者一个动作在发生的时候,都需要对象的参与。

但是也有例外,例如:大多数“工具类”中的方法都是静态方法,因为工具类就是方便编程,为了方便

方法的调用,自然不需要new对象是最好。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年9月10日
下一篇 2020年9月10日

相关推荐