Java中静态成员与非静态成员之间的所有区别
时间: 2024-04-03 20:31:00 浏览: 28
Java中静态成员和非静态成员之间有以下的区别:
1. 内存分配:静态成员变量和方法在类加载时就会被分配到内存中,而非静态成员变量和方法则是在创建对象时才会被分配到内存中。
2. 调用方式:静态成员变量和方法可以直接通过类名调用,而非静态成员变量和方法只能通过对象名调用。
3. 生命周期:静态成员变量和方法的生命周期与类相同,而非静态成员变量和方法的生命周期与对象相同。
4. 共享性:静态成员变量和方法是类共享的,所有的对象都可以访问和修改它们,而非静态成员变量和方法则是对象私有的,每个对象都有自己的一份。
5. 初始化时间:静态成员变量和方法在类加载时就会被初始化,而非静态成员变量和方法则是在对象创建时才会被初始化。
6. 访问权限:静态成员变量和方法可以访问类的私有成员,而非静态成员变量和方法则不能访问类的私有成员。
7. 可见性:静态成员变量和方法对所有的对象都是可见的,而非静态成员变量和方法对其他对象是不可见的。
相关问题
java静态成员变量与非静态成员变量初始化
Java中,静态成员变量和非静态成员变量在初始化时有所不同。
静态成员变量在类加载时进行初始化,且只会初始化一次。可以在声明时直接赋值,或者在静态代码块中进行赋值。
例如:
```
public class MyClass {
static int staticVar = 1;
int var = 2;
static {
staticVar = 3;
}
}
```
在这个例子中,静态成员变量`staticVar`在声明时被赋值为1,然后在静态代码块中被重新赋值为3。非静态成员变量`var`在对象创建时初始化,默认值为2。
非静态成员变量在对象创建时进行初始化,可以在声明时直接赋值,或者在构造函数中进行赋值。
例如:
```
public class MyClass {
static int staticVar = 1;
int var;
public MyClass() {
var = 2;
}
}
```
在这个例子中,静态成员变量`staticVar`在类加载时被初始化为1。非静态成员变量`var`在对象创建时被构造函数初始化为2。
java类中静态成员和非静态加载顺序
在 Java 类中,静态成员和非静态成员的加载顺序是不同的。
1. 静态成员的加载顺序:
* 静态代码块:在类加载时,静态代码块会被最先执行,且只会执行一次;
* 静态变量:在静态代码块执行完毕后,静态变量会按照定义的顺序被加载并初始化。
2. 非静态成员的加载顺序:
* 非静态代码块:在每次创建对象时,非静态代码块会被执行;
* 非静态变量:在非静态代码块执行完毕后,非静态变量会按照定义的顺序被加载并初始化。
需要注意的是,静态成员只会在类加载时被初始化一次,而非静态成员会在每次创建对象时被初始化。因此,在使用静态成员和非静态成员时,需要注意它们的加载顺序和执行时机。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)