Java中static关键字用法

 Java中static是一个比较常用的关键字,它是一个静态修饰符,表示“全局”或“静态”的意思,它可以修饰类的属性,方法或代码块。被static修饰的属性,方法和代码块分别称为静态属性,静态方法和静态代码块。

1、静态属性(变量)
类的属性分为2种,一种为静态属性,即被static修饰符修饰,一种为非静态属性,即不被static修饰符修饰。静态属性和非静态属性的区别是:
<1> 静态属性是类的所有实例所共享的,即它在内存中只存在一个副本;非静态属性是属于对象的,每个对象都有一个非静态属性的副本。
<2> 静态属性是通过“类名.静态属性”的方式调用,不推荐“对象名.静态属性”的调用方式(它属于类的,应该用第一种调用方式);非静态属性是通过“对象名.非静态属性”的方式调用。
<3> 静态属性在类初次加载时被初始化的(整个生命周期只初始化1次);非静态属性在创建对象时初始化的。

代码实现如下:

public class Person {
	public static int personNum = 10;
	public int age = 20;

	public Person() {
		personNum++;
		age++;
	}
	
	public static void main(String[] args) {
		//静态属性在类初次加载时初始化
		System.out.println("静态属性:" + Person.personNum);
		
		Person person1 = new Person();
		//调用静态属性使用"类名.属性名"的调用方式,调用非静态属性使用"对象名.属性名"的调用方式
		System.out.println("静态属性:" + Person.personNum + ";非静态属性" + person1.age);
		Person person2 = new Person();
		//此时对象person1和对象person2共享一个personNum属性,但各自又有各自的age属性
		System.out.println("静态属性:" + Person.personNum + ";非静态属性" + person2.age);
	}
}

//运行结果
静态属性:10
静态属性:11;非静态属性21
静态属性:12;非静态属性21
2、静态方法
被static修饰符修饰的方法为静态方法也被称为类方法(Math类中的大多数方法就是静态方法,可以直接通过”Math.方法名“的方式调用)。
静态方法和非静态方法区别:
<1>静态方法可以直接通过"类名.方法名()"的方式调用;非静态方法不能通过"类名.方法名()"方式调用。
<2>静态方法不依赖于任何对象,不需要new对象就可以使用;非静态方法依赖于对象,需要new对象使用。
<3>静态方法没有this属性;非静态方法有this属性。
<4>静态方法只能调用静态方法,不能调用非静态方法;非静态方法既可以调用静态方法也可以调用非静态方法。

代码实现如下:

public class Person {
	public static void printData() {
		//print();//不能在静态方法中调用非静态方法
	}
	
	public static void main(String[] args) {
		//通过“类名.方法名”的方式调用静态方法
		Person.printData();
		//可以在静态方法中调用静态方法
		printData();
	}
	
	public void print() {}
}
3、静态代码块
静态代码块就是被是static修饰的代码块,主要用于类数据的初始化。
静态代码块和非静态代码块的区别:
<1>静态代码块主要用于类数据初始化,它执行1次;非静态代码块属于对象,每创建1个对象就执行1次。
<2>静态代码块在main函数之前执行;非静态代码块在main函数之后执行。

代码实现如下:

public class Person {
	Person() {
		System.out.println("构造函数初始化");
	}
	
	public static void main(String[] args) {
		System.out.println("main方法");
		Person person1 = new Person();
		Person person2 = new Person();
	}
	
	static {
		//只执行1次,并且优先于main方法执行
		System.out.println("静态块初始化");
	}
}
//运行结果
静态块初始化
main方法
构造函数初始化
构造函数初始化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值