概念:
静态:static
对于static修饰的成员和方法,都可以称为静态成员,存放在方法区中的静态区;静态成员随着类的加载而加载,且只加载一次。
静态成员特点:实例(对象)共享。所有的对象共享该成员。
格式:
①凡是static修饰的,都是静态成员。
②调用格式:类名.属性名称 / 方法名称(参数)
③静态成员又叫类成员,属性被称为类属性,方法称为类方法
静态成员与非静态成员之间的调用关系:
①静态成员调用静态成员:直接调用;
②静态成员调用非静态成员:不能直接调用。若想使用,可以添加为静态,或者创建对象,要保证非静态成员存在才可以使用。
③非静态成员调用静态成员:直接调用;
④非静态成员与非静态成员之间:直接调用。
静态成员与非静态成员之间的区别
写法:
静态成员:static修饰
非静态成员:没有static修饰
内存中的位置:
静态成员:方法区的静态区中
非静态成员:属性:在堆中的对象里;方法:在方法区的非静态区
调用:
静态成员:类名.属性/方法(参数)
非静态成员:对象名称.属性/方法(参数)
生命周期:
静态成员:随着类的加载而加载,随着类的消亡而消亡
非静态成员:随着对象的加载而加载,随着对象的消亡而消亡
package com.demo2;
public class 静态成员与非静态成员 {
public static void main(String[] args) {
//创建对象调用非静态方法
B b = new B();
b.show();
//直接调用静态方法
B.look();
//通过对象也可以调静态方法
b.look();
}
}
class B{
int a = 4;
//静态属性
static int b = 7;
public void show(){
a = 6;
System.out.println("非静态:" + a);
}
//静态方法
public static void look(){
B k = new B();
k.a = 6;
b = 9;
System.out.println("静态:"+ (k.a + b));
}
}
非静态:6
静态:15
静态:15
Process finished with exit code 0



