Java中有static和无static的区别,给我举例子
时间: 2023-11-03 14:05:42 浏览: 37
在 Java 中,static 和非 static 的区别主要在于它们的作用范围和生命周期不同。具体来说:
1. static 成员属于类,非 static 成员属于对象。也就是说,非 static 成员必须通过对象来访问,而 static 成员可以通过类名直接访问。
2. static 成员的生命周期与类的生命周期相同,一旦类被加载到内存中,static 成员就会被初始化,直到程序结束或者类被卸载。而非 static 成员的生命周期与对象的生命周期相同,只有在对象被创建时才会被初始化,对象销毁时也会被销毁。
下面是一个例子,可以更好地理解 static 和非 static 的区别:
```
public class MyClass {
private static int count = 0; // 静态成员变量
private int id; // 非静态成员变量
public MyClass() {
count++;
id = count;
}
public static int getCount() { // 静态成员方法
return count;
}
public int getId() { // 非静态成员方法
return id;
}
}
public class Main {
public static void main(String[] args) {
MyClass obj1 = new MyClass();
MyClass obj2 = new MyClass();
System.out.println("count=" + MyClass.getCount()); // 输出 count=2
System.out.println("obj1.id=" + obj1.getId()); // 输出 obj1.id=1
System.out.println("obj2.id=" + obj2.getId()); // 输出 obj2.id=2
}
}
```
在上面的例子中,`count` 是一个静态成员变量,它的值被所有 `MyClass` 的对象所共享,每创建一个对象就会自增一次。`getId()` 是一个非静态成员方法,它返回对象的 `id` 属性。在 `main` 函数中,我们创建了两个 `MyClass` 的对象,分别输出了它们的 `id` 值和 `count` 值。