深入了解static关键字

static关键字用于定义类的静态成员,包括静态变量和静态方法,它们不属于类的实例,而是属于类本身,可通过类名直接访问。静态成员在类加载时初始化,可以被继承,但不能访问实例成员。了解static的使用能提升代码效率和可维护性。
摘要由CSDN通过智能技术生成

static是一个关键字,用于在类中定义静态成员。静态成员是指不属于类的任何实例,而是属于类本身的成员。这意味着,不需要创建类的实例即可访问这些成员,可以通过类名来访问它们。

静态成员包括静态属性和静态方法。静态属性是指属于类本身的属性,而不是类的实例的属性。静态方法是指属于类本身的方法,而不是类的实例的方法。

一、静态成员变量

静态成员变量是指属于类本身的变量,而不是类的实例的变量。静态成员变量可以通过类名来访问,不需要创建类的实例。

public class MyClass {
    public static int myStaticVariable = 10;
}

在这个例子中,我们定义了一个名为MyClass的Java类,并在其中定义了一个名为myStaticVariable的静态变量,其类型为int。可以通过MyClass.myStaticVariable来访问该变量。 

 二、静态方法

静态方法是指属于类本身的方法,而不是类的实例的方法。静态方法可以通过类名来调用,不需要创建类的实例

public class MyClass {
    public static void myStaticMethod() {
        System.out.println("静态方法");
    }
}

 在这个例子中,我们定义了一个名为MyClass的Java类,并在其中定义了一个名为myStaticMethod的静态方法,该方法使用System.out.println()语句来输出字符串"静态方法"。

三、静态代码块

静态代码块是指在类加载时执行的代码块。静态代码块只会执行一次,即在类加载时执行。静态代码块的作用是初始化静态成员变量或执行其他静态初始化任务。

public class MyClass {
    static {
        System.out.println("静态代码块");
    }
}

在这个例子中,我们定义了一个名为MyClass的Java类,并在其中定义了一个静态代码块,该代码块使用System.out.println()语句来输出字符串"静态代码块"。该代码块在类加载时执行。 

四、下面是一些关于static关键字的使用方法和注意事项:

        1.静态属性和静态方法都可以使用static关键字来定义。例如:

class MyClass {
  public static String myStaticProperty = "静态属性";
  public static void myStaticMethod() {
     System.out.println("静态方法");
  }
}

         2. 静态成员可以通过类名来访问,不需要创建类的实例。例如:

System.out.println(MyClass.myStaticProperty); // 输出 "静态属性"
MyClass.myStaticMethod(); // 输出 "静态方法"

        3.静态成员可以在类的实例中访问,但必须使用类名.静态成员的方式访问。例如: 

MyClass myObj = new MyClass();
System.out.println(myObj.myStaticProperty); // 输出 "静态属性"
myObj.myStaticMethod(); // 输出 "静态方法"

        4.静态成员可以被继承,子类可以直接访问父类的静态成员。例如:

class MySubClass extends MyClass {
    public static void mySubStaticMethod() {
        System.out.println("sub的静态方法");
    }
}

System.out.println(MySubClass.myStaticProperty); // 输出 "静态属性"
MySubClass.myStaticMethod(); // 输出 "静态方法"
MySubClass.mySubStaticMethod(); // 输出 "sub的静态方法"

         5.静态成员不能访问实例成员,因为静态成员不属于类的任何实例。例如:

public class MyClass {
    public String myInstanceProperty = "实例属性";
    public static void myStaticMethod() {
        System.out.println(this.myInstanceProperty); // 报错,无法访问实例属性
    }
}

        6.静态成员可以访问其他静态成员,因为它们都属于类本身。例如:

public class MyClass {
    public static String myStaticProperty = "静态属性";
    public static void myStaticMethod1() {
        System.out.println(myStaticProperty);
    }
    public static void myStaticMethod2() {
        myStaticMethod1();
    }
}

MyClass.myStaticMethod2(); // 输出 "静态属性"

         7.静态成员可以在类的构造函数中使用,但必须使用类名.静态成员的方式访问。例如:

public class MyClass {
    public MyClass() {
        System.out.println(MyClass.myStaticProperty);
    }
    public static String myStaticProperty = "静态属性";
}

MyClass myObj = new MyClass(); // 输出 "静态属性"

总之,static关键字是一个非常有用的工具,可以使我们在类中定义属于类本身的成员,而不是类的实例的成员,从而提高代码的可读性和可维护性。需要注意的是,在使用static关键字时,需要遵循Java语法和规范,并遵循最佳实践。面试中也会出现相关面试题。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值