zoukankan      html  css  js  c++  java
  • Java面向对象编程 -1.4

    对象内存分析

    对象实例化操作初步分析
    Java之中类属于引用数据类型,引用数据类型最大的困难之处在于要进行内存的管理,同时在进行操作的时候也会有内存关系的变化。
    所以本次针对于之前的程序的内存关系进行一些简单的分析。

    class Person{
    	int age;
    	String name;
    
    	public  void intorduce() {
    		System.out.println("age= "+age+" name= "+name);
    	}
    }
    public class xxx {
    	public static void main(String[] args) {
    		Person per = new Person();
    		per.age=17;
    		per.name="sakura";
    		per.intorduce();
    	}
    }
    

    如果要进行内存分析,那么首先给出两块最为常用的内存空间:

    • 堆内存:保存的是对象的具体信息,在程序之中堆内存空间的开辟是通过new完成的;
    • 栈内存:保存的是一块堆内存的地址,即:通过地址找到堆内存,而后找到对象内容,但是为了分析简化起见 将简单的理解为:对象的名称保存在了栈内存之中。
    Person per = new Person();
    

    另一种实例化

    Person per = null;
    per = new Person();
    

    需要特别引起注意的是,所有的对象在调用类中的属性和方法时必须要实例化完成后才可以执行。
    错误的代码

    Person per = null;
    per.age=17;
    per.name="sakura";
    per.intorduce();
    

    代码只是声明了对象,但是并没有为对象进行实例化,所以此时无法调用。
    Exception in thread "main" java.lang.NullPointerException

    而此时程序出现的NullPointerException(空指向异常)就是在没有在堆内存开辟后时所产生的问题,并且只有引用数据类型存在此问题
  • 相关阅读:
    排序前后console.log输出无变化
    Cause: java.sql.SQLException: ORA-00904: "ID": 标识符无效
    无法解析Model中的实体类
    generatorConfig.xml
    cannot load oci dll [87/193]:
    jsp页面在 移动端 自适应,chrome浏览器没问题,可是safari浏览器有问题的解决方法
    【DP专题】——洛谷P1220关路灯
    学习笔记:查最大内存
    c++ try throw catch
    Dijkstra算法
  • 原文地址:https://www.cnblogs.com/sakura579/p/12318849.html
Copyright © 2011-2022 走看看