Java——static关键字

文章介绍了Java编程中的静态变量、静态方法和静态代码块的概念。静态变量在内存中只有一份,由所有类的实例共享。静态方法可以在不创建对象的情况下调用,只能访问静态成员。静态代码块在类加载时执行一次,常用于初始化类的静态成员。
摘要由CSDN通过智能技术生成

静态变量

在定义一个类时,只是在描述某类事物的特征和行为,并没有产生具体的数据只有通过new关键字创建该类的实例对象后,系统才会为每个对象分配空间,存储各自的数据。有时候,开发人员会希望某些特定的数据在内存中只有一份而且能够被一个类的所有实例对象所共享。例如某个学校所有学生共享同一个学校名称,此时完全不必在每个学生对象所占用的内存空间中都定义一个变量来表示学校名称,而可以在对象以外的空间定义一个表示学校名称的变量,让所有对象来共享。

class Student{
	static String schoolName;	//定义静态变量schoolName
}

public class Example12 {
	public static void main(String[] args) {
		//静态成员调用方式:类名.静态成员变量
		Student.schoolName = "希望小学";	//为静态变量赋值
		Student s1 = new Student();		//创建学生对象
		Student s2 = new Student();
		
		System.out.println("my school is "+s1.schoolName);
		System.out.println("my school is "+s2.schoolName);
	}
}

在一个Java类中,可以使用static关键字来修饰成员变量,该变量被称作静态变量。静态变量被所有实例共享,可以使用“类名.变量名”的形式来访问。

注意: static关键字只能用于修饰成员变量,不能用于修饰局部变量否则编译会报错。

静态方法

在实际开发时,开发人员有时会希望在不创建对象的情况下就可以调用某个方法,换句话说也就是使该方法不必和对象绑在一起。要实现这样的效果,只需要在类中定义的方法前加上static关键字即可,通常称这种方法为静态方法。同静态变量一样,静态方法可以使用“类名.方法名”的方式来访问,也可以通过类的实例对象来访问。
注意:在一个静态方法中只能访问用static修饰的成员,原因在于没有被static修饰的成员需要先创建对象才能访问,而静态方法在被调用时可以不创建任何对象。

class Person{
	private int age;
	private static String name = "Tony";

	public static void speak()	//定义静态方法
	{
		System.out.println("hello "+name);
	}
	
	
}

public class Example13 {
	public static void main(String[] args) {
		//1、类名.方法的方式调用静态方法
		Person.speak();
		//2、实例化对象方式调用静态方法
		Person p = new Person();
		p.speak();
	}
}

静态代码块

在Java类中,使用一对大括号包围起来的若干行代码被称为一个代码块,用static关键字修饰的代码块称为静态代码块。当类被加载时,静态代码块会执行,由于类只加载一次,因此静态代码块只执行一次。在程序中,通常会使用静态代码块来对类的成员变量进行初始化。

/*
 * 静态代码块
 * 
 */

class Person{
	//静态代码块
	static{	
		System.out.println("Person类中的静态代码块执行了");
	}
}
public class Example14 {
	//静态代码块
	static{
		System.out.println("测试类中的静态代码块执行了");
	}
	public static void main(String[] args) {
		Person p1 = new Person();
		Person p2 = new Person();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值