static在java中的用法
时间: 2023-05-31 15:08:03 浏览: 50
在Java中,static可以修饰一个类的成员变量和成员方法。被static修饰的成员变量和成员方法是属于类的,而不是属于对象的。这意味着可以通过类名直接访问static变量和方法,而不需要先创建对象。此外,static变量只会被初始化一次,即使创建多个对象也只有一个static变量。
相关问题
static在Java中如何使用
在Java中,static关键字可以用于以下情况:
1. 静态变量:用static关键字声明的变量,称为静态变量或类变量。它们属于类,而不是属于实例。静态变量只有一个副本,无论创建多少个对象,都共享这个静态变量。静态变量可以通过类名直接访问,也可以通过对象名访问。
例如:
```
public class MyClass {
static int count = 0;
public MyClass() {
count++;
}
public static void main(String[] args) {
MyClass obj1 = new MyClass();
MyClass obj2 = new MyClass();
System.out.println(MyClass.count); // 输出2
}
}
```
2. 静态方法:用static关键字声明的方法,称为静态方法或类方法。它们属于类,而不是属于实例。静态方法不能访问非静态变量和非静态方法,只能访问静态变量和静态方法。
例如:
```
public class MyClass {
static int count = 0;
public MyClass() {
count++;
}
public static int getCount() {
return count;
}
public static void main(String[] args) {
MyClass obj1 = new MyClass();
MyClass obj2 = new MyClass();
System.out.println(MyClass.getCount()); // 输出2
}
}
```
3. 静态代码块:用static关键字声明的代码块,称为静态代码块。它们在类加载时执行,只执行一次。
例如:
```
public class MyClass {
static int count = 0;
static {
System.out.println("静态代码块执行");
}
public MyClass() {
count++;
}
public static int getCount() {
return count;
}
public static void main(String[] args) {
MyClass obj1 = new MyClass();
MyClass obj2 = new MyClass();
System.out.println(MyClass.getCount()); // 输出2
}
}
```
4. 静态内部类:用static关键字修饰的内部类称为静态内部类。静态内部类可以访问外部类的静态变量和静态方法,但不能访问非静态变量和非静态方法。
例如:
```
public class OuterClass {
static int count = 0;
static class InnerClass {
public void printCount() {
System.out.println("count = " + count);
}
}
public static void main(String[] args) {
OuterClass.InnerClass inner = new OuterClass.InnerClass();
inner.printCount(); // 输出count = 0
}
}
```
static关键字在java中的用法
1. static变量:被声明为static的变量是类变量,也称为静态变量。它们属于类而不是对象,因此可以在任何对象创建之前访问它们。static变量在第一次使用时被初始化,并且只有一个实例。
2. static方法:被声明为static的方法是类方法,也称为静态方法。它们可以直接从类中调用,无需创建类的实例。static方法不能访问非static成员变量和方法。
3. static代码块:被声明为static的代码块在类被加载时执行。它们可以用于初始化静态变量。
4. static类:内部类可以被声明为static,这意味着它们可以直接从外部类中访问,并且它们的生命周期与外部类相同。
5. static导入:使用static导入可以让您直接使用另一个类中的静态方法或变量,而无需使用类名来引用它们。