JAVA菜鸟入门篇 - 类、面向对象思想和内存分析(九)

来源:互联网 发布:2016网络赚钱方法 编辑:程序博客网 时间:2024/06/06 00:18

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在创建过程中,就是将不同的值赋给对象的属性中,然后创建一个对象。
类的每个成员变量在不同的对象中都有不同的值(除了静态变量)而方法只有一份,执行的时候才会占用内存。

垃圾回收
你一直无法使用的对象,将被垃圾回收机制回收。
垃圾回收机制是隔一段时间回收一次的,他并不是及时回收的。
垃圾回收是如何完成的:
如果堆里面没有指向他的栈,那么该对象无法被调用。
所以此时回收机制会将其回收。


本文参考:


0 0
原创粉丝点击