滕州网站建设助企网络,网站建设网站合同版本,一般电商网站做集群,wordpress 获取页面标题文章目录 一. 修饰成员变量二. 修饰成员方法三. 修饰代码块四. 修饰类 一. 修饰成员变量 static 修饰的成员变量#xff0c;称为静态成员变量#xff0c;该变量不属于某个具体的对象#xff0c;是所有对象所共享的。 public class Student {private String name;private sta… 文章目录 一. 修饰成员变量二. 修饰成员方法三. 修饰代码块四. 修饰类 一. 修饰成员变量 static 修饰的成员变量称为静态成员变量该变量不属于某个具体的对象是所有对象所共享的。 public class Student {private String name;private static String classRoom106;public static void main(String[] args) {// 方法一静态成员变量可以直接通过类名访问System.out.println(Student.classRoom);//方法二静态成员变量也可以通过对象访问,但是classRoom是三个对象共享的Student s1new Student();Student s2new Student();Student s3new Student();System.out.println(s1.classRoom);System.out.println(s2.classRoom);System.out.println(s3.classRoom);}
}由以上代码可知 【静态成员变量特性】: **不属于某个具体的对象是类的属性所有对象共享的不存储在某个对象的空间中。既可以通过对象访问也可以通过类名访问但一般更推荐使用类名访问。类变量存储在方法区当中。生命周期伴随类的一生(即随类的加载而创建随类的卸载而销毁)。 二. 修饰成员方法 被 static 修饰的成员方法称为静态成员方法是类的方法不是某个对象所特有的。在类外部静态成员一般是通过静态方法访问的。 public class Student {private String name;private static String classRoom106;public static String getClassRoom(){return classRoom;}
}
class TestStudent{public static void main(String[] args) {Student s1new Student();System.out.println(Student.getClassRoom());}
}由以上代码可知 【静态方法特性】: 不属于某个具体的对象是类方法。可以通过对象调用也可以通过**类名.静态方法名(…)**方式调用更推荐使用后者。 不能在静态方法中访问任何非静态成员变量 静态方法中不能调用任何非静态方法。静态方法无法重写无法实现多态。 三. 修饰代码块
静态成员变量一般不会放在构造方法中来初始化构造方法中初始化的是与对象相关的实例属性。那么静态成员变量该如何实现初始化呢
1. 就地初始化在定义时直接给出初始值
private static String classRoom106;2. 静态代码块初始化 使用 static 定义的代码块称为静态代码块。一般用于初始化静态成员变量。 public class Student {private String name;private static String classRoom;static {classRoom106;}public static void main(String[] args) {System.out.println(Student.classRoom);}
}这里有几点需要注意 静态代码块不管生成多少个对象其只会执行一次。静态成员变量是类的属性因此是在JVM加载类时开辟空间并初始化的。如果一个类中包含多个静态代码块在编译代码时编译器会按照定义的先后次序依次执行(合并)实例代码块只有在创建对象时才会执行。 四. 修饰类 被 static 修饰的内部成员类称为静态内部类。 public class OutClass {private int a;private static int b;public void methodA(){a10;System.out.println(a);}public static void methodB(){System.out.println(b);}//静态内部类static class InnerClass{public void methodInner(){//a100;//编译失败在内部类中只能访问外部类的静态成员变量b200;//methodA();//编译失败因为methodB()不是静态成员方法methodB();}}public static void main(String[] args) {//静态内部类对象创建OutClass.InnerClass innerClassnew OutClass.InnerClass();innerClass.methodInner();}
}这里有几点需要注意 在静态内部类中只能访问外部类中的静态成员。创建静态内部类对象时不需要先创建外部类对象。 如果我们一定要访问外部类中的非静态成员呢 我们可以通过在静态内部类内创建外部类对象然后通过该对象去访问。 代码示例如下
static class InnerClass{public void methodInner(){OutClass outClassnew OutClass();outClass.a10;outClass.methodA();}
}