1.4(java学习笔记) 面向对象内存分析
首先介绍几个概念
栈:
1.栈是方法执行的内存模型,每调用一个方法都会创建一个栈帧。
2.jvm为每个线程创建一个栈,存放方法相关信息,栈属于线程私有不共享。
3.栈由系统自动分配,是连续的内存空间,速度快。
4.栈的特点是先进后出。
堆:
1.堆用于存放创建好的对象。
2.jvm只有一个堆被所有线程共享
3.堆是不连续的内存空间,但由于不连续分配灵活。
静态区:
1.静态区只有一个被所有线程共享。
2.静态区其实也是堆,用来存放常量,类等不变的信息。
以下列代码为例:
有些部分忽略了,只是简述下过程,理解错误之处还望指出。
1 public class Student { //首先构造了一个学生类,里面包含一些基本信息(姓名,学生所使用电脑信息)
2 String name;
3 Computer user_computer;
4
5 void study(){ //还有学生学习(学习的方法中又包含一个电脑的对象)和玩耍的方法
6 System.out.println("我在学习" + user_computer.brand);
7 }
8 void play(){
9 System.out.println("我在玩耍");
10 }
11
12 public static void main(String[] args){
13 Student stu_huangChangfan = new Student();//首先根据学生类这个模板创建一个具体的对象
//huangChangfan这个对象中包含姓名,使用电脑品牌基本属性
14 Computer comput = new Computer(); //以及玩耍和学习的方法(学习方法中又包含一个电脑对象)
//这时需要创建一个电脑对象,并对其赋值。
15 comput.brand = "联想"; //对新建的对象赋值
16 stu_huangChangfan.user_computer = comput; //电脑对象有了具体的信息后赋给学生对象中的电脑对象。
17 stu_huangChangfan.study(); //调用学生对象中方法。
18 stu_huangChangfan.play();
19 }
20 }
21
22 class Computer{ //电脑类,其中包含电脑品牌等信息。
23 String brand;
24 }
下面用一个自己做的小视频结合代码理解。
1.4(java学习笔记) 面向对象内存分析的更多相关文章
- 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用
垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...
- 0013 Java学习笔记-面向对象-static、静态变量、静态方法、静态块、单例类
static可以修饰哪些成员 成员变量---可以修饰 构造方法---不可以 方法---可以修饰 初始化块---可以修饰 内部类(包括接口.枚举)---可以修饰 总的来说:静态成员不能访问非静态成员 静 ...
- 0028 Java学习笔记-面向对象-Lambda表达式
匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...
- 0025 Java学习笔记-面向对象-final修饰符、不可变类
final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...
- 程序设计基础·Java学习笔记·面向对象(下)
Java程序设计基础之面向对象(下) (补充了上的一些遗漏的知识,同时加入了自己的笔记的ヾ(•ω•`)o) (至于为什么分P,啊大概是为了自己查笔记方便(?)应该是("` 3′") ...
- 程序设计基础·Java学习笔记·面向对象(上)
Java程序设计基础之面向对象(上) (自适应学习进度而进行记录的笔记,希望有一些小小的用处吧(^∀^●)ノシ) (新人上路,望多指教,如有错误,望指正,万分感谢(o゚v゚)ノ) 目录 一.面向对象 ...
- 0021 Java学习笔记-面向对象-包、构造器
封装 面向对象的三大特征: 封装 继承 多态 封装: 将对象的状态信息隐藏,不允许外部程序直接访问 通过该类提供的方法来访问和操作 有啥用: 隐藏类的实现细节 在方法中加入控制逻辑,限制对成员变量的不 ...
- 0029 Java学习笔记-面向对象-枚举类
可以创建几个对象? n多个:大部分的类,都可以随意创建对象,只要内存不爆掉 1个:比如单例类 有限的几个:采用单例类的设计思路,可以只允许创建少数的几个特定的对象:还有就是枚举类. 创建少数几个对象, ...
- 0019 Java学习笔记-面向对象-方法
方法属于谁 方法要么属于类,要么属于对象 static修饰的方法属于类 没有static修饰的方法属于对象 方法只能定义在类里面,不能独立定义 不能独立的执行方法,要么通过类调用,要么通过方法调用 一 ...
- 0018 Java学习笔记-面向对象-类的基本要素
类与对象 大街上一个个的人,就是一个个对象 类是对一群对象的抽象,比如人都有性别.年龄.姓名,都会吃饭.睡觉等.姓名性别可以抽象为变量,吃饭睡觉可以抽象为方法,像下面一样定义个类来形容人 public ...
随机推荐
- 安卓和html的互相调用
1.写html和安卓布局 <Button android:id="@+id/btn" android:layout_width="wrap_content" ...
- WebKit阅读起步
转摘自:http://my.oschina.net/myemptybottle/blog/42683 部分转摘,全文请查看原文! 我第一次看到WebKit代码中did,will前缀有点困惑,看多了才熟 ...
- jsp分页完善版
明天要考网络工程师了,而且这两天校运会,把那个分页的完善了下,明天考试,祈祷吧,我根本都没看书啊,所以只能去长见识了.100大洋啊,下个学期我想考考证了,不然以后出去麻烦了.呵呵,不多说还是说说自己对 ...
- Visual Studio Code 配置C/C++环境
0. 前言 VS Code 是微软发布一款跨平台的源代码编辑器,其拥有强大的功能和丰富的扩展,使之能适合编写许多语言. 本文面向初学者(但不是纯小白),分享一点我配置C/C++的经验. 本文所有内容均 ...
- MongoDB 聚合(管道与表达式)
MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果.有点类似sql语句中的 count(*). aggregate() 方法 MongoDB中 ...
- linux内核分析笔记----中断和中断处理程序【转】
转自:http://www.cnblogs.com/hanyan225/archive/2011/07/17/2108609.html 中断还是中断,我讲了很多次的中断了,今天还是要讲中断,为啥呢?因 ...
- Linux内核中的GPIO系统之(3):pin controller driver代码分析--devm_kzalloc使用【转】
转自:http://www.wowotech.net/linux_kenrel/pin-controller-driver.html 一.前言 对于一个嵌入式软件工程师,我们的软件模块经常和硬件打交道 ...
- Shell 脚本实现TCP/UDP协议通讯
Shell 脚本实现TCP/UDP协议通讯 http://www.cnblogs.com/occult/archive/2012/12/25/2832183.html
- mapper配置文件中的动态SQL
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "- ...
- 解决Eclipse明明有错误,却不能显示错误红叉的方法,eclipse不能显示错误
出现这情况的原因是因为java文件的错误太多,eclipse停止编译.解决方法如下 1.勾选自动编译功能 2.clean工程 3.取消“abort build when build path erro ...