面向对象_引用类型_内存分析_垃圾回收JAVA028-033
2015-10-15 22:42
656 查看
来源:http://www.bjsxt.com/
1、S01E028_01面向对象概述
2、面向对象编程(OOP)的本质
——以类的方式组织代码,以对象的方式组织(封装)数据
对象:是具体的事物
类:是对对象的抽象(抽象 抽出象的部分)
先有具体的对象,然后抽象各个对象之间象的部分,归纳出类,通过类再认识其它对象
3、引用类型
JAVA中除基本类型之外的变量类型都称之为引用类型;JAVA中的对象是通过引用对其操作的。
4、JAVA中方法的参数传递是:值传递!
5、内存分析
栈(自动分配连续的空间,后进先出):
——存放:局部变量
堆(不连续的空间):
——存放:new出来的对象
方法区(堆内的区域,也是堆):
——存放:类的信息(代码)、static变量、常量池(字符串常量)等
6、S01E031_01程序执行过程的内存分析
7、S01E032_01程序执行过程的内存分析
8、S01E033_01垃圾回收机制
1、S01E028_01面向对象概述
2、面向对象编程(OOP)的本质
——以类的方式组织代码,以对象的方式组织(封装)数据
对象:是具体的事物
类:是对对象的抽象(抽象 抽出象的部分)
先有具体的对象,然后抽象各个对象之间象的部分,归纳出类,通过类再认识其它对象
3、引用类型
JAVA中除基本类型之外的变量类型都称之为引用类型;JAVA中的对象是通过引用对其操作的。
4、JAVA中方法的参数传递是:值传递!
5、内存分析
栈(自动分配连续的空间,后进先出):
——存放:局部变量
堆(不连续的空间):
——存放:new出来的对象
方法区(堆内的区域,也是堆):
——存放:类的信息(代码)、static变量、常量池(字符串常量)等
6、S01E031_01程序执行过程的内存分析
public static void main(String[] args){ //Student:JVM在方法区找类的信息(class文件),没有就在类路径(class.path)找。 //找到再加载(JVM的类加载器CLASS LOADER)。加载后,在方法区就有Student类的信息。 Student s1 = new Student(); s1.name = "高琪"; //栈中开一个栈帧(Stack Frame),在栈帧中执行一个方法,执行完后,栈帧就不存在了 s1.study(); s1.sayHello(马士兵); //Student类已加载过了 Student s2 = new Student(); //基本数据类型直接赋值,18直接赋值给age,而不是引用地址 s2.age = 18; s2.name = "老高"; }
7、S01E032_01程序执行过程的内存分析
//java Test2//首先加载Test2类 public class Test2{ public static void main(String[] args){ Student s1 = new Student(); s1.name = "高琪"//在方法区中的常量池,"高琪"跟Student类中的是同一个(共享) s1.age = 18; Computer c = new Computer(); c.brand = "联想"; c.cpuSpeed = 100; s1.computer = c; System.out.println(s1.computer.brand); } }
8、S01E033_01垃圾回收机制
相关文章推荐
- Ubuntu 安装eclipse
- Java的三大特性
- java核心技术之IO流(三)FileReader和FileWriter
- JPanel 中的 KeyListener 无效
- org.osgi.framework.BundleException: Exception in org.eclipse.core.resources.ResourcesPlugin.start()
- eclipse 修改控制台 编码
- 一个大而全的Java通用开发框架
- 【cl】java变量
- 遍历磁盘上的文件夹—以Java语言为例
- JAVA内存分区
- Java笔记--常用类
- java核心技术之IO流(二)FileInputStream和FileOutputStream
- spring连接数据库
- Java中的split和join
- Java 序列化和反序列化
- Java值传递还是引用传递?
- Java IO 概述
- java的Split函数如何区分多个空格
- 【笔记】Java解惑 表达式之谜
- java小数位-DecimalFormat(转)