• JVM之堆内存(创建对象)


    JVM中,创建对象是在堆内存中。

    什么是实例变量?

      对象又被称为实例:实例变量实际上就是对象级别的变量。比如:

    public class 明星类{
        double height;
    }
    //身高这个属性所有的明星对象都有,但是每一个对象都有”自己的身高值“、
    //假设创建10个明星对象,height变量应该有10份
    //所以这种变量被称为对象级别的变量,属于实例变量
    //实例变量不可以直接被类调用,必须通过new对象
      

    看两个代码:

    /*Student.java
    * Student 既是一个类名,同时又是一个"类型名",属于引用数据类型
    * */
    
    /*
     * 共同特征
     * 学号:采用int类型
     * 姓名:采用String类型
     * 年龄:采用int类型
     * 性别:采用char或者Boolean类型
     * 住址:采用String类型
     * 属性(状态描述):在java程序中以"成员变量"的形式存在
     * 对于成员变量来说,应该是一个对象有一份内存空间
     *   1.张三有张三的学号
     *   2.李四有李四的学号
     *   张三和李四的学号不一样,所以应该有两份不同的内存空间
     *对象又被称为实例:实例变量实际上就是对象级别的变量
     * */
    
    public class Student {// 这个程序编译之后,生成Student.class字节码文件。
    
      //学号,姓名,年龄,性别,住址都是实例变量
        //学号,
        int no;
        //姓名
        String name;
        //年龄
        int age;
        //性别
        boolean sex;
        //住址
        String addr;
    
    }
    /*StudentTest.java
    对象的创建和使用
    *变量必须先声明,再赋值
    * 注意:成员变量在没有手动赋值的情况下,系统赋值默认值
    * ----------------------------------------------
    * byte          0
    * short         0
    * int           0
    * long          0L
    * float         0.0F
    * double        0.0
    * boolean       false
    * char          u0000
    * 引用数据类型    null
    *
    * */
    public class StudentTest{
        public static void main(String[] args) {
            //创建学生对象1,先执行右边new Student(),然后通过等号把结果赋值给s1
            //s1属于局部变量吗?  yes
         //s1叫做引用
    //局部变量存储在栈内存中(栈主要存储局部变量) Student s1 = new Student();
         //怎么访问实例变量: 语法:引用.实例变量名,也可以赋值,修改值,可以多次改
         System.out.println(s1.no);
         s1.no = 110;
         s1.age = 20;       
    //创建学生对象2 //s2属于局部变量吗? yes。都属于main方法中的局部变量
         //s2叫做引用,限制性右边new Student(),然后通过等号吧结果赋值给s2
    Student s2 = new Student(); } }

    JVM中,堆内存的说明图:

     对象和引用的区别:

    对象是通过new 出来的,在堆内存中存储

    引用是:

  • 相关阅读:
    括号配对问题 (栈的应用)
    poj 1363 火车进站 (栈的应用)
    算法训练题
    进制-Adding Two Negabinary Numbers
    翻转-Flip Columns For Maximum Number of Equal Rows
    图论-完全二叉树判定-Check Completeness of a Binary Tree
    动态规划-Maximum Subarray-Maximum Sum Circular Subarray
    贪心-最大相容区间-Maximum Number of Events That Can Be Attended
    动态规划-LCS-Uncrossed Lines
    数学-绝对值-Reverse Subarray To Maximize Array Value
  • 原文地址:https://www.cnblogs.com/peiminer/p/13601822.html
Copyright © 2020-2023  润新知