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进行处理,非常感谢!