java关键字static

static 是一个常用关键字,用于修饰类的成员(变量、方法、内部类等)

1. 静态变量
静态变量(类变量)是属于类的,而不是某个特定的实例。所有实例共享同一个静态变量。
可以使用类名直接访问静态变量。(建议直接用类名直接访问)。
静态变量赋值之前是默认值;

public class Test {
    public static void main(String[] args) {
        People p = new People();
        p.age = 30;
        p.name = new String("chen");
        System.out.println(People.name);//chen
        System.out.println(People.age);//30
        //可以使用类名直接访问静态成员变量
    }
}

2. 静态方法
静态方法(类方法)可以直接通过类名调用(建议直接用类名直接访问),而不需要创建类的实例。静态方法不能访问非静态成员变量。
注意:静态方法中不可以使用this关键字,this代指的是调用该方法的实例对象,而静态方法是可以通过类名直接调用的。

public class People {
   public  int age;
    static String name;

    public static void say()
    {
        System.out.println("my name is " + name);
        //System.out.println("my age is " + age);报错,静态方法不能访问非静态成员变量
    }
    
}

public class Test {
    public static void main(String[] args) {

        People p = new People();
        p.age = 30;
        p.name = "chen";

        p.say();//my name is chen
        People.say();//my name is chen


    }
}

3. 静态代码块
格式:static { }
特点:类加载时自动执行,由于类只会加载一次,所以静态代码块也只会执行一次。
作用:完成类的初始化,即对静态变量的初始化。

public class People {
   public  int age;
   public  static int num ;
   static {
      num ++;
      //静态代码块中不能含有非静态变量
   }

}

public class Test {
    public static void main(String[] args) {

        People p = new People();
        p.age = 30;
        System.out.println(People.num);//1
        System.out.println(People.num);//1
        System.out.println(People.num);//1

    }
}

拓展:
实例态代码块
格式:{ }
特点:每次创建对象时,执行实例代码块,并在构造器前执行。
作用:和构造器一样,都是用来完成对象的初始化的。

public class People {
   public  int age;
   public  static int num ;
   public People(){
       System.out.println("构造器执行,第 " + num + "次创建对象");
   }

   {
      num++;
   }

}

public class Test {
    public static void main(String[] args) {

        People p1 = new People();//构造器执行,第 1次创建对象
        People p2 = new People();//构造器执行,第 2次创建对象
        People p3 = new People();//构造器执行,第 3次创建对象
        People p4 = new People();//构造器执行,第 4次创建对象


    }
}

4. 静态内部类
静态内部类可以独立于外部类实例使用。

public class People {
   public int age = 3;
   static String name = "1334";
    public static class inner//成员内部类,成员内部类调用外部类方法,属性和外部类方法权限相同
    {
        public void print()
        {
            //静态内部类只能访问外部类的静态成员变量
            //System.out.println(age);报错
            System.out.println(name);
        }

    }
}

public class Test {
    public static void main(String[] args) {

       People.inner in = new People.inner();//可直接创建静态内部类

    }
}

总结
静态变量:类的所有实例共享同一个变量。
静态方法:可以直接通过类名调用,不能访问非静态成员。
静态代码块:在类加载时执行一次性的初始化代码。
静态内部类:可以独立于外部类实例使用。

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值