java中静态变量与实例变量有何区别

博客主要介绍Java中静态变量和实例变量,阐述二者区别。静态变量存于静态存储区,与类相关,类启动时分配内存;实例变量存于堆中,与对象相关,对象调用时分配内存,调用结束释放。

一:静态变量

	 静态变量用 static字符修饰,随着类的加载而加载,静态变量存放在方法池中的静态区,可以直接通过"类名.变量名直接"调用,也可以通过类的对象调用。

二:实例变量

	实例变量相当于该类的属性,需要 "new对象 "才能被调用。而且该变量不常驻内存,当这个类不再被使用时会java回收机制所释放。

三:静态变量与实例变量的区别

  1. 存储区域不同:静态变量存储在静态存储区域,实例变量存储在堆中,会被释放。
  2. 静态变量与类相关,实例变量与对象相关。
  3. 生命周期不同,静态变量在类启动时就分配指定内存;实例变量在被对象调用后才分配内存,调用结束时内存释放。
### 介绍 - **实例变量**:实例变量是指不用 `static` 修饰的变量,属于类的具体对象。类实例化一个对象时,堆内存会开辟对应这个对象的空间,实例变量存在于该空间中,不同对象的实例变量相互独立,对象之间对实例变量的操作互不影响[^1]。 - **静态变量**:静态变量是用 `static` 修饰的变量,属于类级别,不单属于某个具体对象,可以理解为静态变量是公共存储单元中的。静态变量的作用范围是整个类,意味着它可以通过类名直接访问,而不需要创建类的实例,并且可以被类的所有实例访问修改[^1][^2]。 ### 区别 - **内存分配**:静态变量属于类,在类加载时就会被分配内存,且只有一份内存空间;实例变量属于具体对象,在对象创建时才会分配内存,每个对象都有自己独立的实例变量副本[^1]。 - **访问方式**:静态变量可以通过类名直接访问,也可以通过对象访问;实例变量只能通过对象来访问[^2]。 - **生命周期**:静态变量的生命周期从类加载开始,到类卸载结束;实例变量的生命周期从对象创建开始,到对象被垃圾回收结束。 - **操作影响**:一个对象改变了静态变量的值,其他对象中的该静态变量也会随之改变;而对象对实例变量的操作只影响自身的实例变量[^1]。 ### 使用方法 #### 实例变量的使用 ```java class Student { // 实例变量 String name; int age; // 构造方法 public Student(String name, int age) { this.name = name; this.age = age; } // 实例方法 public void displayInfo() { System.out.println("Name: " + name + ", Age: " + age); } } public class Main { public static void main(String[] args) { // 创建对象 Student student1 = new Student("Alice", 20); Student student2 = new Student("Bob", 22); // 访问实例变量 student1.displayInfo(); student2.displayInfo(); } } ``` #### 静态变量的使用 ```java class Counter { // 静态变量 static int count = 0; // 构造方法 public Counter() { count++; } // 静态方法 public static void printCount() { System.out.println("Total objects created: " + count); } } public class Main { public static void main(String[] args) { // 创建对象 Counter c1 = new Counter(); Counter c2 = new Counter(); // 通过类名访问静态变量静态方法 Counter.printCount(); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值