- 成员变量:类中的方法外的变量 就是成员变量
- 局部变量:方法中的变量 局部变量
区别 | 成员变量 | 局部变量 |
类中位置不同 | 类中方法外 | 类中方法里 |
内存中 位值 | 堆内存 | 栈内存 |
生命周期不同 | 随着对象存在而存在,随着对象消失而消失 | 随方法调用存在而存在,随方法结束消失而消失 |
初始化值不同 | 有默认的初始值 | 没有默认的初始化值,必须先定义赋值后使用 |
Student.java如下:
- package com.面向对象;
-
- public class Student {
- String name;
- int age;
-
- public void work() {
- System.out.println("开始敲代码...");
- }
-
-
- public void work2() {
- // public void work2(int i){
- // 在方法中传递的参数(形参)也属于该方法里面的局部变量
- Student s = new Student(); // 单独的一个线程GC线程 在堆内存中 不可用的对象
- // new Student存放在堆内存中,s存放在栈空间中,直接引用到堆内存地址
- /**
- * 局部变量int i/age 在什么时候被销毁呢?work2方法执行结束之后
- * GC 垃圾回收
- * Student s ------引用到堆内存 new Studnet对象的内存地址
- */
- int i = 20;
- int age = 30;
- // 局部变量 变量名称 在同一个方法中 不允许 存在 多个相同的变量名称
- int z;
- // System.out.println(z); //局部变量 使用前 必须 先赋值
- System.out.println(this.age); // 成员变量 有默认初始值
- this.age = age; //在work2方法中 将局部变量age 赋值给 成员变量的age(在方法内调用成员变量使用this)
- }
- }