类变量,成员变量,局部变量

类变量,成员变量,局部变量


每博一文案

很多时候觉得自己很受伤,其实是心里越放越大的结果,一点点小事都让你怀疑人生,这不是敏感,而是太过脆弱。

人与人之间的际遇大同小异,但是却是活出全然不同的人生,就是因为心里容纳了不同的东西。

打开新闻接受的是负能量,你表现出来的也会是负能量而敞开心扉,接受阳光,那么表现出来的亦是更多的快乐。

人心意识。

房间需要时时清扫,与其积压很多的垃圾,不如腾出地方给自己留有更多的阳光。

—————— 一禅心灵庙语


类变量,成员变量,局部变量

  • 由于变量声明的位置的不同,可以将变量分为成员变量和局部变量,以及类变量 。成员变量位于类中方法之外,即属性,而被 static 关键字修饰的属性 称为 “类变量” 又称为“静态变量” ** 。局部变量位于类中,方法之内的或者代码块中。成员变量和局部变量,以及类变量有如下6** 个区别:
    1. 声明位置不同
    2. 作用范围不同(作用域)
    3. 是否有默认值
    4. 是否需要初始化
    5. 在内存中的位置
    6. 作用时间不同(生命周期)

声明位置的不同

  • 成员变量:类中,方法之外
  • 类变量:类中,方法之外
  • 局部变量:类中,方法之内

class Member {
    int iNum;        // 成员变量
    static int sNum; // 类变量又名“静态变量”

    public void jNum() {
        int jNum;    // 局部变量
    }
    
}
public class Blog01 {
    public static void main(String[] args) {
        Member member = new Member();   // 产生对象,实例化对象
    }
}

作用范围不同 (作用域)

  • 成员变量:整个类中
  • 类变量:整个类中
  • 局部变量:当前的方法/当前的代码块


class Member {
    int iNum;        // 成员变量
    static int sNum; // 类变量又名“静态变量”

    public void jNum() {
        int jNum;    // 局部变量
    }

    public void visit() {
        System.out.println(iNum); // 访问成员变量,没有问题
        System.out.println(sNum); // 访问类变量,没有问题
        System.out.println(jNum); // 访问局部变量,不可以报错,作用域
    }

}
public class Blog01 {
    public static void main(String[] args) {
        Member member = new Member();   // 产生对象,实例化对象
        member.visit();
    }
}

  • 结果:

在这里插入图片描述


  • 图示:

在这里插入图片描述


是否有默认值:

  • 成员变量:如果属性没有赋值,有默认值初始值
  • 类变量:如果属性没有赋值,有默认值初始值
  • 局部变量:无默认值


class Member {
    int iNum;        // 成员变量
    static int sNum; // 类变量又名“静态变量”

    public void jNum() {
        int jNum;    // 局部变量
    }

    public void visit() {
        System.out.println(iNum); // 访问成员变量
        System.out.println(sNum); // 访问类变量
//        System.out.println(jNum); // 访问局部变量,不可以报错,作用域
        // 这里因为局部变量没有初始化无法使用的。
    }

}
public class Blog01 {
    public static void main(String[] args) {
        Member member = new Member();   // 产生对象,实例化对象
        member.visit();
    }
}


  • 结果:

在这里插入图片描述


是否需要初始化:

  • 成员变量:不需要初始化,有默认初始值
  • 类变量:不需要初始化,有默认初始值
  • 局部变量:必须进行初始化,否则报错


public class Blog01 {
    public static void main(String[] args) {
        int num;
        System.out.println(num);
        /*局部变量,未初始化值,不可以使用
        * 强行使用,报错*/
    }
}

  • 结果:

在这里插入图片描述


作用时间不同

  • 成员变量:从对象的创建阶段开始,到对象的结束
  • 类变量:和类同时加载到创建,到内存当中,到类的结束
  • 局部变量:调用方法或者代码块时创建局部变量,从方法或者代码块执行结束,局部变量就会释放自身空间
  • 注意: 创建,开辟空间不是目的,存放数据才是目的,因为存放数据需要有空间可以存放,所以才开辟空间的


class Member {
    int iNum;        // 成员变量
    static int sNum; // 类变量又名“静态变量”

    public void jNum() {
        int jNum;    // 局部变量
    }

    public void visit() {
        int jNum = 10; // 这里我们创建一个同名的 jNum 局部变量
        /*发现并没有发生,定义冲突,间接说明第一次创建的局部变量,被释放了*/
        System.out.println(iNum); // 访问成员变量
        System.out.println(sNum); // 访问类变量
        System.out.println(jNum);
    }

}
public class Blog01 {
    public static void main(String[] args) {
        Member member = new Member();   // 产生对象,实例化对象
        member.visit();
    }
}

  • 结果:

在这里插入图片描述


在内存中的位置

  • 成员变量:在堆区中存放该数据
  • 类变量: 在方法区中存放,被static修饰的属性,class类同样也是在方法区中存放
  • 局部变量:在栈区中存放该数据

最后:

限于自身水平,其中存在的错误,希望大家给予指教,韩信点兵——多多益善,谢谢大家!后会有期,江湖再见!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值