我要偷偷学java,然后惊艳所有人

《从零开始的java世界》

日子像流水一样,淌过了名叫光阴的小河。
这秋叶落了尽,以萧瑟的姿态迎接了冬天;

在这里插入图片描述

各位踏入编程的小伙伴们大家好,我叫小夜斗,从今天开始我要和大家一起学习java啦,由于本人关于对象一词比较敏感,就直接从面向对象开始奋发图强了!

Java学习笔记

一: 面向过程与面向对象有什么区别

  1. 面向过程与面向对象有什么区别?

从语言方面来说:
c语言是完全面向对象的;c++是半面向对象的; 而java是完全面向对象的

  1. 什么是面向过程的开发方式?

注重实现这个功能的步骤,第一步干嘛,第二部干嘛;因为A所有B,因为B所有C,因为C所有D . . . . .... ....
面向过程中没有对象得概念,只是实现这个步骤以及因果关系

缺点: 假设任何一个子模块出现问题,那么整个项目都会出现问题(耦合度太高,即部件和部件焊接得太死,和开往幼儿园得车一样都太死了,揣都踹不开!就好比身体少了任何一个器官都会很难受,人体得耦合度也是非常高的),并且往往耦合度高的扩展性就差,不如人体身体的器官不能随随便便换吧!

优点: 对于小型项目,采用面向过程方式进行开发,效率较高,不需要前期进行对象的提取,模型的建立,采用面向过程的方式可以直接开始干活。上来就开始写代码,大部分入门编程写的代码大多数都是面向过程的,因为这个,所有那个啥的!

面向对象是任务可以让对象给你做;面向过程是得自己做!

  1. 采用面向对象的方式开发一台计算机会是怎么样的

内存条是一个对象
主板是一个对象
CPU是一个对象
磁盘是一个对象
然后这些对象组装在一起, 形成一台计算机
假设其中CPU坏了,我们可以将CPU拆下来,换一个新的

  1. 什么是面向对象的开发方式?

采用面向对象进行开发,跟符合人类的思维方式;面向对象是将创造一个个单元对象,让各个对象协作起来形成一个系统;
对象: 张三 对象: 香烟 对象: 打火机 对象: 吸烟的场所
上述四个对象可以构成一个场所: 张三在某个场所用打火机抽烟
并且其中的对象张三、香烟、打火机、吸烟的场所都可以替换!
因此采用对象的方式进行开发: 耦合度低, 扩展力强!

  1. 一个案例区分面向对象和面向过程的差异

蛋炒饭: 鸡蛋米饭混合在一起,没有独立对象的概念
假设顾客提出需求,嘿老板,我要吃蛋炒饭中的米饭不要蛋,你怎么办?
客户提出需求,软件开发者必须满足这个需求,于是开始扩展,这个软件的扩展将是一场噩梦(很难扩展,耦合度太高了!)

盖饭:
老板,来一份,鱼香肉丝盖饭
鱼香肉丝是一道菜,可以看出一个独立的对象
米饭可以看成一个独立的对象。
两个对象准备好后,只要有一个动作,叫做: “盖”
这样两个对象就可以组合在一起了
假设这个客户提出新的需求: 我想吃西红柿鸡蛋盖饭,那么这个扩展就轻松了,直接把"鱼香肉丝"对象换成"西红柿鸡蛋"对象

二: OOA、OOD、OOP述语

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

整个软件的开发过程,都是采用OO进行贯穿的
实现一个软件的过程: 分析(A) -> 设计(D)-> 编程( P )

leader: 领导/经理/组长
team: 团队
PM: 项目经理(整个项目的监管人)Project Manager

三: 面向对象三大特征

封装:
继承:
多态:

任何一个面向对象的编程语言都包括这三个特征: 例如python、java
ps: 除了Java,还有很多编程语言也是面向对象的

四: 类和对象的概念

  1. 什么是类,什么是对象?

类: 实际上在现实世界中不存在,好家伙,又开马克思了(听课时的内心想法)!是一个抽象的概念,时一个模板。是我们人类大脑进行思考、总结、抽象的一个结果,主要是人类的大脑不一般才有了类的概念(这老师一定是马克思原理学的非常好,牛逼!)
类本质上是将共同特征提取出来形成的概念就是一个类(名气很高的归结为明星类,java很吊的都是大佬类,我是这么认为的哈哈哈)

对象: 对象是一个实际存在的个体
宋小宝是一个对象
姚明也是一个对象
刘德华是一个对象
而这3个对象都属于明星这个类

在java语言中,要想得到对象,必须先定义类,对象是通过类这个模板创造出来的
类就是一个模板:类中描述的是所有对象的共同特征信息
对象就是通过这个模板创造出来的个体
通过类创建对象的过程我们可以称为: 实例化

类: 不存在的,人类大脑思考总结一个模板(这个模板中描述了共同特征)
对象: 实际存在的个体
实例: 对象还有另一个名字叫做实例
抽象: 多个对象的共同特征,进行思考总结抽取共同特征的过程

类是一个模板,是描述共同特征的一个模板,共同特征包哪些?

潘长江对象:
名字: 潘长江
身高: 165cm
打篮球: 非专业

姚明对象:
名字: 姚明
身高: 210cm
打篮球: NBA球员

共同特征包括哪些呢?
名字、身高都属于名词(状态特征)
打篮球、学习都属于动词(动作特征)

类 = 属性 + 方法
属性来源于: 状态
方法来源于: 动作

public class 明星类{
    
    
	//属性-->状态,多见于名词
	名字属性:
	身高属性:
	//方法-->动作,多见于动词
	打篮球方法(){
    
    
	
	}
	

如何面试官在问你面试官,能不能出说来啥叫类、方法、属性(这是老师提的一个问题哈哈哈,我觉得我应该还答不出来!)

老师还讲了一段关于java软件工程师在发开中的作用,认真听去了,总结:都是大佬哈哈!负责将人类身处的现实世界转化为java软件的虚拟世界,这老师有点小牛哈,佩服!我们需要具备观察 + 抽象能力。我们需要观察对象1和对象2有什么共同特征,然后在java程序中使用"类"来描述这些共同特征,通过"类"实例化"对象",让对象之间互相协作起来形成系统,模拟现实世界(这老师讲的好高深呐!)

五: 类的定义

  1. 这么定义一个类,语法格式是什么?
[修饰符列表] class 类名{
    
    
	//类体 = 属性 + 方法
	//属性在代码以"变量"的形式存在(描述状态)
	// 方法描述动作/行为
}
//ps: 修饰符列表可以省略
  1. 为什么属性是以变量的形式存在的?

假设我们要描述一个学生:
学生包括的属性:
学号: 110
姓名: “张三”
姓名: “男”
住址: “深圳宝安区”

因为属性对应的是"数据",数据在程序中只能放到变量中
方法体当中声明的变量: 局部变量
方法体外声明的变量: 成员变量

定义一个Student类

public class Student {
    
     // 这个程序编译后, 会生成Student.class字节码文件

    // 属性
    // 学号
    int number;
    // 姓名
    String name;
    // 年龄
    int age;
    // 性别
    boolean sex;
    // 住址
    String address;
}
  1. 创建对象的语法
    new 类名();
    创建一个s1对象
public class StudentTest {
    
    
    public static void main(String[] args)
    {
    
    
    	// 不能通过类名来访问实例变量
        // new是一个运算符, 专门负责对象创建
        // i 是变量名 int 数据类型 100具体的数据
        // 数据类型:
        //      基本数据类型: bytes short int long float double boolean char
        //      引用数据类型: String、Student ....
       // 创建对象s1, s1是一个局部变量
       // s1这个局部变量叫做引用
       Student s1 = new Student();  // 和 int i = 10 一个道理
       // 怎么访问实例变量
       // 语法: 引用.实例变量名
       System.out.println(s1.name);
       // 修改实例变量值
       s1.name = "夜斗";
       Ststem.out.println(s1.name);

	   Student s2 = new Student();
    }
}
  1. 创建对象对应的JVM内存结构
    在这里插入图片描述
    这张图感觉之后还得再理解一下,有点小管用!

  2. 什么是实例变量?

对象又被称为实例,实例变量实际上就是: 对象级别的变量。
public class 明星类 {
double height;
}
身高这个属性所有的明星对象都有,但每一个对象都有"自己的身高值"

六: 空指针异常

  • 垃圾回收期GC:针对堆内存,当一个对象没有任何引用指向该对象的时候,GC会考虑将该垃圾数据释放回收掉
  • 空指针异常:该对象没有"引用"指向它了,编译的时候没问题,但是运行的时候需要对象存在,但是对象没了,尴尬了,就只能出现一个异常

未完待续 . . . . .... ....
喜欢的小伙伴可以点个赞或者关注一下哈,java学习路上小夜斗和大家一起砥砺前行!当然有学python的小伙伴也可以看看小夜斗以前的python爬虫文章和笔记哈!然后这个系列我是看动力结点的视频学的,喜欢的小伙伴可以去b站观看,讲的真的好!不知道记笔记算原创还是转载还是翻译,就随便选了一个,码字不易,还请多多包涵!

  • 在这个星球上,你很重要,请珍惜你的珍贵! ~~~夜斗小神社
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/xtreallydance/article/details/112708038