第十一章 static和this

一、static关键字

1、变量的分类(根据声明的位置进行划分):

在方法体当中声明的变量叫做:局部变量。
在方法体外声明的变量叫做:成员变量。
成员变量又可以分为:实例变量和静态变量。
一个对象一份的是实例变量。所有对象一份的是静态变量。

2、static修饰的如何访问:

static修饰的统一都是静态的,都是类相关的,不需要new对象。直接采用“类名.”访问。但使用“引用.”访问也行(不建议使用"引用."),并且使用“引用.”访问静态的不会产生空指针异常。

只有在“空引用”访问“实例”相关的,都会出现空指针异常。

3、成员变量什么时候定义成实例变量,什么时候定义成静态变量:

当一个属性是类级别的属性,所有对象的这个属性的值是一样的,建议定义为静态变量。

4、成员方法什么时候定义成实例方法,什么时候定义成静态方法:

当这个方法体当中,直接访问了实例变量,这个方法必须定义成实例方法。
以后开发中,大部分情况下,如果是工具类的话,工具类当中的方法一般都是静态的。(静态方法有一个优点,是不需要new对象,直接采用类名调用,极其方便。工具类就是为了方便编程的,所以工具类中的方法一般都是static的。)

5、使用static关键字可以定义:静态代码块

1)语法格式:

static {
        java语句;
        java语句;
}

2)static静态代码块在什么时候执行呢?

类加载时执行。并且只执行一次。并且在main方法执行之前执行。

静态代码块一般是按照自上而下的顺序执行。

实例代码块在构造方法执行时执行。

3)静态代码块的作用

第一:静态代码块不是那么常用。(不是每一个类当中都要写的东西。)
第二:静态代码块这种语法机制实际上是SUN公司给我们java程序员的一个特殊的时刻/时机。这个时机叫做:类加载时机。
具体的业务:项目经理说了,大家注意了,所有我们编写的程序中,只要是类加载了,请记录一下
类加载的日志信息(在哪年哪月哪日几时几分几秒,哪个类加载到JVM当中了)。这些记录日志的代码写到静态代码块当中。

4)到目前为止,遇到的所有java程序,有顺序要求的是哪些?

第一:对于一个方法来说,方法体中的代码是有顺序的,遵循自上而下的顺序执行。
第二:静态代码块1和静态代码块2是有先后顺序的。
第三:静态代码块和静态变量是有先后顺序的。

6、实例代码块

除了静态代码块之外,还有一种语句块叫做实例语句块,实例语句在类加载时并没有执行。

1)语法格式:
{
        java语句;
        java语句;
        java语句;
}

2)实例语句块在什么时候执行?
只要是构造方法执行,必然在构造方法执行之前,自动执行“实例语句块”中的代码。实际上这也是SUN公司为java程序员准备一个特殊的时机,叫做对象构建时机。

二、this关键字

1、this是一个关键字,是一个引用。this保存当前对象的内存地址,指向自身。所以,严格意义上来说,this代表的就是“当前对象”,this存储在堆内存当中对象的内部。

2、this可以使用在实例方法中,也可以使用在构造方法中。

3、this出现在实例方法中其实代表的是当前对象。

4、this不能使用在静态方法中。 因为静态方法使用“类名.”的方式调用,它不存在当前对象,this也就不存在。

5、this. 大部分情况下可以省略,但是用来区分局部变量和实例变量的时候不能省略。

6、this() 这种语法只能出现在构造方法第一行,表示当前构造方法调用本类其他的构造方法,目的是代码复用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值