Java之两张图理解static关键词

本文详细介绍了Java中静态成员的概念及应用,包括静态变量、静态方法和静态内部类的特点与使用方式,并通过具体案例展示了如何正确地使用静态成员。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

小结:

static可以用来修饰类中的成员(成员变量成员方法) 也可以用来修饰成员内部类被静态所修饰的成员,随着类的加载而加载,优先于对象存在,会被所有的对象所共享,可以通过类名直接调用,静态方法中,只能调用静态的成员(静态成员变量,静态成员方法)

static关键词

引源:当我们new很多对象时,对象中会有自己特有属性,也可能存在共同属性,为了避免浪费内存空间


特点:当static修饰方法时,该方法属于类,与对象没有关系。被静态修饰的成员,可以被类.名字直接调用

案例:

public class Demo {
	public static int num = 100;
}

public class Test {
	public static void main(String[] args) {
		Demo d1 = new Demo();
		Demo d2 = new Demo();
		d1.num = 200;
		System.out.println(d1.num); 
		System.out.println(d2.num); 
}


console:
200
200

注意事项:

1: 静态内容是优先于对象存在,只能访问静态,不能使用this/super。静态修饰的内容存于静态区。(静态内容先存在去调用后存在的对象内容,显然会报错)

class Demo {
	//成员变量
	public int num = 100;
	//静态方法
	public static void method(){
		//this.num; 不能使用this/super。
		System.out.println(this.num);
	}
}
2: 同一个类中,静态成员只能访问静态成员(权限问题)
class Demo {
	//成员变量
	public int num = 100;
	//静态成员变量
	public static int count = 200;
	//静态方法
	public static void method(){
		//System.out.println(num); 静态方法中,只能访问静态成员变量或静态成员方法
		System.out.println(count);
	}
}

3:定义静态常量,通常使用public static final修饰的变量来完成定义。此时变量名用全部大写,多个单词使用下划线连接

public class Student {
	public static final String STUDENT_NAME = "mark";
	public static void method(){
		System.out.println("一个静态方法");
	}
}

/*
  *当我们想使用类的静态成员时,不需要创建对象,直接使用类名来访问即可。
*/
System.out.println(Student.STUDENT_NAME); //打印学生姓名
Company.method(); // 调用一个静态方法

console:
mark
一个静态方法

结尾静态中不能调用非静态生命周期导致,静态优先于非静态而存在,存在的东西调用不存在的东西显然错误),下图为static在内存中运行过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值