内容

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++在创建对象时有可能是

cPeople cpeople;
cpeople.age = 13;

也有可能是

cPeople*p = new cPeople;
p->age = 13;

而Java就不一样了,具体如下

2.实例化对象的语法:

new 类名();
比如

Husband huangxiaoming = new Husband();

注意:①这里要使用new,而c++用到new一般是指针。所以在这里也可以对对象有一个新的定义:new运算符在堆内存中开辟的内存空间称为对象。
类名后面要有(),而c++里面一般都是有构造函数才写()

比如Student是一个类,那就是
Student s = new Student();,这个s是个引用(c++中是对象名),引用是一个变量,只不过这个变量中保存了某个Java对象的内存地址(c/c++中是指针)

3.访问对象成员

Java中,程序员不能直接操作堆内存,因为Java没有指针,不像c语言,Java中程序员只能通过“引用”去访问堆内存当中对象内部的实例变量,

所以访问实例变量的语法格式是引用.变量名(其实就相当于c++里面的 对象名.成员名)

代码示例上述内容
显示出黄晓明的妻子是杨颖,体现出它们之间的关系

package 对象;

class Husband{
String name;//注意这里s要大写

Wife w;

}
class Wife{
String name;

Husband h;
}
public class 对象 {
public static void main(String[] args) {
Husband huangxiaoming = new Husband();//使用引用的方式创建对象

Wife baby = new Wife();//使用引用的方式创建对象

//对名字进行赋值
huangxiaoming.name = "黄晓明";
baby.name = "杨颖";

//使两对象之间产生关系
huangxiaoming.w = baby;
baby.h = huangxiaoming;

//通过打印出两者的名字来验证两者的关系
System.out.println(huangxiaoming.name + "的妻子是" + huangxiaoming.w.name);//用+连接,输出的时候没有+
}
}

到时候就会输出: 黄晓明的妻子是杨颖

执行情况用图像大致这样表示




Java学习3 2020-02-07_编程语言


QQ截图20200207144026.png


四.Java内存空间

JVM(Java虚拟机)主要包括三块内存空间:栈内存、堆内存、方法区内存

①堆内存和方法区内存各有一个,一个线程一个栈内存
②方法调用的时候,该方法所需要的内存空间在栈内存中分配,称为压栈。方法执行结束之后,该方法所属的内存空间释放,称为弹栈
③栈中主要存储的是方法体当中的局部变量
④方法的代码片段以及整个类的代码片段都被存储到方法区内存当中,在类加载的时候这些代码片段会输入
⑤在程序执行过程中使用new运算符创建的Java对象,存储在堆内存当中,对象内部有实例变量,所以实例变量也存储在堆内存当中
变量分类:
局部变量【方法体中声明】
成员变量【方法体外声明】
①实例变量 前边修饰符没有static
②静态变量 前边修饰符有static
静态变量存储在方法区内存当中
⑦三块内存当中变化最频繁的是栈内存,最先有数据的是方法区内存,垃圾回收器主要针对的是堆内存
⑧当没有引用指向某个java对象,也就是它无法被访问的时候,这个java对象就变成了垃圾数据,这个时候垃圾回收器就会回收这个垃圾数据



Java学习3 2020-02-07_设计模式_02



QQ截图20200207143915.png