美文网首页
java类中的静态变量是否存在每个生成对象的内存里么?

java类中的静态变量是否存在每个生成对象的内存里么?

作者: c0ny1 | 来源:发表于2017-12-24 22:39 被阅读0次
实验代码
class User{
    private String a ="a";
    private static String b = "b";

    public static void main(String[] args){
        User user1 = new User();
        user1.b = "a1";
        System.out.println(User.b.toString());
        User user2 = new User();
        user2.b = "a2";
        System.out.println(User.b.toString());
        User user3 = new User();
        user3.b = "a3";
        System.out.println(User.b.toString());
        User.b = "a4";
        System.out.println(user1.b.toString());
        System.out.println(user2.b.toString());
        System.out.println(user3.b.toString());
        System.out.println(User.b.toString());
    }
}

调试论证法:

你可以看到user1,user2,user3在调式窗口中可以看到a变量,没有看到b变量。说明a在每个对象中,b不在。

你可以看到user1.a,user2.a,user3.a是不一样的,user1.b,user2.b,user3.b,User.b的id都是一样的。说明每个对象的a变量都是单独的,b变量是所有对象共享的。

输出验证法:

通过输出我们就知道对象名.静态变量名类名.静态变量名都可以直接访问。最后输出的值一样,说明它们指向了同一个对象。

总结

(1) 普通变量都是存在于对象的内存块中。
(2)java当中静态变量单独在一个内存区域,而不是在每个实例化对象当中。每个实例化后的对象都共享这个变量。可以通过对象名.静态变量名类名.静态变量名两种方式进行访问。

注意:

静态变量是private,public,protec其实都是可以直接使用对象名.静态变量名类名.静态变量名直接访问。

我的博客地址: http://gv7.me

相关文章

  • java类中的静态变量是否存在每个生成对象的内存里么?

    实验代码 调试论证法: 你可以看到user1,user2,user3在调式窗口中可以看到a变量,没有看到b变量。说...

  • Java没有全局变量

    成员变量(类中 属于对象的 只能对象调用 实例变量 堆内存)、 静态变量(类中前面加static 属于类...

  • java中的私有变量是否可以继承

    java中的私有变量是否可以继承 Java 父类中权限为private的私有变量,子类对象继承后,在其内存中其实也...

  • JVM内存模型2--类加载与方法区

    参考:Java 类中各成分加载顺序 和 内存中的存放位置 引用: 加载类文件时,除了非静态成员变量(对象的特有属性...

  • 静态变量和成员变量的区别

    A:所属不同 静态变量:属于类,类变量 成员变量:属于对象,对象变量,实例变量 B:内存位置不同 静态变量:方法区...

  • java内存模型

    引用: Java内存模型 java内存模型线程栈:本地变量,堆:对象,对象成员变量,静态成员变量 如果两个线程同时...

  • C++---CHAPTER 12 : Dynamic Memor

    静态内存、栈内存、动态内存 静态内存:保存局部static对象;类static对象、已经定义在任何函数之外的变量。...

  • Java中对象的初始化生成过程

    Java是面向对象的一种语言,在Java对象生成的过程,涉及子类和父类的加载、静态成员变量的初始化、子类和父类对象...

  • 【Java梳理】变量、基本数据类型

    Java是面对对象的语言,它的变量可以是局部变量、实例变量、静态变量等。实例变量是类的属性,在类实例化后保存在对象...

  • Java类、抽象类、接口的异同

    类 Java是面向对象的编程语言,类是对象的结构框架,类中定义了对象的成员变量和方法,此外还可以有类本身的静态变量...

网友评论

      本文标题:java类中的静态变量是否存在每个生成对象的内存里么?

      本文链接:https://www.haomeiwen.com/subject/jnhkgxtx.html