热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

AlanKay第一个定义了面向对象的语言1.万物皆对象2.程序是对象的集合,他们彼此通过发送消息来调用对方.3.每个对象都拥有由其他对象所构成的存储4.每个对象都拥有其类型(TYp

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编程思想笔记(第一章),,

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


推荐阅读
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了Java的集合及其实现类,包括数据结构、抽象类和具体实现类的关系,详细介绍了List接口及其实现类ArrayList的基本操作和特点。文章通过提供相关参考文档和链接,帮助读者更好地理解和使用Java的集合类。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • 标题: ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • PDF内容编辑的两种小方法,你知道怎么操作吗?
    本文介绍了两种PDF内容编辑的方法:迅捷PDF编辑器和Adobe Acrobat DC。使用迅捷PDF编辑器,用户可以通过选择需要更改的文字内容并设置字体形式、大小和颜色来编辑PDF文件。而使用Adobe Acrobat DC,则可以通过在软件中点击编辑来编辑PDF文件。PDF文件的编辑可以帮助办公人员进行文件内容的修改和定制。 ... [详细]
author-avatar
清清果冻儿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有