Java基础笔记23——3种变量

Java中主要有3种类型的变量:

 

1.静态变量:在类中声明为static的属性 --老大,无私贡献
属于类级别的变量,在类被加载的时候即保存在内存,只要类存在,静态变量就存在,属于共享变量


2.实例变量:即类的属性,也是全局变量 --老二,相对自私,所有东西自己专有
属于对象级别的变量,在new对象的时候存在内存当中,只要对象存在,实例变量就存在,属于对象专有的变量


3.局部变量:定义在方法体中的变量;或是方法的形参 --老三,一直跟着方法跑,方法被调用,老三在;方法调用完成,老三不见了
当方法被调用时,局部变量即保存在内存中;当方法执行结束,局部变量生命周期结束

 

4.栈和堆:栈stack:栈的存放速度比堆快,效率高。在栈内保存基本数据类型的局部变量和对象的引用值
堆heap:堆可以保存那些对空间要求较大的变量。如对象的属性和数组的元素

 

5.匿名对象:不定义对象的句柄,直接调用对象的方法,适用于对象只需要使用一次的场景
new 类名().方法名()


6.对象何时变成垃圾
(1)对象的引用被赋值为null,例如:Person p = new Person(); p = null;
(2)一次性使用的匿名对象:例如,new Person().saidHello();
(3)超出生命周期的
例如:
for(int i = 0; i < 100; i++){
Person p = new Person();
}

 

7.例子:

package com.lqh.chapter01;

public class _21variables {
    /*
         静态变量:在类中声明为static的属性
                   属于类级别的变量,在类被加载的时候即保存在内存,只要类存在,静态变量就存在,属于共享变量
     */
    static String identity = "human";

    /*
        实例变量:即类的属性,也是全局变量
                  属于对象级别的变量,在new对象的时候存在内存当中,只要对象存在,实例变量就存在,属于对象专有的变量
     */
    String name;
    
    /*局部变量:定义在方法中的变量,或是方法的形参
                  当方法被调用时,局部变量即保存在内存中;当方法执行结束,局部变量生命周期结束
    */
    public void setName(String name) {
        //name为局部变量
        this.name = name;
    }
    
    public static void main(String[] args) {
        _21variables tom = new _21variables();
        tom.name = "汤姆";
        tom.setName("superTom");
        tom.identity = "superHuman";
        System.out.println(tom.name);
        System.out.println(tom.identity);
        
        
        _21variables john = new _21variables();
        john.name = "约翰";
        System.out.println(john.name);
        System.out.println(john.identity);//tom修改了identity的值,john再获取到的值是修改后的值
        
        //匿名对象
        new _21variables().setName("匿名对象");
    }
}

输出结果为:

superTom
superHuman
约翰
superHuman

posted @ 2021-09-14 22:29  `青红造了个白`  阅读(135)  评论(0编辑  收藏  举报