Java基础
修饰符
- static
修饰变量,方法,静态块
1.1 修饰变量
public class DemoStatic {
private static int count;
public DemoStatic() {
count++;
}
public static void main(String[] args) {
DemoStatic demoStatic1 = new DemoStatic();
DemoStatic demoStatic2 = new DemoStatic();
System.out.println(DemoStatic.count);
}
}
上面代码中,count是一个DemoStatic类中的静态变量,它将被DemoStatic的所有实例对象共享,所以当demoStatic1创建时count变为1,当demoStatic2创建时count变为2。
静态变量: 类加载器加载类时初始化
变量的初始化过程:装载->设默认值->初始化->使用->卸载
1.2 修饰方法
静态方法:类加载器加载时初始化
静态方法不能被重写
静态方法可以被重载
静态方法可以被继承
构造方法不能定义为静态的
静态方法不能使用this,super
public class DemoStatic2 {
int i = 0;
//构造方法不能定义为static
//public static DemoStatic2() {
//}
//静态方法可以重载
public static void test1() {
System.out.println("DemoStatic2");
}
public static void test1(String str) {
//静态方法不能用this,super
//this.i;
}
public static void main(String[] args) {
//静态方法可以被继承
// demo = new Demo10();
//demo.test1();
//静态方法不能被重写
DemoStatic2 demo2 = new Demo10();
demo2.test1();
}
}
class Demo10 extends DemoStatic2 {
public static void test1() {
System.out.println("Demo");
}
}
1.3 静态块
static{
}
写到类体中,在类加载的时候,执行一次
public class DemoStatic3 {
static {
System.out.println("aaa");
}
public static void main(String[] args) {
}
}
静态块和构造块
执行顺序:父类的静态块,子类的静态块,父类的构造块,父类的构造方法,子类的构造块,子类的构造方法
class A{
static {
System.out.println("1");
}
{
System.out.println("2");
}
public A() {
System.out.println("3");
}
}
class B extends A{
static {
System.out.println("11");
}
{
System.out.println("22");
}
public B() {
System.out.println("33");
}
}
public class DemoStatic4 {
public static void main(String[] args) {
new B();
}
}
- final
修饰类,变量,方法
2.1 修饰变量
final修饰的变量:常量
常量名:一般名字的所有字母都大写,单词间用下划线连接。
定义格式:final int PRICE = 10;
final int PRICE;构造方法中赋值或构造块、静态块中赋值
特点:不能改,会报错
通常会用public,static修饰
2.2 修饰方法
特点:不能重写,会报错
可以被继承,可以重载
2.3 修饰类
特点:不能被继承,会报错