static 关键字详解

static静态关键字,Java中的成员变量分为实例变量(非静态变量)和类变量(静态变量),成员方法分为实例方法(非静态方法)和类方法(静态方法)

被static修饰的成员变量和成员方法属于类、叫做静态变量/类变量,静态方法/类方法,通过 类.成员 方式调用

不被static修饰的成员变量和成员方法属于对象、对象成员、非静态成员,也叫作实例变量/非静态变量,实例方法方法/非静态方法,通过 对象.成员 方式调用

而静态变量和静态方法是被所有实例对象所共享的

1、静态成员

package com.method;

public class Test1 {
    //静态成员变量,一旦定义属于类
    static int a = 3;

    //静态成员方法
    public static void print1() {
        System.out.println("静态成员方法");
    }

    public static void main(String[] args) {
        System.out.println(a);    //调用成员变量
        print1();                 //调用成员方法

    }

}

Test1类中一个静态变量a和静态方法print1(),在主方法中使用静态变量和静态方法可以直接使用,但这种方式仅限于主方法和静态成员在同一个类中,最好的方式是通过 类名.成员 的方式进行调用,也就是Test1.aTest1.print1()的方式,这样即使主方法和静态成员不在同一个类中也能进行调用。

2、非静态成员   

package com.method;

public class Test1 {

    //非静态成员变量,定义后属于对象,必须通过创建对象来调用
    int b = 4;

    //非静态成员方法,定义后属于对象,必须通过创建对象来调用
    public void print2() {
        System.out.println("非静态成员方法");
    }

    public static void main(String[] args) {
      
        Test1 test1 = new Test1();
        System.out.println(test1.b);
        test1.print2();
    }

}

Test1类中一个非静态变量和方法,在主方法中要使用非静态变量和方法,只能通过创建实例对象的方式进行调用

3、静态变量可以被所有对象共享

package com.method;

public class Test1 {
    //静态成员变量,一旦定义属于类
    static int a = 3;

    //静态成员方法
    public static void print1() {
        System.out.println("静态成员方法");
    }

    public static void main(String[] args) {

        Test1 test1 = new Test1();

        //对象也可以直接拿到静态方法和静态变量数据,也就是说静态变量和静态方法被所有实例对象所共享
        test1.print1();
        System.out.println(test1.a);

        test1.a=6;
        System.out.println(a); //静态变量a的值已经被修改为了6

        Test1 test2 = new Test1();
        System.out.println(test2.a);//静态变量a的值已被篡改,test2对象调用时已经不是原来的a
    }

}

Test1类中有静态变量和静态方法,在主函数中可以通过创建对象test1,然后通过 对象.静态成员的方式进行调用。也可通过对象调用的方式对静态变量进行修改,另一个对象test2.a的值已经是被test1对象修改过的值

4、static关键字注意事项

  • 静态方法只能访问静态方法和静态变量
  • 非静态方法可以访问静态变量和静态方法,也可以访问非静态的成员变量和非静态的成员方法
  • 静态方法中没有this关键字
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值