内容
1.面向过程与面向对象
2.类
3.对象
4.Java内存空间
一.面向过程与面向对象
1.面向过程主要关注点是实现的具体过程,因果关系
优点:对于业务逻辑比较简单的程序,可以达到快速开发,前期投入成本较低缺点:采用面向过程的方式开发很难解决非常复杂的业务逻辑,另外,面向过程的方式使得各元素之间关联度非常高,只要一环出问题,整个系统都有可能出问题,导致最终的软件扩展力差,另外,由于没有独立体的概念,所以无法达到软件复用([软件复用]是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费)
2.面向对象主要关注点是主要关注对象【独立体】能完成哪些功能
优点:关联度低,扩展力强,更容易解决现实世界当中更复杂的业务逻辑、组件复用性强缺点:前期投入成本较高需要进行独立体的抽取,大量的系统分析与设计
3.面向对象的三大特征
封装、继承、多态
4.采用面向对象的方式开发一个软件,生命周期当中
有
面向对象的分析:OOA
面向对象的设计:OOD
面向对象的编程:OOP
整个生命周期中贯穿使用OO 面向对象方式
要知道OOA、OOD、OOP分别代表什么意思
二.类
1.简述类
一个类主要描述状态和动作,状态就是一个类的属性,动作就是一个类的方法。(和c++的类基本是一样的)
2.类语法结构
(修饰符列表)class 类名{
}
3.Java数据类型
①基本数据类型:byte、short、int、long、float、double、boolean、char
②引用数据类型(Java中所有的class都属于引用类型)String System
4.小注意点
每一个类中都可以写main,但是一般情况下,一个系统只有一个入口,所以主方法main一般写一个
三.对象
1.简述对象
其实Java里面的类和对象和c++里面的很多都是一样的。但是也有不同,比如
c++在创建对象时有可能是
也有可能是
而Java就不一样了,具体如下
2.实例化对象的语法:
new 类名();
比如
注意:①这里要使用new,而c++用到new一般是指针。所以在这里也可以对对象有一个新的定义:new运算符在堆内存中开辟的内存空间称为对象。
②类名后面要有(),而c++里面一般都是有构造函数才写()
比如Student是一个类,那就是
Student s = new Student();,这个s是个引用(c++中是对象名),引用是一个变量,只不过这个变量中保存了某个Java对象的内存地址(c/c++中是指针)
3.访问对象成员
Java中,程序员不能直接操作堆内存,因为Java没有指针,不像c语言,Java中程序员只能通过“引用”去访问堆内存当中对象内部的实例变量,
所以访问实例变量的语法格式是引用.变量名(其实就相当于c++里面的 对象名.成员名)
代码示例上述内容
显示出黄晓明的妻子是杨颖,体现出它们之间的关系
执行情况用图像大致这样表示
QQ截图20200207144026.png
四.Java内存空间
JVM(Java虚拟机)主要包括三块内存空间:栈内存、堆内存、方法区内存
①堆内存和方法区内存各有一个,一个线程一个栈内存
②方法调用的时候,该方法所需要的内存空间在栈内存中分配,称为压栈。方法执行结束之后,该方法所属的内存空间释放,称为弹栈。
③栈中主要存储的是方法体当中的局部变量
④方法的代码片段以及整个类的代码片段都被存储到方法区内存当中,在类加载的时候这些代码片段会输入
⑤在程序执行过程中使用new运算符创建的Java对象,存储在堆内存当中,对象内部有实例变量,所以实例变量也存储在堆内存当中
变量分类:
局部变量【方法体中声明】
成员变量【方法体外声明】
①实例变量 前边修饰符没有static
②静态变量 前边修饰符有static
⑥静态变量存储在方法区内存当中
⑦三块内存当中变化最频繁的是栈内存,最先有数据的是方法区内存,垃圾回收器主要针对的是堆内存
⑧当没有引用指向某个java对象,也就是它无法被访问的时候,这个java对象就变成了垃圾数据,这个时候垃圾回收器就会回收这个垃圾数据
QQ截图20200207143915.png