Java编程思想总结笔记The first chapter
总觉得书中太啰嗦,看完总结后方便日后回忆,本想偷懒网上找别人的总结,无奈找不到好的,只好自食其力,尽量总结得最好。
第一章 对象导论
看到对象导论觉得这本书
目录:
1.1 抽象过程
1.2 每个对象都有一个接口
1.3 每个对象都提供服务
1.4 被隐藏的具体实现
1.5 复用具体实现
1.6 继承
1.7 伴随多态的可互换对象
1.8 单根继承结构
1.9 容器
1.10 对象的创建和生命期
1.11 异常处理:处理错误
1.12 并发编程
1.13 Java与Internet
1.14 总结
觉得看完终于要精通Java了,然而本章只是介绍开发方法概述在内的OOP的基本概念,了解对象的重要性。
1.1 抽象过程
通过其他语言的缺点来说明面向对象语言的好。
汇编语言是对底层机器的轻微抽象、命令式语言(如C、BASIC)是对汇编语言的一种抽象,汇编语言直接控制计算机的硬件,命令式语言则基于计算机结构解决问题。OOP语言基于问题的结构解决问题,不会受限于任何特定类型的问题。
1.2 每个对象都有一个接口
接口:确定了对某一特定对象所能发出的请求 对象:类型名称
看文字描述已经上升到哲学问题,从下面例子很好理解。
Light lt = new Light(); //对象
lt.on;//接口向对象发出请求

1.3 每个对象都提供服务
好处:1、有助于提高软件的内聚性 2、每个对象都可以很好的完成一项任务,但是它并不试图做更多的事情。
理解:设计一个音乐播放器,有歌词显示、播放,暂停、背景显示(服务),这时不要只提供一个对象(它并不试图做更多的事情),可以提供三个对象,完成三个服务,三个对象提供三个服务完成一个音乐播放器(内聚性)。
1.4 被隐藏的具体实现
从Github下载一个框架,我的目标是实现快速应用开发,框架只需向我提供方法的调用即可,其他的隐藏了也不会影响我的调用。
访问权限:public > protected(包+基类) > 包访问权限(没有关键词时默认) > private
1.5 复用具体实现
复用指在一个类中使用继承或者组合。
- 继承 ----is a 的关系 荔枝是水果
- 组合 ----has a 的关系 有一种睡觉的方式是趴着
1.6 继承
从父类中派生出子类,子类能吸收父类的数据属性和行为,并能扩展新的能力。
1.7 伴随多态的可互换对象
class Shape{
draw();
erase();
move();
getColor();
setColor();
}
void doSomething(Shape shape){
shape.erase();
//...
shape.draw();
}
Circle circle = new Circle(); //父类为Shape
Triangle triangle = new Triangle(); //父类为Shape
Line line = new Triangle(); //父类为Shape
doSomething(circle);
doSomething(triangle);
doSomething(line);
对doSomething的调用会自动地正确处理,而不管对象的确切类型(可互换对象)。
doSomething(Shape shape)的执行是指你是Shape类或者父类为Shape,而不是你是Circle类就执行这样,你是Triangle 类就执行那样。理解了可以去看设计模式之策略模式。
这里还涉及到向上转型,如下图:

1.8 单根继承结构
1、所有类都继承自单一的基类
public class JianCheng extends Object {
}
public class JianCheng {
public static void main(String[] args) {
JianCheng jiancheng= new JianCheng();
System.out.println(JianCheng instanceof Object);
}
}
输出:true //说明 JianCheng 类默认继承 Object
2、保证所有对象具有某些功能
Object 的方法会被子类所继承,例如: clone()、equals(Object obj)、toString() 等方法。
3、垃圾回收变得容易
对象保证有其(Object)类型信息,因此不会因无法确定对象的类型而陷入僵局。这对于系统级操作显得十分重要(如异常处理)。
1.9 容器
持有对其他对象的引用称为容器(集合),例如List(用于存储序列),Map(也被称为关联数组,用来建立对象之间的关联),Set(每种对象类型只持有一个),以及诸如队列、树、堆栈等更多的构件。
ArrayList与LinkedList的比较,前者是数组的形状,随机访问元素开销小,但插入、删除操作开销大。后者是链表形状,插入、删除操作方便。
1.10 对象的创建和生命期
认识对象置于堆栈和堆的区别
- 堆栈 --间分配和释放置于优先考虑的位置,牺牲了灵活性,因为必须知道对象确切的数量、生命周期和类型。
- 堆 --内存池中动态的创建对象,运行时才知道对象的数量,生命周期和类型。动态管理所以需要大量的时间在堆中分配存储空间,但创建存储空间和释放存储空间非常方便。
Java 采用了动态内存分配的方式,使用 new 关键字创建对象,编译器可以确定对象存活的时间,并通过“垃圾回收器机制”自动销毁它。
1.11 异常处理:处理错误
异常是一种对象,从出错地点被抛出,并被特定类型的错误异常处理器捕获,通过try--catch或者throw。异常处理就像是与程序正常执行路径并行的、在错误发生时执行的另一条路径。
运行时的异常,只有当代码运行时才能发现异常,并不需要try-catch。
1.12 并发编程
同一时刻处理多个任务的思想,也就是多线程运行。
同步多线程运行有一个隐患,共享资源。A本来想使用a=Love You 但在某个线程导致a = hate you 然后A使用了,这样A肯定告白失败。
1.14 总结
第一章全是理论知识,而且很多知识点明明很容易却长篇大论导致难以理解,干货有却夹杂太多虚的了。

Java编程思想总结笔记Chapter 2
转载注明:http://www.cnblogs.com/wujiancheng/
Java编程思想总结笔记The first chapter的更多相关文章
- Java编程思想总结笔记Chapter 2
本章介绍Java程序的基本组成部分,体会到Java中几乎一切都是对象. 第二章 一切都是对象 目录: 2.1 用引用操纵对象 2.2 必须由你创建所有对象 2.3 永远不需要销毁对象 2.4 创建 ...
- Java编程思想总结笔记Chapter 5
初始化和清理是涉及安全的两个问题.本章简单的介绍“垃圾回收器”及初始化知识. 第五章 初始化与清理 目录:5.1 用构造器确保初始化5.2 方法重载5.3 默认构造器5.4 this关键字5.5 清 ...
- Java编程思想总结笔记Chapter 3
本章需要总结的不多,但细节的东西需要注意,有些很容易遗忘. 第三章 目录: 3.1 更简单的打印语句 3.2 使用Java操作符 3.3 优先级 3.4 赋值 3.5 算数操作符 3.6 自动递增和递 ...
- Java编程思想重点笔记(Java开发必看)
Java编程思想重点笔记(Java开发必看) Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面试过程中,而 ...
- JAVA编程思想读书笔记(五)--多线程
接上篇JAVA编程思想读书笔记(四)--对象的克隆 No1: daemon Thread(守护线程) 参考http://blog.csdn.net/pony_maggie/article/detail ...
- JAVA编程思想读书笔记(四)--对象的克隆
接上篇JAVA编程思想读书笔记(三)--RTTI No1: 类的克隆 public class MyObject implements Cloneable { int i; public MyObje ...
- JAVA编程思想读书笔记(三)--RTTI
接上篇JAVA编程思想读书笔记(二) 第十一章 运行期类型判定 No1: 对于作为程序一部分的每个类,它们都有一个Class对象.换言之,每次写一个新类时,同时也会创建一个Class对象(更恰当的说, ...
- JAVA编程思想读书笔记(二)--容器
接上篇JAVA编程思想读书笔记(一) 第八章.对象的容纳 No1: java提供了四种类型的集合类:Vector(矢量).BitSet(位集).Stack(堆栈).Hashtable(散列表) No2 ...
- Java编程思想读书笔记之内部类
现在是够懒得了,放假的时候就想把这篇笔记写出来,一直拖到现在,最近在读<Java编程思想>,我想会做不止这一篇笔记,因为之前面试的时候总会问道一些内部类的问题,那这本书的笔记就从内部类开始 ...
随机推荐
- 玩转Storage Table 的PartitionKey,RowKey设计
参阅的文章 l https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/designing-a-scalable ...
- 简化布隆过滤器——BitMap
简化布隆过滤器--BitMap 前言 前段开发项目试就发现,一部分的代码实现存在着一些性能上的隐患.但当时忙于赶进度和由于卡发中的不稳定因素,想了许多解决方案也没有机会实施.最近,正好趁个机会进行一系 ...
- 包装FTPWebRequest类
上篇文章讨论了C#从基于FTPS的FTP server下载数据 (FtpWebRequest 的使用)SSL 加密.不过细心的朋友应该可以发现FTPWebRequest 每次都是新生成一个reques ...
- LANMP一键安装包 版本服务任你选 可安装单一服务
介绍与使用 更多内容请到 乌龟运维 wuguiyunwei.com 请保证在系统原有yum源文件存在的情况下运行此脚本 以下以centos7.3为例: 下面以安装LNMP为例: ? 1 wget ht ...
- 浅谈Ubuntu PowerShell——小白入门教程
早在去年八月份PowerShell就开始开源跨平台了,但是一直没有去尝试,叫做PowerShell Core. 这里打算简单介绍一下如何安装和简单使用,为还不知道PowerShell Core on ...
- JS问题笔记——模拟Jq底层实现工厂模式
<script type="text/javascript"> (function (window,undefined){ function _$(arguments) ...
- .NET和JAVA 反射对比
反射是一个程序集发现及运行的过程,通过反射可以得到*.exe或*.dll等程序集内部的信息.使用反射可以看到一个程序集内部的接口.类.方法.字段.属性.特性等等信息.在System.Reflectio ...
- 一道C语言安全编码题目
1.前言 最近在网上看到一道C语言题目,用C语言实现一个函数,给定一个int类型的整数,函数输出逆序的整数,例如输入123,则输出字符串"321",,输入-123,则输出字符串&q ...
- javascript痛点之四this的指向问题
先看以下例子 1.我们直接调用this看看指向的是谁 alert(this);//指向window 2.在函数中直接调用看看指向的是谁 function fn(){ alert(this); } fn ...
- [1] Spring.Net
开发框架之Spring.Net