JAVA菜鸟入门篇 - 类、面向对象思想和内存分析(九)
2015-01-06 09:45
549 查看
1、对象和类的概念
面向对象编程(OOP Oriented Object Program)的本质:
- 以类的方式组织代码,以对象的方式组织(封装)数据
面向对象思维:OOA,OOD
从OOD角度来说,是先有对象后抽象出类。
对象:是具体的事物
类:是对对象的抽象(抽象 抽出象的部分)
先对具体的对象,然后抽象各个对象之间象的部分,归纳出类通过类再认识其他对象。
Q:天使类如何归纳?
分析:通过具体对象抽象出类
抽象出天使类的特征,分析问题:
从抽象万事万物中抽出象的部分,具体问题具体分析。
对象和类的总结
对象和类的关系:特殊到一般,具体到抽象
类:我们叫做class
对象:我们叫做Object,instance(实例)。以后我们说某个类的对象,某个类的实例。是一样的概念。
类可以看成一类对象的模板,对象可以看成该类的一个具体实例。
类是用于描述同一类型的 一个抽象的概念,类中定义了这一类对象所应具有的静态和动态属性。
对象是java程序的核心,在Java程序中“万事万物皆对象”。
JDK提供了很多类供编程人员使用,编程人员也可以定义自己的类。
Java语言中除基本类型之外的变量类型都称为引用类型
Java中的对象是通过引用reference对其操作的。
2、类的属性
属性 field,或者叫成员变量
属性用于定义该类或该类对象包含的数据或者静态属性
属性作用范围是整个类体
在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。
属性定义格式:
变量的作用域:
3、类的方法
面向对象中,整个程序的基本单位是类,方法是从属于类的。
方法中定义的局部变量,在使用时必须初始化,系统不会默认初始化局部变量!
方法定义格式:
JAVA中方法参数传递的是:值传递!
类的方法定义实例:
4、内存分析(用Office自带的OneNote软件演示)
4.1 栈(自动分配连续的空间,后进先出) 存放:局部变量
4.2 堆(不连续空间) 存放new出来的对象
4.3 方法区(属于堆的一部分)
存放信息:类的信息(代码)、static变量、常量池(字符串常量)等
以Student类为例:Student s = new Student();
//通过类加载器(Class Loader)加载Student类,加载后,在方法区中就有了该类的信息!
内存分析当中涉及的问题总结:
静态
被静态(static)修饰的,放在内存中的 data segment 块中。
静态变量不属于对象中,他是 class 共用的一块区间,他是单独存放在 data segment 中的。
常量
常量(final)也放在内存中的 data segment 块中。
System.out.println("test");这里的"test"也是常量
类
类是一个静态概念,类保存在代码区(上图的方法区)。
同一个类的每个对象共享该类的方法。
方法
方法是一个静态概念,保存在代码区(上图的方法区)。
只有在执行的时候才会占用内存。
同一个方法可以由很多对象同时在调用并且运行。
(方法中的参数是一个局部的变量,他在方法使用时创建,使用过以后销毁。)
方法的返回值暂时在 栈 里储存,此时该值没有名称。
对象
对象是new出来的,位于堆中。
new在创建过程中,就是将不同的值赋给对象的属性中,然后创建一个对象。
类的每个成员变量在不同的对象中都有不同的值(除了静态变量)而方法只有一份,执行的时候才会占用内存。
垃圾回收
你一直无法使用的对象,将被垃圾回收机制回收。
垃圾回收机制是隔一段时间回收一次的,他并不是及时回收的。
垃圾回收是如何完成的:
如果堆里面没有指向他的栈,那么该对象无法被调用。
所以此时回收机制会将其回收。
本文参考:
面向对象编程(OOP Oriented Object Program)的本质:
- 以类的方式组织代码,以对象的方式组织(封装)数据
面向对象思维:OOA,OOD
从OOD角度来说,是先有对象后抽象出类。
对象:是具体的事物
类:是对对象的抽象(抽象 抽出象的部分)
先对具体的对象,然后抽象各个对象之间象的部分,归纳出类通过类再认识其他对象。
Q:天使类如何归纳?
分析:通过具体对象抽象出类
抽象出天使类的特征,分析问题:
从抽象万事万物中抽出象的部分,具体问题具体分析。
对象和类的总结
对象和类的关系:特殊到一般,具体到抽象
类:我们叫做class
对象:我们叫做Object,instance(实例)。以后我们说某个类的对象,某个类的实例。是一样的概念。
类可以看成一类对象的模板,对象可以看成该类的一个具体实例。
类是用于描述同一类型的 一个抽象的概念,类中定义了这一类对象所应具有的静态和动态属性。
对象是java程序的核心,在Java程序中“万事万物皆对象”。
JDK提供了很多类供编程人员使用,编程人员也可以定义自己的类。
Java语言中除基本类型之外的变量类型都称为引用类型
Java中的对象是通过引用reference对其操作的。
2、类的属性
属性 field,或者叫成员变量
属性用于定义该类或该类对象包含的数据或者静态属性
属性作用范围是整个类体
在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。
属性定义格式:
变量的作用域:
3、类的方法
面向对象中,整个程序的基本单位是类,方法是从属于类的。
方法中定义的局部变量,在使用时必须初始化,系统不会默认初始化局部变量!
方法定义格式:
JAVA中方法参数传递的是:值传递!
类的方法定义实例:
4、内存分析(用Office自带的OneNote软件演示)
4.1 栈(自动分配连续的空间,后进先出) 存放:局部变量
4.2 堆(不连续空间) 存放new出来的对象
4.3 方法区(属于堆的一部分)
存放信息:类的信息(代码)、static变量、常量池(字符串常量)等
以Student类为例:Student s = new Student();
//通过类加载器(Class Loader)加载Student类,加载后,在方法区中就有了该类的信息!
内存分析当中涉及的问题总结:
静态
被静态(static)修饰的,放在内存中的 data segment 块中。
静态变量不属于对象中,他是 class 共用的一块区间,他是单独存放在 data segment 中的。
常量
常量(final)也放在内存中的 data segment 块中。
System.out.println("test");这里的"test"也是常量
类
类是一个静态概念,类保存在代码区(上图的方法区)。
同一个类的每个对象共享该类的方法。
方法
方法是一个静态概念,保存在代码区(上图的方法区)。
只有在执行的时候才会占用内存。
同一个方法可以由很多对象同时在调用并且运行。
(方法中的参数是一个局部的变量,他在方法使用时创建,使用过以后销毁。)
方法的返回值暂时在 栈 里储存,此时该值没有名称。
对象
对象是new出来的,位于堆中。
new在创建过程中,就是将不同的值赋给对象的属性中,然后创建一个对象。
类的每个成员变量在不同的对象中都有不同的值(除了静态变量)而方法只有一份,执行的时候才会占用内存。
垃圾回收
你一直无法使用的对象,将被垃圾回收机制回收。
垃圾回收机制是隔一段时间回收一次的,他并不是及时回收的。
垃圾回收是如何完成的:
如果堆里面没有指向他的栈,那么该对象无法被调用。
所以此时回收机制会将其回收。
本文参考:
相关文章推荐
- java—1.面向对象与内存分析
- JAVA(八)java面向对象2-变量和内存分析
- 6 Java基础语法(二维数组,参数传递与数据加密问题)&面向对象(面向对象思想,类与对象及使用,对象内存图解)
- [学习笔记]Java面向对象思想和内存模型
- JAVA面向对象与内存分析
- java从入门到弃坑之面向对象思想
- Java中面向对象思想分析
- Java面向对象--内存分析,异常处理机制
- 第十三、Java面向对象之内存分析
- JAVA之旅(三)——数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想
- 06-03 Java 面向对象思想概述、开发设计特征,类和对象的定义使用,对象内存图
- JAVA之旅(三)——数组,堆栈内存结构,静态初始化,遍历,最值,选择/冒泡排序,二维数组,面向对象思想
- 面向对象_引用类型_内存分析_垃圾回收JAVA028-033
- JAVA菜鸟入门篇 - 面向对象特征之:多态 (十八)
- 黑马程序员-----java入门一DAY10------类的设计分析 面向对象多态 构造代码块
- JAVA面向对象与内存分析
- Java之内存分析和String对象
- Java内存对象的逃逸分析
- java面向对象思想(2)——三大基本特征
- Java内存对象的逃逸分析