版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java开发基础第1页,共80页。目录第1章 Java体系结构第2章 基本程序结构设计第3章 对象与类第4章 继承第5章 接口与内部类第6章 事件处理第7章 异常与调试第8章 流与文件第2页,共80页。Java体系结构Java体系结构包括如下四大类技术:Java程序设计语言Java class文件格式Java APIJava 虚拟机第3页,共80页。Java体系结构(续)第4页,共80页。目录第1章 Java体系结构第2章 基本程序结构设计第3章 对象与类第4章 继承第5章 接口与内部类第6章 事件处理第7章 异常与调试第8章 流与文件第5页,共80页。大纲数据类型变量运算符字符串注释输入输出
2、控制流程数组第6页,共80页。数据类型数据类型整型浮点型char型boolean型TypeStorage RequirementRangeInt4 bytes2,147,483,648 to 2,147,483, 647 (just over 2 billion)Short2 bytes32,768 to 32,767Long8 bytes9,223,372,036,854,775,808 to 9,223,372,036,854,775,807Byte1 byte128 to 127TypeStorage RequirementRangefloat4 bytesapproximately 3
3、.40282347E+38F (67 significant decimal digits)double8 bytesapproximately 1.79769313486231570E+308 (15 significant decimal digits)Char :长度 2字节无符号整型 0 65535Boolean:true 、 false第7页,共80页。数据类型数据类型操作注意事项尽量使用适合长度的数据类型操作尽量使用约定俗成的数据类型做常用操作注意数据操作时可能发生的数据溢出及除0错误进行金额操作时避免使用float 和 double,使用无损精度操作的大数值类型 BigInteg
4、er 和 BigDecimal第8页,共80页。变量变量初始化变量常量注意定义变量时尽量赋予初始化值变量的命名要简明达意遵守变量命名的大小写规范使用合适的描述符,尽可能在使用变量时定义,减小可见性第9页,共80页。运算符运算符算术运算符自增自减运算符关系运算符与boolean运算符位运算符运算相关注意事项使用JDK库实现常用算法及函数数值类型的自动转换规则强制类型转换及截位枚举类型的使用第10页,共80页。字符串字符串代码点与代码单元字符子串与拼接相等的比较注意事项编码转换方法子串下标计算拼接的性能String 方法 intern() 的应用第11页,共80页。注释注释单行注释多行注释文档注释
5、注意多行注释不能嵌套方法及类说明尽量采取文档注释,并标注相关内容 (author,see )除了JDK1.5的标注Annotation外,注释不包括在编译后文件中第12页,共80页。输入输出输入输出Java 库提供了丰富的IO操作流包括如下:数据流文本流字符流Zip文件流应用范围文件管理网络数据传输对象序列反序列化压缩解压等第13页,共80页。流程控制控制流程一条件控制第14页,共80页。流程控制控制流程二循环控制第15页,共80页。流程控制控制流程三多重选择第16页,共80页。目录第1章 Java体系结构第2章 基本程序结构设计第3章 对象与类第4章 继承第5章 接口与内部类第6章 事件处理
6、第7章 异常与调试第8章 流与文件第17页,共80页。大纲对象构造顺序方法参数传递:按值调用类设计基本原则第18页,共80页。对象构造顺序对象构造顺序类装载时,按类声明中出现的次序执行静态初始化块或静态初始化语句。对象构造时:所有数据域初始化为默认值按类声明中出现的次序执行初始化块或初始化语句。如果构造器第一行调用了第二个构造器,则跳转到第二个构造器中执行,直到返回。执行这个构造器的主体部分。注点事项对象构造器中显式调用另一构造器时,必须在对象构造器的第一行代码中。当类声明中同时存在初始化语句与初始化域中,变量初始化的代码的次序至关重要。第19页,共80页。大纲对象构造顺序方法参数传递:按值调
7、用类设计基本原则第20页,共80页。方法参数传递:按值调用一个方法不能修改一个基本数据类型的参数一个方法可以改变一个对象参数的状态一个方法不能让对象参数的引用到一个其它对象第21页,共80页。大纲对象构造顺序方法参数传递:按值调用类设计基本原则第22页,共80页。类设计基本原则类设计的基本原则单一职责原则(SRP):一个类应该仅有一个引起它变化的原因。开放-封闭原则(OCP):一个类对于扩展时开放的,对于更改是封闭的。Liskov替换原则(LSP):子类必须能够替换掉它们的基类。依赖倒置原则(DIP):高层模块不应该依赖于低层模块;抽象类不应该依赖于其细节,细节。接口隔离原则(ISP):不应该
8、强迫客户依赖于它们不用的方法第23页,共80页。类设计基本原则(续)包设计的基本原则包内聚性原则(包粒度)重用发布等价原则(REP):重用的粒度就是发布的粒度。共同重用原则(CRP):一个包中的所有类应该是共同重用的。如果重用了包中的一个类,那么就要重用包中的所有类。共同封闭原则(CCP):包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其它的包不造成任何影响。考虑可重用性与可开发性的平衡。包耦合性原则(包稳定性)无环依赖原则(ADP):在包的依赖关系图中不允许存在环。稳定依赖原则(SDP):朝着移定的方向进行依赖。不稳定性I=
9、Ce/(Ca+Ce)稳定抽象原则(SAP):包的抽象程度应该与其稳定程度一致。抽象度A=Na/Nc第24页,共80页。目录第1章 Java体系结构第2章 基本程序结构设计第3章 对象与类第4章 继承第5章 接口与内部类第6章 事件处理第7章 异常与调试第8章 流与文件第25页,共80页。大纲继承的介绍Java 继承的约束继承的使用继承与模式反射枚举第26页,共80页。继承的介绍继承是面向对象编程的一块基石利用已存在的类,复用这些类的方法和域利用继承,一些共性的特征可以抽象到超类,子类继承超类实现特有的属性Java 中所有的对象都继承至 java.lang.Object ,因此都拥有toStri
10、ng() , equals() ,wait() 等方法第27页,共80页。继承的约束不能实现多继承父类提供了参数构造函数,子类必须实现子类不能降低父类方法的可见域子类不能抛出比父类构造函数或方法更多的异常子类不能扩展父类的 final 方法第28页,共80页。继承的使用继承增加了重用代码,减少子类编码把数据、行为和/或接口的共性尽可能地放到继承层次体系的高端 继承树的层次不能太深复杂的继承树提高维护的复杂性继承树的上层尽量为抽象层可以提高系统间的松耦合继承打破了对象的封装子类可以访问父类的实现,父类的改动将会对子类产生影响继承的动态绑定可以使程序灵活,更易于扩展尽量减少定义域对子类可见(fin
11、al 除外),减少数据被误写入危险,可提供读写方法功子类操作第29页,共80页。继承与模式模版模式第30页,共80页。继承与模式抽象工厂模式第31页,共80页。继承与模式适配器模式第32页,共80页。继承与模式策略模式 第33页,共80页。开发相关Java 中不允许多继承,但允许实现多个接口Java中,我们可以声明一个类扩展(extends)另一个类 ,继承的子类拥有访问超类的 protected 域的权限 ,并可以覆写已有方法或添加新的方法继承使用应谨慎,不要滥用继承。第34页,共80页。反射允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,并可于
12、运行时改变fields内容或唤起 methods。 可动态获取的内容包括modifiers(诸如public, static )superclass(例如Object)interfaces(例如Cloneablefields和methods等第35页,共80页。目录第1章 Java体系结构第2章 基本程序结构设计第3章 对象与类第4章 继承第5章 接口与内部类第6章 事件处理第7章 异常与调试第8章 流与文件第36页,共80页。大纲接口与抽象类的选择克隆及其注意事项接口与回调内部类、局部类、匿名类JDK的Proxy与CGLib的动态代理区别第37页,共80页。接口与抽象类的选择基本原则正确、合
13、理地理解领域本质与设计意图。在接口和抽象类的选择上,必须遵守这样一个原则:行为模型应该总是通过接口而不是抽象类定义。合理理解OCP原则、ISP原则考虑因素是否可能被多继承是否有默认行为行为集合是否已稳定“is a ”还是“like a”关系第38页,共80页。大纲接口与抽象类的选择克隆及其注意事项接口与回调内部类、局部类、匿名类JDK的Proxy与CGLib的动态代理区别第39页,共80页。克隆及其注意事项浅克隆与深克隆默认实现是浅克隆(本地方法实现)(java.util.AbstractMap默认实现是浅克隆)如果原始对象与浅克隆对象共享的子对象是不可变的,则不会产生负面问题。采用序列化方法
14、实现深度克隆,但不推荐。如com.kingdee.util. ObjectUtils.createCopy(Object o)注意事项避免死循环应用单例模式时,需注意屏蔽clone方法第40页,共80页。大纲接口与抽象类的选择克隆及其注意事项接口与回调内部类、局部类、匿名类JDK的Proxy与CGLib的动态代理区别第41页,共80页。接口与回调回调实现方法模板方法,如:BOS的Entity方法生成的代码。注入方式,如:Observer设计模式动态代理与拦截器方法注意事项合理利用接口,避免写僵硬、强藕合代码。选用合适的回调实现方式,避免写侵入式代码。第42页,共80页。大纲接口与抽象类的选择克
15、隆及其注意事项接口与回调内部类、局部类、匿名类JDK的Proxy与CGLib的动态代理区别第43页,共80页。内部类、局部类、匿名类内部类编译器会为非静态的内部类添加一个对外围类的隐式引用。内部类是一种编译器现象,与虚拟机无关。局部类不能用可见性说明符进行声明。可访问final类型的局部变量。运行时,虚拟机在方法参数变量释放之前对引用的局部变量进行备份。第44页,共80页。大纲接口与抽象类的选择克隆及其注意事项接口与回调内部类、局部类、匿名类JDK的Proxy与CGLib的动态代理区别第45页,共80页。JDK的Proxy与CGLib的动态代理区别JDK的Proxy只能实现基于接口的代理一个代
16、理类仅有一个调用处理器(InvoctionHandler)的实例变量代理类仅覆盖Object类的toString/equals/hashCode方法,其它的方法没有重定义对于特定的类加载器和给定的一组接口而言,只有一个代理类。如果代理类实现的所有接口都是public,那代理类不属于特定的;否则,所有非公有的接口都必须属于同一个包,同时,代码类也属于这个包。存在同签名方法时,接口的顺序至关重要。CGLib可以采用实现接口,或继承父类方式实现代理第46页,共80页。目录第1章 Java体系结构第2章 基本程序结构设计第3章 对象与类第4章 继承第5章 接口与内部类第6章 事件处理第7章 异常与调试
17、第8章 流与文件第47页,共80页。事件处理事件处理与 MVCModel是代表组件状态和低级行为的部分,它管理着自己的状态并且处理所有对状态的操作 View代表了管理model所含有的数据的一个视觉上的呈现。一个Model可以有一个以上的View Controller管理着model和用户之间的交互的控制。它提供了一些方法去处理当model的状态发生了变化时的情况 运作时序按钮 model 保存按钮的内部状态及行为控制器在发生按钮点击事件后将事件给模型,模型根据行为更新内部状态。控制器通知视图改变按钮的显示视图根据按钮的模型更新显示第48页,共80页。事件处理事件的继承模型第49页,共80页。
18、事件处理组件的事件处理事件类型监听器适配器ActionEvent ActionListener AdjustmentEvent AdjustmentListener FocusEvent FocusListener FocusAdapter ItemEvent ItemListener KeyEventKeyListener KeyAdapter MouseEventMouseListenerMouseAdapterMouseMotionListenerMouseMotionAdapterMouseWheelEventMouseWheelListenerWindowEventWindowLis
19、tenerWindowAdapterWindowFocusListenerWindowStateListener第50页,共80页。目录第1章 Java体系结构第2章 基本程序结构设计第3章 对象与类第4章 继承第5章 接口与内部类第6章 事件处理第7章 异常与调试第8章 流与文件第51页,共80页。大纲Error与Exception区别Exception处理基本原则StackOverflowError与OutOfMemoryErrorDebug基本技巧以及如何在Eclipse进行调试Logger使用注意事项Assert使用注意事项第52页,共80页。Error与Exception区别Erro
20、rError类层次结构描述了Java运行时系统的内部错误和资源耗尽错误。ExceptionRuntimeException:由程序错误导致的异常Checked Exception:某些情况下可正确运行,而在某些情况下导致的异常Checked Exception的审查是编译器行为出现RuntimeException问题,一定是你的问题第53页,共80页。Error与Exception区别常见Error常见RuntimeExceptionClassCastException, IllegalArgumentException, ArrayIndexOutOfBoundsException, Str
21、ingIndexOutOfBoundsException, MissingResourceException, NoSuchElementException, NullPointerException第54页,共80页。Error与Exception区别疑难Error/ExceptionClassNotFoundException显式类装载失败NoClassDefFoundError隐式类装载失败,或初始化失败后置脏UnsatisfiedLinkError 对于声明为 native 的方法,JVM找不到和它对应的本机语言定义在Windows系列OS中,多次加载dll。ExceptionInIn
22、itializerError 如果初始化器突然完成,抛出一些异常 E,而且 E 的类不是 Error 或者它的某个子类,那么就会创建ExceptionInInitializerError 类的一个新实例,并用 E 作为参数,用这个实例代替 E。 ClassCircularityError类或接口由于是自己的超类或超接口而不能被装入。 第55页,共80页。大纲Error与Exception区别Exception处理基本原则StackOverflowError与OutOfMemoryErrorDebug基本技巧以及如何在Eclipse进行调试Logger使用注意事项Assert使用注意事项第56页
23、,共80页。Exception处理基本原则基本原则敏感资源的释放、或备份上下文环境后的现场恢复,要在finally子句中完成。不要轻易吞并/压制异常处理异常时,先测特定异常,后测通用异常检测错误时,”苛刻”要比放任更好早抛出,晚捕获第57页,共80页。大纲Error与Exception区别Exception处理基本原则StackOverflowError与OutOfMemoryErrorDebug基本技巧以及如何在Eclipse进行调试Logger使用注意事项Assert使用注意事项第58页,共80页。StackOverflowErrorStackOverflowError解读:栈溢出,程序所
24、需的栈空间大于为JVM所配置的栈空间引发原因程序死循环过深的方法调用,特别是递归调用JIT编译后代码的问题解决办法:检查程序是否存在死循环通过-Xss, -Xoss参数为JVM配置栈空间-Xoss参数供本地调用线程栈所用,即供Java代码调用本地库时的过程调用,如:IBM JDK默认-Xoss值为512k,用法如-Xoss512k-Xss参数供Java线程栈所用,即用于Java方法调用时追踪变量的状态,如: IBM JDK默认-Xss值为400k,用法如-Xss400k第59页,共80页。OutOfMemoryErrorOutOfMemoryError解读:堆空间不足,JVM不能够继续为程序分
25、配对象所需的椎空间,并且没有其它的内存空间供垃圾回收器回收。引发原因JVM堆空间分配不足程序存在”内存泄漏”解决办法:通过-Xms, -Xmx参数为JVM配置Java堆空间审查程序中可能存在的”内存泄漏”,重点是Map,Collection等变量所钩住本该回收的对象。合理利用WeakReference, SoftReference第60页,共80页。大纲Error与Exception区别Exception处理基本原则StackOverflowError与OutOfMemoryErrorDebug基本技巧以及如何在Eclipse进行调试Logger使用注意事项Assert使用注意事项第61页,共
26、80页。Debug基本技巧以及如何在Eclipse进行调试Debug基本技巧-verbose启动JVM,观察类加载过程:检查类路径设置是否正确使用断言。以Debug级别记录日志-Xdebug参数启动JVM进行远程调试,如: -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8888JDK5.0中Dcom.sun.management.jmxremote选项启用JVM,然后用JConsole工具观察内存消耗、线程使用、类加载等情况第62页,共80页。Debug基本技巧以及如何在Eclipse进行调试如何在Eclips
27、e进行调试第63页,共80页。Debug基本技巧以及如何在Eclipse进行调试如何在Eclipse进行调试察看”变量”视图中的内容在”断点”视图中设置某一类Exception的断点在”表达式”视图中增加要观察的表达式为”断点”设置属性可在”显示”视图中对当前上下文的内容进行评估充分利用”剪贴薄”(或”草稿纸”)功能,对无法确定的用法或内容进行试算或尝试第64页,共80页。大纲Error与Exception区别Exception处理基本原则StackOverflowError与OutOfMemoryErrorDebug基本技巧以及如何在Eclipse进行调试Logger使用注意事项Assert
28、使用注意事项第65页,共80页。Logger使用注意事项Logger类型JDK Logger日志记录器分成7级:SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINESTLog4j日志记录器分成5级FATAL, ERROR, WARNING, INFO, DEBUG注意事项(log4j)logger.debug(arg1)一类,应加上 if (log.isDebugEnable() 之类的判断,以免在运行不必要得计算 arg1(log4j)要完整地记录下异常链,如应用logger.error(“error”,e)方式用System.out方式进行调试的
29、,应在发布前屏蔽配置log4j参数时,记录级别要合理第66页,共80页。大纲Error与Exception区别Exception处理基本原则StackOverflowError与OutOfMemoryErrorDebug基本技巧以及如何在Eclipse进行调试Logger使用注意事项Assert使用注意事项第67页,共80页。Assert使用注意事项注意事项断言失败是致命的、不可恢复的错误断言检查只用于开发和测试阶段启用或禁用断言是类装载器的功能不要在断言中修改变量的值断言只是测试和调试阶段使用的战术性工具第68页,共80页。目录第1章 Java体系结构第2章 基本程序结构设计第3章 对象与类
30、第4章 继承第5章 接口与内部类第6章 事件处理第7章 异常与调试第8章 流与文件第69页,共80页。大纲InputStream/OutputStream注意事项NIO对象序列化与外部化第70页,共80页。InputStream/OutputStream注意事项注意事项不论是read方法还是write方法都是线程阻塞模型及时关闭流对象,以释放操作系统资源对于输出流,在不关闭文件时,如果不刷新(flush)输出流占用的缓存区,则可能最后一个字节包永远不会被送出在Java中,所有数据文件都按高字节前存的方法存储StringBuilder是线程不安全的。流类关注的是文件内容,而File类关注的是文件
31、在磁盘上的存储第71页,共80页。大纲InputStream/OutputStream注意事项NIO对象序列化与外部化第72页,共80页。NIONIO支持的特性内存映射文件为文件获取通道(channel)。通道是对于磁盘文件的抽象,允许访问操作系统的特性,如文件间的内存映射、文件锁定和快速数据传输通过FileChannel类的map方法获得MappedByteBuffer.(有只读、读写、私有三种映射模式)文件锁定通过FileChannel的lock、trylock获得共享锁或排他锁文件锁的具体实现依赖于操作系统文件锁是整于JVM持有字符集编码和解码非阻塞IO第73页,共80页。NIOBuff
32、er数据结构第74页,共80页。大纲InputStream/OutputStream注意事项NIO对象序列化与外部化第75页,共80页。对象序列化与外部化注意事项对象序列化采用了是一种特殊文件格式存储对象不建议使用对象序列化来实现对象的持久化序列化对象序列化时,既保存对象的状态,也保存类的描述信息:类名、serialVersionUID、非私有的方法标志信息、非transient的数据域(不区分可见性)序列化时,保存的类描述直到实现Serializable接口的父类为止重载对象状态的序列化过程:private void writeObject(java.io.ObjectOutputStrea
33、m out) throws IOException private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException;ObjectOutputStream.defaultWriteObject 方法序列化对象的状态,不区分子类或父类的数据域。仅包含实现Serializable接口的类其及子类不实现Serializable接口的父类必须有一个子类可访问到的无参构造方法。否则运行时抛InvalidClassException第76页,共80页。对象序列化与外部化序列化拦截序列化对象:拦截参与序列化的对象:ANY-ACCESS-MODIFIER Object writeReplace()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 跨部门技术支持流程优化手册
- 资产保障与服务保障承诺书5篇
- 关于产品线调整的函6篇
- 客户数据保护服务承诺书(5篇)
- 企业公共关系危机应对与管理方案模板
- 勤学善思追求卓越小学主题班会课件
- 办公室工作流程优化指南手册
- 企业战略执行诚信保证承诺书6篇
- 远离溺水危险守护生命之光小学主题班会课件
- 市场营销策划案执行效果评估标准化模板
- 2026江西中江国际工程有限公司社会招聘4人备考题库含答案详解(考试直接用)
- 2026云南曲靖市沾益区高投物业服务有限公司物业工作人员招聘6人考试备考试题及答案解析
- 2026年高考语文复习:高频易错错别字
- 2025年事业单位卫生类医学影像专业知识考试试卷与解析
- SLT 336-2025水土保持工程全套表格
- 50吨汽车吊吊装专项施工方案
- 2026江西寻乌县公安局招聘留置看护队员3人备考题库及一套答案详解
- (2025年)电子信息工程专业能力测试试卷及答案
- 2025华电能源股份有限公司校园招聘笔试历年备考题库附带答案详解2套试卷
- 【《“养老服务助手”微信小程序的设计与实现》7600字】
- 生产现场文件制度
评论
0/150
提交评论