Static关键字与之静态变量、静态代码块、静态方法、静态类

1. static修饰的类只能为内部类,普通类无法用static关键字修饰。static修饰的内部类相当于一个普通的类,访问方式为(new 外部类名.内部类的方法() )。如下所示:

public class OuterClass {

    public static class InnerClass{

        InnerClass(){

            System.out.println("============= 我是一个内部类'InnerClass' =============");

        }

    }

}

 

public class TestStaticClass {

    public static void main(String[] args) {

        // 不需要new一个InnerClass

        new OuterClass.InnerClass();

    }

}

注:普通内部类的访问方式为 (外部类对象.new 内部类方法())

 

2.static修饰静态方法的访问方式为  (类名.方法名)

3.静态变量和实例变量的区别

 static修饰的变量为静态变量,静态变量在内存中只有一份存储空间,静态变量不属于某个实例对象,被一个类中的所有对象所共享,属于类,所以也叫类变量,可以直接通过类名来引用。

实例变量属于某个固定对象所私有,实例变量的使用必须先创建一个类的实例,然后通过这个实例来引用使用。

public class Person {

    int age = 10;

    static  int age1 =11;

}

public class Test {
    public static void main(String[] args) {
        Person person = new Person();
        person.age=11;
        person.age1 = 12;
        Person person1 = new Person();
        
        System.out.println(person.age);
        System.out.println(person.age1);
        System.out.println(person1.age);
        System.out.println(person1.age1);
    }
}

 

 

 结果:   11

12

10

12

static

静态变量

静态方法

别名

类变量

类方法

  级别

与类同级

与类同级

  加载

随着类的加载而被加载到方法区的静态区域

随着类的加载而被加载到方法区的静态区域

  初值

赋予系统默认初始值

不赋予系统默认初始值,被调用时会被加载到栈中执行

  调用

1.类名.     2.对象.

1.类名.     2.对象.

 

类产生的对象可共享同一个静态变量

支持重载

 

方法(普通方法和构造方法)里不能定义静态变量

不支持重写(重写针对的是对象)

 

 

Java中静态信息只能 直接使用静态信息

 

 

但是非静态信息可以 直接使用非静态以及静态

5.静态代码块的格式是:
public class 类名称{
static {
//静态代码块的内容
}
特点:当第一次用到本类时,静态代码块执行唯- -的一次。
静态内容总是优先于非静态,所以静态代码块比构造方法先执行。
静态代码块的典型用途:
用来一次性地对静态成员变量进行赋值。

 

猜你喜欢

转载自blog.csdn.net/weixin_51980491/article/details/112736632
今日推荐