Java学习日志5

First Post:

Last Update:

Word Count:
1.6k

Read Time:
6 min

利用方法重载进行包装

先上代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/**
* @author OliverChen
*/
public class O {
public static void p()
{
System.out.println();
}
public static void p(byte b)
{
System.out.println(b);
}
public static void p(short s)
{
System.out.println(s);
}
public static void p(int i)
{
System.out.println(i);
}
public static void p(long l)
{
System.out.println(l);
}
public static void p(float f)
{
System.out.println(f);
}
public static void p(double d)
{
System.out.println(d);
}
public static void p(boolean b)
{
System.out.println(b);
}
public static void p(char c)
{
System.out.println(c);
}
public static void p(String s)
{
System.out.println(s);
}
}

在代码文件夹内运行以上代码生成class文件后,即可完成对println的二次包装,以后可利用改包装简写println命令,例如:

1
2
3
4
5
6
7
8
9
/**
* @author OliverChen
*/
public class Hello {
public static void main(String[] args)
{
O.p("Hello,World!");
}
}

方法递归的原理

递归原理图.jpg

day07RecursionTest03.jpg

所以当递归时程序没有结束条件时,一定会发生栈内存溢出错误(StackOverflowError)

面向过程与面向对象

  • 面向过程和面向对象的区别
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
- 面向过程:主要关注点是:实现的具体过程,因果关系
- 【集成显卡的开发思路】【炒饭】

* 优点:对于业务逻辑比较简单的程序,可以达到快速开发,前期投入成本较低。

* 缺点:采用面向过程的方式开发很难解决非常复杂的业务逻辑
另外面向过程的方式导致软件元素之间的“耦合度”非常高
只要其中一环出问题,整个系统受到影响,导致最终的软件“扩展力”差。
另外,由于没有独立体的概念,所以无法达到组件复用。

- 面向对象:主要关注点是:主要关注对象【独立体】能完成哪些功能。
- 【独立显卡的开发思路】【盖饭】

* 优点:耦合度低,扩展力强。更容易解决现实世界当中更复杂的业务逻辑。组件复用性强。

* 缺点:前期投入成本较高,需要进行独立体的抽取,大量的系统分析与设计。

- C语言是纯面向过程的、C++半面向对象、Java纯面向对象

- 现在出现的一些新的编程语言多数都是面向对象的。
- 人在认识现实世界的时候以面向对象的方式。
- 面向对象更符合人的思维方式。
  • 面向对象的三大特征
    - 封装
    - 继承
    - 多态

所有面向对象的编程语言都有这三大特征。

采用面向对象的方式开发一个软件,生命周期当中:
【整个生命周期中贯穿使用OO面向对象方式】

  • 面向对象的分析:OOA
  • 面向对象的设计:OOD
  • 面向对象的编程:OOP

类和对象

  • 类和对象的概念

  • 什么是类?
    - 类在现实世界当中是不存在的,是一个模板,是一个概念。是人类大脑思考抽象的结果。
    - 类代表了一类事物。
    - 在现实世界当中,对象A与对象B之间具有共同特征,进行抽象总结出一个模板,这个模板被称为类。

  • 什么是对象?
    - 对象是实际存在的个体。现实世界当中实际存在。

    * 描述一下整个软件开发的过程:
    * 程序员先观察现实世界,从现实世界当中寻找对象
    * 寻找了N多个对象之后,发现所有的对象都有共同特征
    * 程序员在大脑中形成了一个模板【类】
    * Java程序员可以通过java代码来表述一个类
    * Java程序中有了类的定义
    * 然后通过类就可以创建对象
    * 有了对象之后,可以让对象直接协作起来形成一个系统。

    • 类–【实例化】->对象

    • 对象又被称为实例

    • 对象–【抽象】–>类

  • 重点:
    类描述的是对象的共同特征
    共同特征例如:身高特征
    这个身高特征在访问的时候,必须先创建对象,通过对象去访问这个特征。
    因为这个特征具体的某个对象上之后,值不同。有的对象身高1.80,有的对象身高2.80。

  • 一个类主要描述的是 状态 + 动作。
    状态信息:名字、身高、性别、年龄
    动作信息:吃、唱歌、跳舞、学习
    状态–> 一个类的属性
    动作–> 一个类的方法

  • 类 = 属性 + 方法

    类{

属性; //描述对象的状态信息,由于属性对应数据,所以以变量的方式存在
方法; //描述对象的动作信息
}

注意:
状态和动作当具体到某个对象上之后,发现最终的结果可能不一样。
对象和对象之间有共同特征,但是具体到对象之后有数据的差异。

  • 方法体当中声明的变量:局部变量
  • 方法体外声明的变量:成员变量(即属性

对象的创建

创建对象的语法:new 类名();
类是模板,通过一个类可以创造N多个对象。
new是一个运算符,专门负责对象的创建。

Java中所有的“类”都属于引用数据类型。

对象和引用的概念:
* 对象:目前在使用new运算符堆内存中开辟的内存空间称为对象。
* 引用:是一个储存了对象内存地址的变量,可以是局部变量,也可以是方法变量
* 所有访问实例相关的数据,都需要通过引用的方式访问,因为只有通过引用才能找到对象。故实例变量必须先创建对象,通过“引用”来访问。
* 只有一个空的引用,访问对象的实例相关的数据会出现空指针异常。

1
2
3
4
5
6
7
8
class Student{

Computer com; //com是一个引用【实例变量】

public static void doSome(){
Computer cc; //cc是一个引用【局部变量】
}
}

下图为以上在JVM中的体现:

Image 11.png

多次调用对象的JVM体现:

day08OOTest02.jpg

最后给一下代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/**
* @author OliverChen
*/
public class OOTtest {

public static void main(String[] args) {
//创建一个对象
Student zhangsan = new Student();
//与int i=10;意义相同
zhangsan.id = 1001;
zhangsan.name = "张三";
zhangsan.sex = true;
zhangsan.address = "北京";
zhangsan.age = 20;
System.out.println("id=" + zhangsan.id);
System.out.println("name=" + zhangsan.name);
System.out.println("sex=" + zhangsan.sex);
System.out.println("address=" + zhangsan.address);
System.out.println("age=" + zhangsan.age);
}
}

class Student {

int id;
String name;
boolean sex;
String address;
int age;
}