static关键字

概述:static(特殊修饰符)是用来修饰类,方法(静态方法),成员变量(静态成员变量),代码块(静态代码块)。

成员变量和类变量(static 修饰的成员变量)区别

  • 成员变量又被称为对象变量/实例变量,它是随着对象的创建而产生的,对象之间互不影响。

                成员变量是通过对象名,属性名来进行访问和操作的              

  • 类变量(静态变量),它是随着类的加载而产生的,该类所有的对象所共享。

                类变量是通过类名,属性名来进行访问和操作(也是可以采用对象名,类变量名来访问,不建议)

// 类变量建议采用类名,属性名方式使用

类名.属性名

public class Student {
	// 年龄
	int age;
	// 班级编号
	static String classId;

}
public class Demo01 {

	public static void main(String[] args) {
		Student stu1 = new Student();
		stu1.age = 18;
		Student.classId= "358";
		
		Student stu2 = new Student();
		stu2.age = 20;
		Student.classId= "359";
		
		System.out.println(stu1.age); // 18
		System.out.println(Student.classId); // 359
		System.out.println(stu2.age); // 20
		System.out.println(Student.classId); // 359
	}

}

 成员方法和静态方法的区别:

  • 在同一个类中,成员方法之间可以直接互相调用,也可以调用静态方法。

                成员方法可以直接使用成员变量,也可以直接使用静态变量。

  • 在同一个类中,静态方法之间可以直接互相调用,但不可以调用成员方法。

                静态方法可以直接使用静态变量,但不可以直接使用成员变量。

代码块/非静态代码块/成员代码块/构造代码块和静态代码块区别:

public class 类名 {

    // 代码块:用于存储一些希望在构造方法执行前执行的程序段
    // 总是在构造方法执行前执行
    {
        // 若干代码
        // 若干程序段
    }

    // 静态代码块:由于存储一些希望在类加载是只需执行一次的程序段
    // 类加载时执行,且只执行一次
    static {
        // 程序段
    }

}
public class Test {

	public Test(){
		System.out.println("构造方法执行了!");
	}
	
	static {
		System.out.println("静态代码段执行了!");
	}
	
	{
		System.out.println("代码段执行了!");
	}
}
public class Demo01 {

	public static void main(String[] args) {
		Test test = new Test();
		Test test1 = new Test();
	}

}

注意:(暂时可以用它解决的问题)

  1. 一些工具类的方法,可以定义为静态的,这样不需要创建对象就可以使用。

  2. 有一些内容需要被多个对象共享,就可以将这些内容定义静态的。

  3. 在类加载时,希望执行一些代码段,可以将其定义在静态代码块中。

  4. ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值