参考价值:未完善,不建议参考、等待重置(遥遥无期)


解决标题问题需要以下知识点:

  1. 栈和堆
  2. 基础数据类型和引用数据类型
  3. 局部变量
  4. 数组和类的声明和初始化解析

知识点解释:

  1. 栈和堆

    栈和堆是内存中的两个存储结构,相互之间通过地址进行联系。

    • 栈:

      用于存储局部变量,声明变量并初始化后没有默认初始化值,赋值后才能使用,方法结束后会被垃圾回收机制清理掉(不会立刻清理)。

      ps:通常说的栈是指虚拟机的栈

    • 堆:

      用于存储对象实例数组的元素也就是new出来的东西,通过地址和栈里的局部变量相关联,如果关联消失会被垃圾回收机制清理掉(不会立刻清理)。

      堆里的数据具有默认初始化值。

  2. 局部变量:

    在方法(包括main方法)和参数列表里声明的变量都是局部变量。

  3. 基础数据类型和引用数据类型:

    1. 基础数据类型:

      整型、char型、浮点型、布尔型都属于基础数据类型

    2. 引用数据类型:

      只能用来存储地址或null,一般用来和基础数据类型产生联系。

  4. 数组的声明和初始化解析:

  5. 数组的类型:

    数组的类型是引用类型

    数组的元素是基本数据类型或者引用数据类型(类的数组)。

  6. 声明并初始化一个数组在内存中的实现:

    1
    int[] num = new int[3];

  7. 类的声明和初始化解析:

    类的对象是引用类型存储在栈里,是局部变量,与类的实例相关联

    类的声明和初始化:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class Text{
    public static void main(String[] args){
    Worker xiaoming = new Worker();
    }
    }
    class Worker{
    //属性:
    String name;
    int age;
    boolean isMale;
    }

    类的声明(创建一个对象):

    1
    Work xiaoming;

    对象的初始化:

    1
    xiaoming = new Worker();

案例分析:

1
2
3
4
5
6
7
8
9
10
11
12
13
class Text{
public static void main(String[] args){
String str = "Yes";
Method(str);
}
public static void Method(String e){
String m = "Yes";
if(e == m)
System.out.println("true");
else
System.out.println("false");
}
}