《从零开始的java世界》

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

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

Java学习笔记

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

文章目录

  • 《从零开始的java世界》
  • Java学习笔记
    • 一: 面向过程与面向对象有什么区别
    • 二: OOA、OOD、OOP述语
    • 三: 面向对象三大特征
    • 四: 类和对象的概念
    • 五: 类的定义
    • 六: 空指针异常
    • 七:封装
    • 七: this
    • 八: toString()
  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会考虑将该垃圾数据释放回收掉
  • 空指针异常:该对象没有"引用"指向它了,编译的时候没问题,但是运行的时候需要对象存在,但是对象没了,尴尬了,就只能出现一个异常

七:封装

封装的作用:保证内部结构的安全;屏蔽复杂,暴露简单
get与set方法应该定义为实例方法
new出来的对象去调用get与set方法

封装步骤: 属性私有化 -》 提供两个方法-》可以在set方法设立关卡

// get方法
public class Person{private int age;public int getAge(){return age;}// set方法public void setAge(int nianLing){age = nianLing;}
}

七: this

1: this是一个关键字,全部小写
2:this存储在堆内存内部的对象
3:this只使用在实例方法中,谁调用这个实例方法,this就是谁,代表当前对象

八: toString()

目的: 将一个java对象转换成字符串形式
建议所以的子类都重写子方法

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

  • 在这个星球上,你很重要,请珍惜你的珍贵! ~~~夜斗小神社

我要偷偷学java,然后惊艳所有人相关推荐

  1. 我要偷偷学Java,然后惊呆所有人!

    Java修饰符 1 访问控制修饰符 在java中可以使用访问控制符来保护类,变量,方法和构造方法的访问. * 默认为default,在同一包中可见,不使用任何修饰符,接口里的变量隐式声明为public ...

  2. 漫画 | 程序员职场屌丝逆袭,一举惊艳所有人!

    曾经初入职场的我们 都懵懵懂懂 是"勤能补拙,天道酬勤"? 还是选择躺平呢? 如今再回首,内心有何感想? 带着这个回忆,一起来看看曾经初入职场的王大拿吧 本期漫画情节纯属虚构 如有 ...

  3. 冰河常逛的23大学习网站,收藏后悄悄努力,然后惊艳所有人

    大家好,我是冰河~~ 小伙伴们有木有这种感觉:假期还没怎么玩就已经过去了?好吧,其实,冰河也有这种感觉:假期还没开始就已经结束了.哎,我们还是把心收回来,好好工作吧! 国庆期间很多小伙伴问我:冰河,你 ...

  4. 一招惊艳所有人,HTML制作网页成绩表

    相信很多人听到开学的消息,看着还没有完成的作业,不想写是不是照应上面的表情呢?估计没有人会记得上学期的期中成绩了吧,那么下面就怎么一招惊艳所有人,如何制作HTML网页成绩表. 文章目录 认识网页 网页 ...

  5. 打工人书单 | 我要悄悄读书 然后惊艳所有人

    生活里80%的痛苦来源于打工,但是我知道,如果不打工,就会有100%的痛苦来源于没钱,所以在打工和没钱之间,我选择打工. --<打工宣言> "打工人"火了. " ...

  6. 打工人,打工魂,打工都是人上人!愿你悄悄打工,然后惊艳所有人!

    几乎是一夜之间,打工人火了,甚至还有不少商家把打工人这3个字注册成商标了,果然还是商家精明啊! 打工人一词,是打工.人,而不是打.工人,说白了,打工人和打工仔一个意思,是广大打工者的自嘲和调侃! 以下 ...

  7. 偷偷学习Java,然后惊艳所有人 JavaSE总结 - thread多线程

    零基础学Java,肝了bilibili的6百多集JavaSE教程传送门的学习笔记!!! 下面博客分为三部分: ① thread多线程的要点(想快速了解thread多线程的小伙伴选择,内容较多,快也快不 ...

  8. 幼儿编程学java不_《终于有人说出来了——Java不适合于作为主要编程教学语言》我的看法...

    我就一些评论说说我的观点: 对文章,我觉得比较合理的,一开始上手java并不是很好的方法,对于文章中的建议值得大家思考. 两片文章是说 教育系统不应该不传授C语言,而直接学习JAVA,从而导致了... ...

  9. 分享6款小众宝藏软件,悄悄成长,然后惊艳所有人

    小伙伴们是否在这样的状态中挣扎?想提升自己却不知道从哪开始.别担心!今天小编来给大家分享6款超好用的宝藏软件,工作生活两不误,让自己悄悄成长!惊艳四座! 1. 有道云笔记 这是一款多平台记录工具,让我 ...

最新文章

  1. RabbitMQ详细文档
  2. 人工智能对金融世界的改变_人工智能革命正在改变网络世界
  3. MYSQL存储引擎笔记
  4. Table.Rows.Remove(dr)和Table.Delete()的区别
  5. 关于2017年总结及2018年计划
  6. python中的排序方法都有哪些_有没有办法在python中对列表进行排序,直到找到第一个排序的k元素?...
  7. Python调用IDM批量下载GOCI数据
  8. 国内开源的镜像网站(很全很详细)
  9. 挖掘数字资产,生意增长是本质,但数据创新仍有难题待解 | 2022全球数字价值峰会...
  10. 关于 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B) 的 解决方法
  11. 喝王老吉可延长寿命大约10%?
  12. Kubernetes集群功能演示:deployment的管理和kubectl的使用
  13. JDK动态代理源码解析
  14. 【颜纠日记】精华乳,精华液,精华水和化妆水相通吗,分享操纵手段
  15. python 按键精灵脚本_按键精灵的脚本 - 对于重复动作(含键盘鼠标)太好用了
  16. containerd环境下build镜像
  17. 最全面详细(小白)的 filebrowser 搭建部署教程
  18. 了解C语言中的pipe()系统调用
  19. Windows - win11取消鼠标右键菜单折叠的方法
  20. Unity使用Isometric Z As Y Tilemap创建2.5D地图(二)如何按照正确遮挡顺序渲染图片

热门文章

  1. HTML学生作业网页:网页设计期末作业 使用HTML CSS技术实现非遗文化网页设计题材【汉服文化—共12个页面】
  2. vtk教程第九章 高级算法
  3. 第三代计算机的内存是,电脑内存才DDR3,为何手机内存是LPDDR4?
  4. macos 彻底删除goland编译器
  5. java stringtokenizer,java-为什么不建议使用StringTokenizer?
  6. AUI 中execScript 方法详解
  7. UPC5222 Sum of the Line(分解质因数+容斥原理)
  8. 怎么快速修改EDIUS中的模板
  9. 业内顶尖 vivo NEX双屏版黑科技TOF技术大揭秘
  10. ASP.NET中制作WEB统计图控件的捷径