暑假自学(23)

static:
1.static可以用来修饰:属性,方法,代码块,内部类
2.static修饰属性:静态变量
2.1 属性:按是否使用static修饰,又分为:静态属性 vs 非静态属性(实例变量)
实例变量:我们创建了类的多个对象,每个对象都独立的拥有一套类中的实例变量,其中一个对象的变量修改不会影响其他对象的变量
静态变量:所有对象共享同一个静态变量,修改某一个对象的静态变量时会影响其他变量。
2.2 static修饰属性的其他声明:
① 静态变量随类的加载而加载。可以通过类.静态变量来调用 类名.静态变量 Chinese.nation = "中国"
② 静态变量的加载要早于对象的创建
③ 由于类只会加载一次,则静态变量在内存中也只会存在一份,存在方法区的静态域中。


④(能否调用) 类变量 实例变量
类 yes no
对象 yes yes
2.3
3.static修饰方法:静态方法
① 随着类的加载而加载(通过类的方式调用)
② 静态方法中,只能调用静态的方法或属性(原因:在静态方法加载时,非静态变量或方法并没有加载)
非静态方法中,都可以调用
4.注意点
4.1静态方法不能使用this,super
4.2静态属性和方法的使用,从生命周期的角度理解(先加载和后加载)
5.在所有对象的属性都一样的时候,或者工具类,可以定义为static

static代码测试

public class StaticTest {
public static void main(String[] args) {
Chinese c1 = new Chinese();
c1.name = "姚明";
c1.age = 40;

Chinese c2 = new Chinese();
c2.name = "马龙";
c2.age = 30;

c1.nation = "CHN";
c2.nation = "China";


System.out.println(c1.nation);
System.out.println(c2.nation);

}
}
class Chinese{
String name;
int age;
static String nation;
}

原文地址:https://www.cnblogs.com/buxiang-Christina/p/13394155.html