英文购物网站模板下载,做一个app需要学什么,网站开发好学,wordpress只能访问主页#xff08;本章看不懂多读几遍#xff0c;弄懂后再往下章看#xff09;
面向对象学习3. 对象的创建分析
Java Memory Structure: 如上图所示#xff1a;
主要分为Stack和Heap Memory
其中Stack主要放method包括main 程序从main开始所以main最先进入Stack#xff0c;等…本章看不懂多读几遍弄懂后再往下章看
面向对象学习3. 对象的创建分析
Java Memory Structure: 如上图所示
主要分为Stack和Heap Memory
其中Stack主要放method包括main 程序从main开始所以main最先进入Stack等所有其他需要调用的程序和variable全部调用结束main作为收尾最后从stack出来。
而Heap memory又分为Heap Area和Method Area 建立object需要按照模板class的样子来class模板的结构在Method area里面
实际建立的object放在Heap area object实际定义用到的自定义String内容放在Method Area里面的String Pool
参考资料 https://www.guru99.com/java-stack-heap.html https://www.baeldung.com/java-stack-heap https://www.geeksforgeeks.org/java-memory-management/?reflbp https://www.javatpoint.com/memory-management-in-java
创建对象object时候内存分析
Application的main()在栈最底下随着程序执行一层一层往上跑之后执行结束Application就到了栈最上面执行结束。
每次new一个对象object就套用Heap memory里面的method area方法区class模板按照class的样子在heap area里面新建一个object(比如新建一个doggy1新建一个doggy2)。
举例
public class Dog{String name;int age;public void run(){System.out.println(running);}
}
编写测试代码
public class Test{public static void main(String[] args){Dog doggy1 new Dog();doggy1.name Ahuang;doggy1.age 1;doggy1.run;Dog doggy2 new Dog();doggy2.name AHui;doggy2.age 5;doggy2.run;}public static int add(int a, int b){return ab;}} 栈stack主要用于存储main()引用自定义的变量名等堆heap area存储实际新建的object对象执行每个object里面的run步骤时候会去调用method area里面的具体run结构方法区method area存储class类定义结构的细节信息静态方法区static area和class类一起加载可以被object对象直接使用举例 new object时候JVM具体分析- 程序在stack跑这里也是main的地盘 发现需要new一个object 类型为Dog具体object名叫做doggy1,它会在stack新建一层准备存放地址引用变量ref#地址是从下一步送过来的#比如地址为0x0001
- 需要new一个新的Dog时候先去class里面找到Dog class的结构在heap area具体生成一个按照这个class结构构造的Dog并给出该Dog object的具体地址链接去stack比如地址为0x0001
- 或许在heap area内运行自建的object时发现它需要运行一些具体的method比如run()而如何run()是包含在Dog class中的,这时候就需要链接method area因为Dog class的原始具体定义在那存放着其中当然也包括如何run()。
- 或许在heap area内运行自建的object时发现它需要运行一些具体的名称比如doggy1的名字叫做Ahuang而“Ahuang”这个String是存放在String Pool(可以在Method area找到它)
- 特殊的static area静态方法区:比如主程序里的一个method:public static int add()因为加了static这种是在method area区的static area和其他class结构一起加载的之后能够被heap area里面的object快速的直接调用。思考 什么是Heap space and Permgen (or called Permanent Generation)
总结
class类与object对象
class类是一个模板比较抽象object对象是一个按照class模样依葫芦画瓢的自建实例
方法method
method定义一个仅在被召唤时候才动弹的代码块。可以给它喂data或parameters。有专职功能的method叫做functions。调用method在程序中被创建调用分为static和non-static 3 ref引用链接 引用类型基本类型8种 object通过stack存储地址地址指向heap area 新建的new object 对象是通过引用来操作的栈stack—堆heap area
属性class里面的字段Field 成员变量提示class里面定义的变量及其初始数值比如Null 默认的初始化值用户写系统会默认给的值 数字0 0.0 charu0000 boolean: false 引用的自定义字符串等null 赋值的结构修饰符 属性类型 属性名属性值(比如int a 3)object对象的创建和使用
必须使用new关键字创造对象 和 constrcutor构造器如果用户没写constructor系统会偷偷帮你创建一个在反编译的.class文件中可以清楚地看到 Person x new Person();object对象的field属性写法 x.nameobject对象的method写法 x.run()
类class里面只会有下面两个部分
静态的属性static field 属性动态的行为non-static method 方法