目录:
一.static修饰成员方法
二.static成员变量初始化
三.代码块
一.static修饰成员方法:
1.一般类中的数据成员都设置为
private
,而成员方法设置为
public
,
问:那设置之后,Student类中,被Student修饰,的属性(classRoom)如何在类外访问呢?
public class Student{
private String name;
private String gender;
private int age;
private double score;
private static String classRoom = "Bit306";
// ...
}
public class TestStudent {
public static void main(String[] args) {
System.out.println(Student.classRoom);
}
}
编译失败:
Error:(10, 35) java: classRoom 在 extend01.Student 中是 private 访问控制
那
static属性应该如何访问呢?
答:Java中,被static修饰的成员方法称为静态成员方法,是类的方法,不是某个对象所特有的。静态成员一般是通过静态方法来访问的。
public class Student{
// ...
private static String classRoom = "Bit306";
// ...
public static String getClassRoom(){
return classRoom;
}
}
public class TestStudent {
public static void main(String[] args) {
System.out.println(Student.getClassRoom());
}
}
2.静态方法特性:
1.
不属于某个具体的对象,是类方法
2.
可以通过对象调用,也可以通过类名(
点)
静态方法名
方式调用,更推荐使用后者
3.
不能在静态方法中访问任何非静态成员变量
因此,由于静态方法的属性,在静态方法中不可以,直接调用非静态方法,及成员变量,但是可以通过对象的引用访问,该非静态方法。如:
也可以这样理解:静态方法中不能调用任何非静态方法,因为非静态方法有this参数,在静态方法中调用时候无法传递this引用
二.static成员变量初始化:
注意:静态成员变量一般不会放在构造方法中来初始化,构造方法中初始化的是与对象相关的实例属性
静态成员变量的初始化分为两种:就地初始化 和 静态代码块初始化(后面马上讲到)
。
1.就地初始化:就地初始化指的是:在定义时直接给出初始值。
2.
静态代码块初始化 :下面来讲解一下代码块。
三.代码块
1.
代码块概念以及分类 :
使用
{}
定义的一段代码称为代码块
。根据代码块定义的位置以及关键字,又可分为以下四种:
普通代码块
构造代码块
静态代码块
同步代码块
(后续会补充上)
普通代码块:
定义在方法中的代码块。
构造代码块:
定义在类中的代码块
(
不加修饰符
)
。也叫:
实例代码块
。
构造代码块一般用于初始化实例成员变量
。
静态代码块:
使用static
定义的代码块称为静态代码块。
一般用于初始化静态成员变量。
答:以上就是静态代码块初始化。