Java中static关键字与this关键字

static:

1、static翻译为"静态"

2、所有static关键字修饰的都是类相关的,类级别的。

3、所有static修饰的,都是采用w类名."的方式访问.

4、static修饰的变量:静态变量

5、static修饰的方法:静态方法

变量的分类:

变量根据声明的位置进行划分:

在方法体当中声明的变量叫做:局部变量。

在方法体外声明的变量叫做:成员变量。

成员变量又可以分为:
实例变量
静态变量

class varTest{
    //以下实例的,都是对象相关的,访问时采用"引用."的方式访问。需要先new对象。
    //实例相关的,必须先有对象,才能访问,可能会出现空指针异常。
    //成员变量中的实例变量
	int i ;
	//实例方法
	public void m2 (){
}
    //以下静态的,都是类相关的,访问时采用"类名."的方式访问。不需要new对象。
    //不需要对象的参与即可访问。没有空指针异常的发生。
    //成员变量中的静态变量
	static int k ;
	//静态方法
	public static void m1 () {

	}
}

重点重点五颗星:加static的变量叫做静态变量

静态变量在类加载时初始化,不需要new对象,静态变量的空间就开出来了。

静态变量存储在方法区。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v3bqV2sE-1627720592308)(images/image-20210731145217201.png)]

什么时候变量声明为实例的,什么时候声明为静态的?

如果这个类型的所有对象的某个属性值都是一样的,不建议定义为实例变量,浪费内存空间。建议定义为类级别特征,定义为静态变量,在方法区中只保留一份,节省内存开销。

一个对象一份的是实例变量.

所有对象一份的是静态变量。

class Chinese{
//实例变量
    String idcard;
    String nane ;
//静态变量
static String country = "中国";
//构造方法
public Chinese (String x, String y){
	idCard = x;
	name = y;
}
}

实例的:一定需要使用"引用."来访问。

静态的:

​ 建议使用"类名."来访问,但使用"引用.“也行(不建议使用"引用.”).

​ 静态的如果使用w引用."来访问会让程序员产生困惑:程序员以为是实例的

结论:

空指针异常只有在什么情况下才会发生呢?
只有在"空引用"访问实例"相关的,都会出现空指针异常。

参考标准:
当这个方法体当中,直接访问了实例变量,这个方法一定是实例方法。
我们以后开发中,大部分情况下,如果是工具类的话,工具类当中的方法—般都是静态的。

静态代码块

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

2、什么是静态代码块,语法是什么?
static {
java语句;

​ java语句;
}
3、static静态代码块在什么时候执行呢?
类加载时执行。并且只执行一次。
静态代码块有这柈的特征/特点。

4、注意:静态代码块在类加载时执行,并且在main方法执行之前执行.
5、静态代码块一般是按照自上而下的顺序执行。
6、静态代码块有啥作用,有什么用?

第一:静态代码块不是那么常用。(不是每一个类当中都要写的东西。)
第二:静态代码块这种语法机制实际上是sUw公司给我们java程序员的一个特殊的时刻/时机这个时机叫做:类加载时机。

具体的业务:
项目经理说了:大家注意了,所有我们编写的程序中,只要是类加载了,请记录一下类加载的日志信息(在哪年哪月哪日几时几分几秒,哪个类加载到vM当中了)。

思考:这些记录日志的代码写到哪里呢?
写到静态代码块当中.

栈:方法只要执行,会压栈。(局部变量>

堆: new出来的对象都在堆中。垃圾回收器主要针对。(实例变量)

方法区:类的信息,字节码信息,代码片段。(静态变量)

方法的代码片段放在方法区,但是方法执行过程当中需要的内存在栈中。

实例语句块

1、除了静态代码块之外,还有一种语句块叫做:实例语句块

2、实例语句在类加载是并没有执行.
3、实例语句语法?

{

​ java语句;

​ java语句;

​ java语句;

}

this关键字

1、this是一个关键字,全部小写.
2、this是什么,在内存方面是怎徉的?
一个对象一个this.
this是一个变量,是一个引用。this保存当前对象的内存地址,指向自身。所以,严格意义上来说,this代表的就是"当前对象"this存储在堆内存当中对象的内部。

1、this可以使用在实例方法中,不能使用在静态方法中。
2、this关键字大部分情况下可以省略,什么时候不能省略呢?
在实例方法中,或者构造方法中,为了区分局部变量和实例变量,这种情况下: this.是不能省略的。

1、this除了可以使用在实例方法中,还可以用在构造方法中。
2、新语法:通过当前的构造方法去调用另一个本类的构造方法,可以使用以下语法格式:
this(实际参数列表);
通过一个构造方法1去调用构造方法2,可以做到代码复用。
但需要注意的是:"构造方法1"和"构造方法2”都是在同一个类当中。
3、this ()这个语法作用是什么?
代码复用。
4、死记硬背:
对于this()的调用只能出现在构造方法的第一行。

this

1.1、this是一个关键字,是一个引用,保存内存地址指向自身。

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

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

1.4、this不能使用在静态方法中.

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

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值