




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
java 编程思想读书笔记 Java 是一门面向对象编程语言,不仅吸收了 C+语言 的各种优点,还摒弃了 C+里难以理解的多继承、指针等概 念,因此 Java 语言具有功能强大和简单易用两个特征。品 才网整理了 JAVA 的编程思想读书笔记,欢迎大家阅读。 java 编程思想读书笔记 对象具有状态,行为,标识.对象 的五个基本特性: 万物皆对象,抽取待求解问题的任何概念化构件,将其 表示为程序中的对象 程序是对象的集合,他们通过发送消息来告知彼此所要 做的 每个对象都有自己的由其他对象所构成的存储,创建包 含所有对象的包的方式来创建新类型的对象 每个对象都拥有其类型 某一特定类型的所有对象都可以接收同样的消息 1。java 还有个“缺省“的访问权限,如果你没用 public、protected、private 的话,那就是指它了。通常 把它称为 package 访问权限。因为同属这个 package 的类 可以访问这个 package 中其它类的“缺省“权限的成员,但 是出了这个 package,它们就都是 private 的了。 2。多态性,处理类系的时候,通常你不用把它当作某 个具体的类型,只要把它当作基类对象就可以了,即把泛 型的基类当作派生类来用。非 oop 的编译器的做法是前绑 定,即编译器会产生那个名字的函数调用,而连接器负责 将这个调用解析成须执行的代码的绝对地址。oop 的编译器 用了后绑定,即当你向某个对象送了一个消息后,不到运 行时,系统不能确定到底调用哪段代码。java 用存储在对 象中的信息来计算方法的地址,因此每个对象的运行都会 不同。后绑定是 java 的缺省行为,c+中必须用 virtual 声明。 3。abstract 关键词声明类为抽象类,编译器会阻止任 何人创建 abstract 类的对象,而只是把其派生类的对象上 传给它。abstract 也可以声明方法,表示这个类所派生的 所有类都有这个方法,但是它的实现不在这里。abstract 方法只能存在于 abstract 类中。 4。interface 关键词是对 abstract 类的概念的深化, 它不允许你实现任何方法,只作为接口使用.可以继承多个 接口,java 中无类多重继承。 5。c+支持的变量有自动、静态、寄存器和堆,java 只支持堆变量,每次创建对象的时候都要用 new 来动态分 配堆内存。 6。容器和迭代器:容器:c+标准模板类库 stl = java 标准类库的容器类,迭代器:将基于不同数据结构的 容器抽象为一个简单线性序列的类。 7。java 是单根继承体系,object 作为最终基类使所 有对象都具有某些基本操作。单根继承和系统通过 reference 操控对象,使垃圾回收器可以释放堆内存。 8。java 容器只持有 object 对象,单根继承使它能持 有任何对象上传只要把对象的 reference 直接放入即可, 取对象时,必须知道它原有的类型,从容器中取出对象的 reference 然后强制转换为原因类型(下传:由基类到其派 生类)。 9。参数化类型:能够根据需要由编译器自动指派类型 的类,c+的模板 template 即参数化类型。java 暂不支持 10。异常是一种能从错误发生的地方被抛出的对象, 并被能解决这类问题的异常处理程序所捕获,异常肯定能 得到处理,并且能够从错误状态下恢复。java 的异常处理 是从底层开始的,而且还不能不用,否则就不能编译通过。 11。java 语音内置了多线程支持,线程被表示为对象, java 还有一定的资源锁定功能,可以通过 synchronized 关 键字锁定对象内存。 12。持久性:java 可以通过对象的序列化或 java 数据 对象来实现把对象从磁盘中存储和提取。 13。传统 w/s:浏览器上送 web 服务器的数据由 web 服 务器上的通用网关接口程序 CGI 处理,常用语言 perl、python、C+等。 14。客户端编程:插件:可以为浏览器添加新的功能, 甚至创造新的客户端编程语言。脚本语言:把客户端的源 代码直接嵌入到 html 页面中,html 页面显示的时候自动激 活插件解释这些程序。常用脚本语言 javascript、vbscript、tcl/tk 等。java:可以通过 applet 和 java web start 进行客户端编,applet 是一个 只能运行在 web 浏览器里的小程序,applet 是被编译过的 代码,作为 web 页面的一部分自动下载,在被激活的时候 开始运行。java web start 分发在 web 浏览器外运行的独 立程序。Activex 操作上不受限制。 15。servlet 和 jsp 是使人们转向使用 java 开发网站 的主要原因。 java 编程思想读书笔记 Java 编程思想学习笔记 1面向对象和 JVM 基础 中的 4 种访问制权限: (1).public:最大访问控制权限,对所有的类都可见。 (2).protect:同一包可见,不在同一个包的所有子类 也可见。 (3).default:包访问权限,即同一个包中的类可以可 见。默认不显式指定访问控制权限时就是 default 包访问 控制权限。 (4).private:最严格俄访问控制权限,仅该类本身可 见,对外一切类都不可以访问(反射机制可以访问)。 2.面向对象编程中两种对象组合方式is-a 和 has-a: (1).is-a 组合:一个类继承具有相似功能的另一个类, 根据需要在所继承的类基础上进行扩展。 优点:具有共同属性和方法的类可以将共享信息抽象 到父类中,增强代码复用性,同时也是多态的基础。 缺点:子类中扩展的部分对父类不可见,另外如果共 性比较少的时候使用继承会增加冗余代码。 (2).has-a 组合:has-a 组合是在一个类中引用另一个 类作为其成员变量。 优点:可扩展性和灵活性高。在对象 组合关系中应优先考虑 has-a 组合关系。 缺点:具有共性 的类之间看不到派生关系。 3.多态: 在面向对象编程中,子类中拥有和父类相同方法签名 的方法称为子类方法覆盖父类方法,当调用子类方法的某 个操作时,不必明确知道子类的具体类型,只需要将子类 类型看作是父类的引用调用其操作方法,在运行时,JVM 会 根据引用对象的具体子类类型而调用应该的方法,这就是 多态。 多态的基础是 java 面向对象编程的晚绑定机制。编程 中有如下两种绑定机制: (1).早绑定:一般在非面向对象编程语言中使用,在 程序编译时即计算出具体调用方法体的内存地址。 (2).晚绑定:面向对象编程语言中经常使用,在程序 编译时无法计算出具体调用方法体的内存地址,只进行方 法参数类型和返回值类型的校验,在运行时才能确定具体 要调用方法体的内存地址。 单继承的优点: 相比于 C+的多继承,java 只支持类的单继承,java 中的所有类的共同基类是 Object 类,Object 类 java 类树 的唯一根节点,这种单继承有以下好处: (1).单继承可以确保所有的对象拥有某种共同的特性, 这样对于 JVM 虚拟机对所有的类进行系统级的操作将提供 方便,所有的 java 对象可以方便地在内存堆栈中创建,传 递参数也变的更加方便简单。 (2).java 的单继承使得实现垃圾回收器功能更加容易, 因为可以确保 JVM 知道所有对象的类型信息。 5.选择容器对象两个原则: (1).容器所能提供不同的类型的接口和外部行为是否 能够满足需求。 (2).不同容器针对不同的操作效率不同。 6.类型转换: Java 中有两种常见的类型转换:向上类型转换(upcast)和 向下类型转换(downcast): (1).向上类型转换(upcast): 向上类型转换是将子类对象强制类型转换为父类类型, 经典用法是面向对象的多态特性。向上类型转换时,子类 对象的特性将不可见,只有子类从父类继承的特性仍然保 持可见,向上类型转换时编译器会自动检查是否类型兼容, 通常是安全的。 (2).向下类型转换: 向下类型转换是将父类类型强制转换为子类类型,转 换过后父类中不可见的子类特性又恢复可见性,向下类型 转换时,编译器无法自动检测是否类型兼容,往往会产生 类型转换错误的运行时异常,通常不安全。 中 5 个存放数据的地方: (1).寄存器(Registers):位于 CPU 内部,是速度最快 的存储区,但是数量和容量有限。在 java 中不能直接操作 寄存器。 (2).栈(Stack):栈位于通用随机访问存储器 (General random-access memory,RAM,内存) 中,通过 处理器的栈指针访问,栈指针从栈顶向栈底分配内存,从 栈底向栈顶释放内存。栈是仅次于寄存器的速度第二快的 存储器,在 java 程序中,一般的 8 种 基本类型数据和对 象的引用通常存放在栈内存中,不通过 new 关键字的字符 串对象也是存放在栈的字符串池中。栈的优势是,存取速 度比堆要快,仅次于寄存器, 栈数据可以共享。但缺点是, 存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。 (3).堆(Heap):也是位于通用随机访问存储器 (General random-access memory,RAM,内存) 中的共享 内存池。Java 的堆是一个运行时数据区,类的对象从中分 配空间,凡是通过 new 关键字创建的对象都存放在堆内存 中,它们不需要程序代码来显式的 释放。堆是由垃圾回收 来负责的,堆的优势是可以动态地分配内存大小,生存期 也不必事先告诉编译器,因为它是在运行时动态分配内存 的,Java 的垃圾收集器 会自动收走这些不再使用的数据。 但缺点是,由于要在运行时动态分配内存,存取速度较慢。 (4).常量存储器(Constant storage):java 中的常量 是存放在系统内嵌的只读存储器中(read-only memory,ROM)的。 (5).非随机存储器(Non-RAM storage):对于流对象和 持久化对象,通常存放在程序外的存储器,如硬盘。 只处理 public 和 protected 访问控制权限的文档注释, private 和 default 权限的稳定注释将被忽略。 中赋值运算: 基本类型赋值是直接复制值,赋值操作后,相互不影 响。 引用类型赋值是复制引用值,相当于给对象取一个别 名,赋值之后两个引用指向同一个引用对象,相互之间有 影响。 在 Java 中,向方法传递引用类型参数会改变参数的值, 不让参数受到影响的解决方法:在方法内首先先将引用克 隆一份,然后操作克隆的对象。 10.移位运算: 左移运算符 右移运算符:将比特位右移指定位 数,如果是正数,左边第一位(符号位)补 0,其余位补 0, 如果是负数,左边第一位补 1,其余位补 0。右移一位相当 于除 2。 无符号右移运算符:将比特位右移指定位数,不论 是正数或者负数,左边移除位统统补 0。 中,比 int 类型小的原始类型(char、byte、short)进 行数学运算或者位运算时,数据类型首先转换成 int 类型, 然后进行相应的运算。 12.方法重载(overloading):方法同名,参数列表不 同称为方法重载,注意方法的返回值类型不同不能作为方 法重载。 中的析构函数: Java 中没有像 C/C+的析构函数,用来销毁不用的对 象是否内存空间,只有以下三个方法用于通知垃圾回收器 回收对象。 (1).finalize( )只是通知 JVM 的垃圾收集器当前的对 象不再使用可以被回收了,但是垃圾回收器根据内存使用 状况来决定是否回收。 finalize()最有用的地方是在 JNI 调用本地方法时 (C/C+方法),调用本地方法的析构函数消耗对象释放函数。 (2). ()是强制析构,显式通知垃圾回收器释放内存, 但是垃圾回收器也不一定会立即执行,垃圾回收器根据当 前内存使用状况和对象的生命周期自行决定是否回收。 (3).().gc()和()类似。 注意:这三个函数都不能保证垃圾回收器立即执行, 推荐不要频繁使用。 14.垃圾回收器原理: (1).引用计数(ReferenceCounting)垃圾回收算法: 一种简单但是速度较慢的垃圾回收算法,每个对象拥 有一个引用计数器 (Reference Counter),当每次引用附加到这个对象时, 对象的引用计数器加 1。当每次引用超出作用范围或者被设 置为 null 时,对象的引用计数器减 1。垃圾回收 器遍历整 个对象列表,当发现一个对象的引用计数器为 0 时,将该 对象移出内存释放。 引用计数算法的缺点是,当对象环状相互引用时,对 象的引用计数器总不为 0,要想回收这些对象需要额外的处 理。 引用计数算法只是用来解释垃圾回收器的工作原理, 没有 JVM 使用它实现垃圾回收器。 引用计数的改进算法: 任何存活的对象必须被在静态存储区或者栈(Stack)中 的引用所引用,因此当遍历全部静态存储区或栈中的引用 时,即可以确定所有存活的对象。每当 遍历一个引用时, 检查该引用所指向的对象,同时检查该对象上的所有
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 制水岗位培训题目及答案
- 指数函数高三题目及答案
- 虚拟现实行业市场趋势分析
- 2025年电工题库考试技巧及答案
- 2025年项目考试试题简答题及答案
- 2025年山西省阳泉市事业单位工勤技能考试题库及答案
- 2025年河津数学考试题及答案
- CN120091639B 接触孔形成方法及图像传感器 (合肥晶合集成电路股份有限公司)
- 2025年少先队小达人题库及答案
- 《夏天里的成长》课件 统编版语文六年级上册
- 北师大版(2024版)三年级上册第七单元第6节《生活中的小数》教学设计
- 研究生心理适应与卓越发展-南京大学中国大学mooc课后章节答案期末考试题库2023年
- 超高压线下有限净空内地连墙施工工法
- 附表耶鲁抽动程度综合量表
- HJX104桁架式泵吸泥机技术说明
- 食品安全 课件 高中主题班会
- YS/T 320-2007锌精矿
- YS/T 226.12-2009硒化学分析方法第12部分:硒量的测定硫代硫酸钠容量法
- GB/T 24218.3-2010纺织品非织造布试验方法第3部分:断裂强力和断裂伸长率的测定(条样法)
- 系统工程原理 - 国防科技大学信息系统与管理学院
- 博微配电网工程设计软件
评论
0/150
提交评论