Java中static关键字的作用

作用一、不实例化类直接使用类变量(静态变量)

class student{
	int age;
	int score;
	String name;
	static int height;
}

public class Demo1 {
	public static void main(String[] args) {
		//正常的实例化后调用可以
		student st = new student();
		st.age = 10;
		//但是不实例化直接调用就不行
		student.st = 10;//错误写法
		//不过对于static修饰的变量就可以
		student.height = 10;
	}
}

作用二、不用实例化本类就能调用本类中的函数(静态方法)

public class Demo1 {
	public static void main(String[] args) {
		int a = 10;
		int b = 10;
		//可以
		add(a,b);
		//不行			
		dev(a,b);
		//可以但是需要实例化加前缀,很麻烦
		Demo1 d = new Demo1();
		d.dev(a,b);
	}
	static int add(int a,int b){
		return a+b;
	}
	
	int dev(int a,int b){
		return a/b;
	}
	
}

对于作用一二的总结——直接用 类名.变量 或者 类名.方法 访问类内容:当类被加载的时候就加载了,不用实例化它就能直接使用————意思是类加载的时候,加了static的变量或者方法就被系统自动实例化了。

静态代码块

public class Demo1 {
	public static void main(String[] args) {
		int a = 10;
		int b = 10;
		//可以
		add(a,b);
		//不行			
		dev(a,b);
		//可以但是需要实例化加前缀,很麻烦
		Demo1 d = new Demo1();
		d.dev(a,b);
	}
	static int add(int a,int b){
		return a+b;
	}
	
	int dev(int a,int b){
		return a/b;
	}
	
}

在主函数中new这个类的时候,会先运行静态代码块再运行构造函数

需要注意的是,静态代码块只会被运行一次,new第二个这种类的时候不会运行第二次静态代码块

static使用注意事项

一、static修饰的方法或者变量中不能有this

因为static是在类加载前就调用了,所以static调用this会出现没有this的错误

二、static方法内不能访问本类内部成员

因为static是在类加载前就调用了,所以static调用类内部成员会出现没有该成员的错误
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值