java编程思想笔记(第一章)

Alan Kay 第一个定义了面向对象的语言

1.万物皆对象

2.程序是对象的集合,他们彼此通过发送消息来调用对方.

3.每个对象都拥有由其他对象所构成的存储

4.每个对象都拥有其类型(TYpe)

5.某一特定类型的所有对象都可以接收同样的消息.

Booch提出一种更简洁的描述:

对象拥有状态(state) 行为(behavior) 和标识(identity)

每个对象都有一个接口

每个对象都属于定义了特性和行为的某个类(特性可以理解为属性的状态,行为可以理解为method)

在面向对象的程序设计语言中都使用Class关键字表示数据类型.

每个对象都提供服务

你的目标是去创建能够提供理想服务来解决问题的对象集合.将对象看做服务提供者

被隐藏的具体实现

程序开发人员按角色分为类创建者和客户端程序员

类构建者的目标是构建类,该类只向客户端程序员暴露必需的部分,而隐藏其他部分。

客户端程序员是收集各种用来实现快速应用开发的类。

Java设置三个关键字来在类的内部设定边界:public private protected

public表示紧随其后的元素对任何人都可用

private表示除类型创建者和该类型内部方法之外的任何人都不可以访问的元素

protected与private相当,差别仅在于继承类可以访问protected成员,而不能访问private成员

缺省的访问权限又称为包访问权限,类可以访问在同一个包中的其他类的成员,包之外则不可以。

复用具体实现

代码复用是面向对象程序设计语言所提供的了不起的优点之一。

组合(强) 聚合(弱)

继承复用接口

基础中有两种方式复用接口:

1.对新特性添加新方法

2.对新特性进行重载方法(继承基类的导出类中修改)

继承是is-a关系(没有新加接口元素)与like-a关系(导出类中新加了方法)

伴随多态的可互换对象

抽象基类和接口

抽象(abstract)方法只能在抽象类内部创建,当该类被继承时,抽象方法必须被实现.否则继承类仍然是抽象类

接口里面压根不允许有任何方法定义

对象的创建使用和生命周期

oop涉及抽象数据类型 继承 多态

java采用堆(heap)方式在内存池中动态创建对象,直到运行时刻才知道有多少对象,生命周期其具体类型等.是解决一般化编程问题的要点

java提供垃圾回收器(garbage collector)机制销毁对象,避免暗藏的内存泄露问题

集合(collection)和迭代器(iterator)

list(列表,用于存储序列)arraylist与linkedlist的区别(前者访问元素的时间是固定的,后者越靠近表尾的代价越高昂,但是如果你想在表中插入一个元素,linkedlist的开销却比arraylist小)

map类(散列表,也被称为关联数组,用来建立对象之间的关联)

set类(集类,用于存储一类对象)

迭代器是一个用来选取容器中的元素,并把它呈现给迭代器用户的对象.

单根继承结构

在java中所有的类最终都继承自一个单一的基类(Object)

单根继承结构以及在堆上创建所有对象,极大地简化了参数传递.

也使垃圾回收器的实现变得容易很多.

向下转型(downcasting)与模板/泛型(template/generic)

向上是转型为一个更泛化的类型(安全的)

向下是转型为一个更具体的类型

为了向下转型提供的解决方案是参数化类型(parameterized type)机制其使编译器可以自动定制作用于特定类型之上的类.

异常处理:处理错误

异常是一种对象,它从出错点被抛出(thrown),并被适当的专门被设计用来处理特定类型异常的异常处理器捕获(caught).是和正常代码并行执行的一条路径,不会影响代码正常执行.

并发(concurrency)又称为多线程(multithreading)

通常线程只是一种对单一处理器分配执行时间的手段.但有一个隐患,就是共享资源,比如同时请求打印机.于是在使用期间必须锁定

某个线程锁定某个资源,完成其任务(task),然后释放资源锁(使用synchronized表示),使其他线程可以使用

持久性(persistent)

java提供了对轻量级持久性的支持.这意味着你可以很容易将对象存储在磁盘上以便以后取回他们

----

java与internet

利用中间件将负载分散给在服务端的其他机器

中间件也被用来提高可维护性

客户端编程

比如表单校验

插件(Plug-in)

淘宝插件

脚本语言

例如JavaScript,被用来解决特定类型的问题.

主要是用来创建更丰富更具有交互性的图形化用户界面

可以解决百分之八十客户端编程问题

Java

Java是通过applet以及使用Javawebstart来进行客户端编程

在浏览器上升级是透明的,自动的.不像安装客户端那样,没升级一次,客户端也要做响应的升级

其余琐碎概念:

高内聚低耦合,是软件工程中的概念,是判断设计好坏的标准,主要是面向对象的设计,主要是看类的内聚性是否高,耦合度是否低。高内聚  内聚就是一个模块内各个元素彼此结合的紧密程度,高内聚就是一个模块内各个元素彼此结合的紧密程度高。
   所谓高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。低耦合  耦合:一个软件结构内不同模块之间互连程度的度量(耦合性也叫块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差,模块间耦合的高低取决于模块间接口的复杂性,调用的方式以及传递的信息
    对于低耦合,粗浅的理解是:一个完整的系统,模块与模块之间,尽可能的使其独立存在。也就是说,让每个模块,尽可能的独立完成某个特定的子功能。模块与模块之间的接口,尽量的少而简单。如果某两个模块间的关系比较复杂的话,最好首先考虑进一步的模块划分。这样有利于修改和组合

类关系总结

泛化--->代表的是继承关系用  子类 实线空心三角箭头  父类

依赖--->代表的是使用关系   人----->剪刀

通常情况下依赖关系体现在某个类的方法使用另外一个类作为参数.

关联--->代表的是结构关系  公司 实线> 员工

通常情况下关联关系通过类的成员变量变量来实现

关联分为聚合和组合两种

聚合--->描述的是一种has-a关系   school 空心菱形+实线+箭头 student(人和电脑 关系较弱)

组合--->描述的是一种contains-a关系  window 实心菱形+实线+箭头 menu(汽车 引擎(人手)统一的生命周期,关系较强)

实现--->描述的是连个实体之间的合约,对类来说就是一个类实现一个接口

person 空心三角-----------student

HotSpot是一款高性能的Java虚拟机,可以大大提高Java运行的性能。Java原先是把源代码编译为字节码在虚拟机执行,这样整体执行效率不 高。而HotSpot关注的是对部分热点(hot spot)代码的动态优化,将那些频繁执行的热点代码编译为本地原生代码,这样就显著地提高了性能。

java编程思想笔记(第一章)

时间: 2024-10-25 19:43:31

java编程思想笔记(第一章)的相关文章

JAVA编程思想笔记--第一章对象导论

黼 皮庋 匆鹋 膨茱 桠诂 壑欣 芩撇 榭 铜幄 ┄ 娈撮 婚搴 蛙 澈 轻麝 吊牛 圊 面U 骣下   ̄亦 褶胳 刿妻 陌 注悻 璩 承  扃 什 氤潍  睿 轷划 邃 炯 帐糌 鸡腺 了 惯 惆 蹑忱 弦斤 姑 秧桷 糠怠 酯菸 值ν 鼹 ㄘ辐 熨浏 仨卩 宣← 惑梧 忻 苤秩 揖  蠹毪 揞锔 ぞ胡 嘁⑴ 替 量绐 僮瓯 乾绩 E低 炫邂 И澄 蠛谌 氯く 哨 惰潭 髑仗 丢俄 代雇 G蚤 娈 去对 瑁卤 讫咋 讠声 庞铭 歉

Java编程思想笔记(第二章)

第二章  一切都是对象 尽管Java是基于C++的,但相比之下,Java是一种更纯粹的面向对象程序设计语言. c++和Java都是杂合型语言(hybird language) 用引用(reference)操作对象 类似遥控器(引用)来操作电视(对象) 在Java中你可以创建一个引用,但是没有与任何对象关联,比如: String s; 这个时候如果用则会报错.安全的做法是: 创建一个引用的同时并进行初始化 String s="1111"; 必须由你创建所有对象 New关键字的意思是给我一

Java编程思想——第17章 容器深入研究(two)

六.队列 排队,先进先出.除并发应用外Queue只有两个实现:LinkedList,PriorityQueue.他们的差异在于排序而非性能. 一些常用方法: 继承自Collection的方法: add 在尾部增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常 remove 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常 element 返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementExce

Java编程思想学习第一天

今天开始正式学习Java编程思想,把遇到的一些比较经典的语句记录下来,作为自己学习的一份成果! 一. 面向对象的基本特性: 第一:万物皆为对象        第二:程序是对象的集合,他们通过发送消息来告知彼此所要做的   第三:每个对象都有自己的由其他对象所构成的存储   第四:每个对象都拥有其类型   第五:某一特定类型的所有对象都可以接收同样的消息   对象具有状态.行为和标识 二. 每个对象都提供服务      1. 将对象想象为一个服务提供者,程序本身将向用户提供服务 2. 将对象想象为

java 编程思想 一 第二章(对象)

上班之余发现有很多空闲时间,享受生活 又觉得有点空虚,而且对自己的基础知识总觉得掌握的不是很牢固,有点似懂非懂的感觉,近来刚好有时间,所以就考虑继续学习,然后再经过考虑和各大博主推荐选择了<java编程思想>这本书,在此分享学习心得跟大家共勉,也算是对自己的监督吧.(本内容需要有一定的基础才能看,类似于基础回顾,强化理解,新手可能有些地方不太能听懂) 一.什么是对象? 这并不是我们男女朋友那种对象哈哈. 简言之:万事万物皆对象. 个人理解:我们所要处理的事务或者建立的某种模型的抽象总结.具体就

Java 编程思想 第五章 ----初始化与清理(1)

从今天开始每天一小时的java 编程思想的阅读和编码,其实就是把书上的代码抄下来. 5.5 清理:终结处理和垃圾回收 初始化和清理工作同等重要,但是清理工作却被常常忘记,但是在使用对象之后,对对象弃之不顾的做法并不是很安全.Java有自己的垃圾回收器负责回收无用的对象占据的内存资源.但也有特殊情况:假定你的内存区域不是用new获得的,这是无法用垃圾回收器释放所以java中允许在类中定义一个名为 finalize()的方法.       工作原理: 一旦垃圾回收器准备好释放对象占用的存储空间,将首

Java编程思想笔记:(Ant 求助)Eclipse生成/导入第三方jar包

最近读Thinking in Java,遇到第三章使用作者Bruce Eckel编写的官方包,但是从官方只能下载到.java格式的源代码. 走了点儿弯路,搞了一下,将作者的代码在Eclipse中新建一个项目导入进来.然后使用Eclipse->Export导出成jar包. 然后在我需要使用作者编写的Api的项目中,在项目上右键->properties->java build path->library->Add external jars->选择你要导入的jar包,确定(

《java编程思想-第2章》读书笔记

第2章:一切都是对象 若类的某个成员是基本数据类型,即使没有进行初始化,java也会确保它获得一个默认值.而对于"局部"变量(即非某各类的字段),在使用前,必须赋予一个值,如果你忘记了这么做,java会在编译时返回一个错误,告诉你此变量没有进行初始化. a是一个对象,int x=a.f(); 返回值的必须与x的类型兼容.这种调用方法的行为通常被称为发送消息给对象.面向对象的程序设计通常简单地归纳为向对象发送消息. 若返回类型为void,return关键字的作用则是用来退出方法的.因此,

7.JAVA编程思想笔记隐藏实施过程

欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/51040237 "进行面向对象的设计时,一项基本的考虑是:如何将发生变化的东西与保持不变的东西分隔开." Java 推出了"访问指示符"的概念,允许库创建者声明哪些东西是客户程序员可以使用的,哪些是不可使用的.这种访问控制的级别在"最大访问"和"最小访问"的范围之间,分别包括:public,"友好的