Java static关键字的使用

本文详细介绍了Java中的静态特性,包括静态变量、静态方法和静态块的概念及使用方式。阐述了静态变量如何实现类的所有对象共享同一份数据,静态方法如何调用静态成员,以及静态块在类加载时的执行特点。

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

1.静态变量

2.静态方法

3.静态块


(1).为什么用静态变量

一个类创建多个该类的对象,每个对象都拥有自己的成员,互相独立,然而在某些时候,我们更希望该类所有的对象共享同一个成员的时候,就需要static来修饰了

是被整个类所拥有.

public class Car {
	//car的颜色用static修饰
	static String carColor="red";
	public static void main(String[] args) {

		//1.直接用类名调用/不用创建对象
	    System.out.println("直接用类名调用carColor="+Car.carColor);
	    //2.通过类对象调用
	    Car bcar=new Car();
	    System.out.println("通过类对象调用carColor="+bcar.carColor);
	    //3.修改
	    bcar.carColor="yellow";
	    System.out.println("通过类对象修改后的carColor="+bcar.carColor);
	    System.out.println("通过修改后的carColor后类名调取该变量="+Car.carColor);
	}
}

打印结果:

直接用类名调用carColor=red

通过类对象调用carColor=red

通过类对象修改后的carColor=yellow

通过修改后的carColor后类名调取该变量=yellow


(2)静态方法:

1、 静态方法中可以直接调用同类中的静态成员,但不能直接调用非静态成员,如果希望在静态方法中调用非静态变量,可以通过创建类的对象,然后通过对象来访问非静态变量.

public class Car {
	//car的颜色用static修饰
	static String carColor="red";
	String carSize="A";
	public static void main(String[] args) {
	   
		//1.通过类对象调用
	    Car bcar=new Car();
	    System.out.println("通过类对象调用的非静态属性carSize="+bcar.carSize);
	}
}
打印结果:

通过类对象调用的非静态属性carSize=A

2. 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法.

public class Car {
	//car的非静态方法
	public void run(){
		System.out.println("速度70迈");
	}
	public static void fly(){
		System.out.println("会飞的车");
	}
	public static void main(String[] args) {
	   
		//1.通过类对象调用非静态方法
	    Car bcar=new Car();
	    bcar.run();
	    //2.可直接调用
	    fly();
	}
}
打印结果:

速度70迈

会飞的车

练习:

public class Car {
	  // 定义静态变量score1
         static int score1 = 86;
         // 定义静态变量score2
	   static  int score2 = 92; 
        // 定义静态方法sum,计算成绩总分,并返回总分
	public  static   int sum() { 
         return  score1+score2;
	}
	public static void main(String[] args) {
		  // 调用静态方法sum并接收返回值
	  	int allScore = Car.sum();
		System.out.println("总分:" + allScore);
	}
}
打印结果:

总分:178

3.静态块: 静态初始化块只在类加载时执行,且只会执行一次,同时静态初始化块只能给静态变量赋值,不能初始化普通的成员变量

public class Car {
	
	int number;
	int number2;
	// 定义静态变量number3
        static int number3;
        // 构造方法
	public Car() { 
		number=88;
		System.out.println("number1:" + number);
	}
	{
		number2=99;
		System.out.println("代码块的number2:" + number2);
	}
	static{
		number3=100;
		System.out.println("静态代码块的number3:" + number3);
	}
	
	public static void main(String[] args) {
		  //用类对象调用
		Car car=new Car();
		System.out.println("number:" + car.number);
		System.out.println("number2:" + car.number2);
		System.out.println("number3:" + car.number3);
	}
}

打印结果:

静态代码块的number3:100

代码块的number2:99

构造方法number1:88

number:88

number2:99

number3:100


细心的会发现他们的执行顺序:静态方法->代码块-构造方法










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我先来一碗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值