public static什么意思?

发布时间:2023-05-19

在Java编程中, public static是常用的关键字,它们通常一起出现在方法或变量的声明中。它们用来描述代码的内部结构以及它们之间的相互关系。在本文中,我们将讨论public static的意思和用途。

一、public是什么意思?

public是Java中访问修饰符的一种。这种访问修饰符允许程序的任何部分都可以访问指定的代码元素。

public class MyClass {
    public void myMethod() {
        //do something
    }
}

在这个例子中,我们可以看到public修饰符被用来描述MyClass类以及其中的myMethod()方法。这意味着,在同一个项目中的任何类都可以访问这个方法。如果没有public修饰符,那么只有MyClass类内的其他方法才能访问myMethod()方法。

二、static是什么意思?

static是Java中的关键字。它用于将方法或变量标记为与类相关而非与实例相关。这意味着,static元素只有一份副本,独立于任何类的实例。

public class MyClass {
    static int myVariable = 0;
    public static void myMethod() {
        //do something
    }
}

在这个例子中,我们看到了一个myVariable变量和一个myMethod()方法,两者都使用了static修饰符。这意味着,myVariable变量和myMethod()方法只有一份副本,并且可以通过类来访问它们。

三、public static的用途是什么?

1. 用于访问非静态成员

public static可以用来访问非静态的方法和变量。在Java中,静态方法不能直接访问实例变量和实例方法,因为它们不依赖于特定的类实例。但是,如果我们要在静态方法中访问非静态方法或变量,则必须使用public static关键字。

public class MyClass {
    private int myVariable;
    public void setMyVariable(int myVariable) {
        this.myVariable = myVariable;
    }
    public static void main(String[] args) {
        MyClass myObj = new MyClass();
        myObj.setMyVariable(10);
        System.out.println("My variable is: " + myObj.myVariable);
    }
}

在这个例子中,我们创建了一个MyClass类,其中包含一个非静态的setMyVariable()方法和一个main()方法。在main()方法中,我们在创建MyClass类的实例之后,通过它访问了setMyVariable()方法,并打印了myVariable变量的值。

2. 用于创建单例模式

将类定义为public static可以用于创建单例模式。单例模式是一种设计模式,它确保一个类只能有一个实例,并提供全局访问点来访问该实例。实现单例模式的一种方法是在一个静态的成员变量中创建唯一实例。

public class Singleton {
    private static Singleton instance;
    private Singleton() {}
    public static Singleton getInstance() {
        if(instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

在这个例子中,我们创建了一个名为Singleton的类。由于构造函数是私有的,所以只有getInstance()方法可以创建Singleton类,该方法返回Singleton类的单个实例。instance变量是一个静态变量,因此可以从Singleton类外部访问它。

3. 用于定义常量

public static也可以用于定义常量。在Java中,常量是一个不能改变的值。在定义常量时,建议将变量标记为public static final。这确保了常量是全局可见的,并且在程序的任何部分都不能更改。

public class MyConstants {
    public static final double PI = 3.14159;
    public static final String HELLO_WORLD = "Hello World!";
}

在这个例子中,我们创建了一个MyConstants类,并定义了两个常量PIHELLO_WORLD。这样,我们就可以在程序的任何部分使用这些常量的值,而无需重新定义它们。