热门标签 | 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编程思想笔记(第一章)


推荐阅读
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文介绍了指针的概念以及在函数调用时使用指针作为参数的情况。指针存放的是变量的地址,通过指针可以修改指针所指的变量的值。然而,如果想要修改指针的指向,就需要使用指针的引用。文章还通过一个简单的示例代码解释了指针的引用的使用方法,并思考了在修改指针的指向后,取指针的输出结果。 ... [详细]
  • 本文内容为asp.net微信公众平台开发的目录汇总,包括数据库设计、多层架构框架搭建和入口实现、微信消息封装及反射赋值、关注事件、用户记录、回复文本消息、图文消息、服务搭建(接入)、自定义菜单等。同时提供了示例代码和相关的后台管理功能。内容涵盖了多个方面,适合综合运用。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
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社区 版权所有