java中静态关键字static

一、、有无static修饰的区别

static修饰无static修饰备注
归属单个对象
属性类属性、类变量实例属性、实例变量
方法类方法实例方法
调用方法类名.属性;类名.方法;对象.属性;对象.方法对象.属性;对象.方法创建对象时,数据存储空间才可以被分配,才可以外界调用

二、基本知识点
(一)使用
(1)将static关键字放在定义之前,就可以将字段或方法设定为静态变量或静态方法。
eg:
class Person{
static int age = 18;//就是将age这个字段定义成了静态变量
Static void NewYear{
Person.age++;}
}
Person p1 = new Person();
Person p2 = new Person();
(2)引用static变量
可以类名直接引用:Person.age
可以对象进行定位:p1.age,p2.age
(3)引用static方法
可以类名.方法()直接引用:Person.NewYear()
可以对象进行定位:p1.NewYear(),p2.NewYear()
(二)存储空间
(1)类变量
在类中,使用static声明的成员变量称为静态成员变量,是该类的公用变量,在第一次使用时进行初始化,对于该类的对象来说,static成员变量只有一份。字符串常量和静态变量均存放在数据区。
在这里插入图片描述
(2)实例变量
在这里插入图片描述
个人理解:
static变量-静态变量:就像图书馆中供同学们传阅的一本书籍一样,如一个人对书籍进行了笔记则影响到后来看的每一位同学。
非static变量-成员变量:可理解每位同学上课均有一本自己的教科书,每一个人都可以在自己课本上进行笔记,对其他同学没有影响。
(三)应用场景
当遇到如下情况需要使用static:
1.只想为特定域分配单一存储空间;
例如签到系统,定义静态变量sumPerson,可以每来一个人就++
//定义初始值为0
public static sumPerson =0;
public void person(string name){
this.name = name;
id = sumPerson++;
}
则每当调用一下person,sumPerson将进行+1操作

2.即使没有创建对象,可以被调用;(非static域和方法必须与某一特定对象关联,才可以访问数据或方法)
在这里插入图片描述
三、静态与非静态实例对比
(一)静态变量实例
(1)非静态变量
在这里插入图片描述
(2)静态变量
静态变量的对象引用
在这里插入图片描述
静态变量的类引用
在这里插入图片描述
(二)静态方法实例
(1)非静态方法
此处特意引用上面创建的A类静态变量,以此来说明在不同类中变量,静态变量也可以通过ClassName.VariableName的方式进行调用。
在这里插入图片描述
(2)静态方法
静态方法不再针对某一对象进行调用,故不能访问非静态变量。
在这里插入图片描述
(三)静态代码块实例
1)非静态变量(2)静态变量
由上可以看出静态代码块在类加载的时候就执行了,即静态代码具有最高执行的优先级。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值