




已阅读5页,还剩74页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,Java开发基础,1,学习交流PPT,目录,第1章Java体系结构第2章基本程序结构设计第3章对象与类第4章继承第5章接口与内部类第6章事件处理第7章异常与调试第8章流与文件,2,学习交流PPT,Java体系结构,Java体系结构包括如下四大类技术:Java程序设计语言Javaclass文件格式JavaAPIJava虚拟机,3,学习交流PPT,Java体系结构(续),4,学习交流PPT,目录,第1章Java体系结构第2章基本程序结构设计第3章对象与类第4章继承第5章接口与内部类第6章事件处理第7章异常与调试第8章流与文件,5,学习交流PPT,大纲,数据类型变量运算符字符串注释输入输出控制流程数组,6,学习交流PPT,数据类型,数据类型整型浮点型char型boolean型,Char:长度2字节无符号整型065535Boolean:true、false,7,学习交流PPT,数据类型,数据类型操作注意事项尽量使用适合长度的数据类型操作尽量使用约定俗成的数据类型做常用操作注意数据操作时可能发生的数据溢出及除0错误进行金额操作时避免使用float和double,使用无损精度操作的大数值类型BigInteger和BigDecimal,8,学习交流PPT,变量,变量初始化变量常量注意定义变量时尽量赋予初始化值变量的命名要简明达意遵守变量命名的大小写规范使用合适的描述符,尽可能在使用变量时定义,减小可见性,9,学习交流PPT,运算符,运算符算术运算符自增自减运算符关系运算符与boolean运算符位运算符运算相关注意事项使用JDK库实现常用算法及函数数值类型的自动转换规则强制类型转换及截位枚举类型的使用,10,学习交流PPT,字符串,字符串代码点与代码单元字符子串与拼接相等的比较注意事项编码转换方法子串下标计算拼接的性能String方法intern()的应用,11,学习交流PPT,注释,注释单行注释多行注释文档注释注意多行注释不能嵌套方法及类说明尽量采取文档注释,并标注相关内容(author,see)除了JDK1.5的标注Annotation外,注释不包括在编译后文件中,12,学习交流PPT,输入输出,输入输出Java库提供了丰富的IO操作流包括如下:数据流文本流字符流Zip文件流应用范围文件管理网络数据传输对象序列反序列化压缩解压等,13,学习交流PPT,流程控制,控制流程一条件控制,14,学习交流PPT,流程控制,控制流程二循环控制,15,学习交流PPT,流程控制,控制流程三多重选择,16,学习交流PPT,目录,第1章Java体系结构第2章基本程序结构设计第3章对象与类第4章继承第5章接口与内部类第6章事件处理第7章异常与调试第8章流与文件,17,学习交流PPT,大纲,对象构造顺序方法参数传递:按值调用类设计基本原则,18,学习交流PPT,对象构造顺序,对象构造顺序类装载时,按类声明中出现的次序执行静态初始化块或静态初始化语句。对象构造时:所有数据域初始化为默认值按类声明中出现的次序执行初始化块或初始化语句。如果构造器第一行调用了第二个构造器,则跳转到第二个构造器中执行,直到返回。执行这个构造器的主体部分。注点事项对象构造器中显式调用另一构造器时,必须在对象构造器的第一行代码中。当类声明中同时存在初始化语句与初始化域中,变量初始化的代码的次序至关重要。,19,学习交流PPT,大纲,对象构造顺序方法参数传递:按值调用类设计基本原则,20,学习交流PPT,方法参数传递:按值调用,一个方法不能修改一个基本数据类型的参数一个方法可以改变一个对象参数的状态一个方法不能让对象参数的引用到一个其它对象,21,学习交流PPT,大纲,对象构造顺序方法参数传递:按值调用类设计基本原则,22,学习交流PPT,类设计基本原则,类设计的基本原则单一职责原则(SRP):一个类应该仅有一个引起它变化的原因。开放-封闭原则(OCP):一个类对于扩展时开放的,对于更改是封闭的。Liskov替换原则(LSP):子类必须能够替换掉它们的基类。依赖倒置原则(DIP):高层模块不应该依赖于低层模块;抽象类不应该依赖于其细节,细节。接口隔离原则(ISP):不应该强迫客户依赖于它们不用的方法,23,学习交流PPT,类设计基本原则(续),包设计的基本原则包内聚性原则(包粒度)重用发布等价原则(REP):重用的粒度就是发布的粒度。共同重用原则(CRP):一个包中的所有类应该是共同重用的。如果重用了包中的一个类,那么就要重用包中的所有类。共同封闭原则(CCP):包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其它的包不造成任何影响。考虑可重用性与可开发性的平衡。包耦合性原则(包稳定性)无环依赖原则(ADP):在包的依赖关系图中不允许存在环。稳定依赖原则(SDP):朝着移定的方向进行依赖。不稳定性I=Ce/(Ca+Ce)稳定抽象原则(SAP):包的抽象程度应该与其稳定程度一致。抽象度A=Na/Nc,24,学习交流PPT,目录,第1章Java体系结构第2章基本程序结构设计第3章对象与类第4章继承第5章接口与内部类第6章事件处理第7章异常与调试第8章流与文件,25,学习交流PPT,大纲,继承的介绍Java继承的约束继承的使用继承与模式反射枚举,26,学习交流PPT,继承的介绍,继承是面向对象编程的一块基石利用已存在的类,复用这些类的方法和域利用继承,一些共性的特征可以抽象到超类,子类继承超类实现特有的属性Java中所有的对象都继承至java.lang.Object,因此都拥有toString(),equals(),wait()等方法,27,学习交流PPT,继承的约束,不能实现多继承父类提供了参数构造函数,子类必须实现子类不能降低父类方法的可见域子类不能抛出比父类构造函数或方法更多的异常子类不能扩展父类的final方法,28,学习交流PPT,继承的使用,继承增加了重用代码,减少子类编码把数据、行为和/或接口的共性尽可能地放到继承层次体系的高端继承树的层次不能太深复杂的继承树提高维护的复杂性继承树的上层尽量为抽象层可以提高系统间的松耦合继承打破了对象的封装子类可以访问父类的实现,父类的改动将会对子类产生影响继承的动态绑定可以使程序灵活,更易于扩展尽量减少定义域对子类可见(final除外),减少数据被误写入危险,可提供读写方法功子类操作,29,学习交流PPT,继承与模式,模版模式,30,学习交流PPT,继承与模式,抽象工厂模式,31,学习交流PPT,继承与模式,适配器模式,32,学习交流PPT,继承与模式,策略模式,33,学习交流PPT,开发相关,Java中不允许多继承,但允许实现多个接口Java中,我们可以声明一个类扩展(extends)另一个类,继承的子类拥有访问超类的protected域的权限,并可以覆写已有方法或添加新的方法继承使用应谨慎,不要滥用继承。,34,学习交流PPT,反射,允许程序在运行时透过ReflectionAPIs取得任何一个已知名称的class的内部信息,并可于运行时改变fields内容或唤起methods。可动态获取的内容包括modifiers(诸如public,static)superclass(例如Object)interfaces(例如Cloneablefields和methods等,35,学习交流PPT,目录,第1章Java体系结构第2章基本程序结构设计第3章对象与类第4章继承第5章接口与内部类第6章事件处理第7章异常与调试第8章流与文件,36,学习交流PPT,大纲,接口与抽象类的选择克隆及其注意事项接口与回调内部类、局部类、匿名类JDK的Proxy与CGLib的动态代理区别,37,学习交流PPT,接口与抽象类的选择,基本原则正确、合理地理解领域本质与设计意图。在接口和抽象类的选择上,必须遵守这样一个原则:行为模型应该总是通过接口而不是抽象类定义。合理理解OCP原则、ISP原则考虑因素是否可能被多继承是否有默认行为行为集合是否已稳定“isa”还是“likea”关系,38,学习交流PPT,大纲,接口与抽象类的选择克隆及其注意事项接口与回调内部类、局部类、匿名类JDK的Proxy与CGLib的动态代理区别,39,学习交流PPT,克隆及其注意事项,浅克隆与深克隆默认实现是浅克隆(本地方法实现)(java.util.AbstractMap默认实现是浅克隆)如果原始对象与浅克隆对象共享的子对象是不可变的,则不会产生负面问题。采用序列化方法实现深度克隆,但不推荐。如com.kingdee.util.ObjectUtils.createCopy(Objecto)注意事项避免死循环应用单例模式时,需注意屏蔽clone方法,40,学习交流PPT,大纲,接口与抽象类的选择克隆及其注意事项接口与回调内部类、局部类、匿名类JDK的Proxy与CGLib的动态代理区别,41,学习交流PPT,接口与回调,回调实现方法模板方法,如:BOS的Entity方法生成的代码。注入方式,如:Observer设计模式动态代理与拦截器方法注意事项合理利用接口,避免写僵硬、强藕合代码。选用合适的回调实现方式,避免写侵入式代码。,42,学习交流PPT,大纲,接口与抽象类的选择克隆及其注意事项接口与回调内部类、局部类、匿名类JDK的Proxy与CGLib的动态代理区别,43,学习交流PPT,内部类、局部类、匿名类,内部类编译器会为非静态的内部类添加一个对外围类的隐式引用。内部类是一种编译器现象,与虚拟机无关。局部类不能用可见性说明符进行声明。可访问final类型的局部变量。运行时,虚拟机在方法参数变量释放之前对引用的局部变量进行备份。,44,学习交流PPT,大纲,接口与抽象类的选择克隆及其注意事项接口与回调内部类、局部类、匿名类JDK的Proxy与CGLib的动态代理区别,45,学习交流PPT,JDK的Proxy与CGLib的动态代理区别,JDK的Proxy只能实现基于接口的代理一个代理类仅有一个调用处理器(InvoctionHandler)的实例变量代理类仅覆盖Object类的toString/equals/hashCode方法,其它的方法没有重定义对于特定的类加载器和给定的一组接口而言,只有一个代理类。如果代理类实现的所有接口都是public,那代理类不属于特定的;否则,所有非公有的接口都必须属于同一个包,同时,代码类也属于这个包。存在同签名方法时,接口的顺序至关重要。CGLib可以采用实现接口,或继承父类方式实现代理,46,学习交流PPT,目录,第1章Java体系结构第2章基本程序结构设计第3章对象与类第4章继承第5章接口与内部类第6章事件处理第7章异常与调试第8章流与文件,47,学习交流PPT,事件处理,事件处理与MVCModel是代表组件状态和低级行为的部分,它管理着自己的状态并且处理所有对状态的操作View代表了管理model所含有的数据的一个视觉上的呈现。一个Model可以有一个以上的ViewController管理着model和用户之间的交互的控制。它提供了一些方法去处理当model的状态发生了变化时的情况运作时序按钮model保存按钮的内部状态及行为控制器在发生按钮点击事件后将事件给模型,模型根据行为更新内部状态。控制器通知视图改变按钮的显示视图根据按钮的模型更新显示,48,学习交流PPT,事件处理,事件的继承模型,49,学习交流PPT,事件处理,组件的事件处理,50,学习交流PPT,目录,第1章Java体系结构第2章基本程序结构设计第3章对象与类第4章继承第5章接口与内部类第6章事件处理第7章异常与调试第8章流与文件,51,学习交流PPT,大纲,Error与Exception区别Exception处理基本原则StackOverflowError与OutOfMemoryErrorDebug基本技巧以及如何在Eclipse进行调试Logger使用注意事项Assert使用注意事项,52,学习交流PPT,Error与Exception区别,ErrorError类层次结构描述了Java运行时系统的内部错误和资源耗尽错误。ExceptionRuntimeException:由程序错误导致的异常CheckedException:某些情况下可正确运行,而在某些情况下导致的异常CheckedException的审查是编译器行为出现RuntimeException问题,一定是你的问题,53,学习交流PPT,Error与Exception区别,常见Error常见RuntimeExceptionClassCastException,IllegalArgumentException,ArrayIndexOutOfBoundsException,StringIndexOutOfBoundsException,MissingResourceException,NoSuchElementException,NullPointerException,54,学习交流PPT,Error与Exception区别,疑难Error/ExceptionClassNotFoundException显式类装载失败NoClassDefFoundError隐式类装载失败,或初始化失败后置脏UnsatisfiedLinkError对于声明为native的方法,JVM找不到和它对应的本机语言定义在Windows系列OS中,多次加载dll。ExceptionInInitializerError如果初始化器突然完成,抛出一些异常E,而且E的类不是Error或者它的某个子类,那么就会创建ExceptionInInitializerError类的一个新实例,并用E作为参数,用这个实例代替E。ClassCircularityError类或接口由于是自己的超类或超接口而不能被装入。,55,学习交流PPT,大纲,Error与Exception区别Exception处理基本原则StackOverflowError与OutOfMemoryErrorDebug基本技巧以及如何在Eclipse进行调试Logger使用注意事项Assert使用注意事项,56,学习交流PPT,Exception处理基本原则,基本原则敏感资源的释放、或备份上下文环境后的现场恢复,要在finally子句中完成。不要轻易吞并/压制异常处理异常时,先测特定异常,后测通用异常检测错误时,”苛刻”要比放任更好早抛出,晚捕获,57,学习交流PPT,大纲,Error与Exception区别Exception处理基本原则StackOverflowError与OutOfMemoryErrorDebug基本技巧以及如何在Eclipse进行调试Logger使用注意事项Assert使用注意事项,58,学习交流PPT,StackOverflowError,StackOverflowError解读:栈溢出,程序所需的栈空间大于为JVM所配置的栈空间引发原因程序死循环过深的方法调用,特别是递归调用JIT编译后代码的问题解决办法:检查程序是否存在死循环通过-Xss,-Xoss参数为JVM配置栈空间-Xoss参数供本地调用线程栈所用,即供Java代码调用本地库时的过程调用,如:IBMJDK默认-Xoss值为512k,用法如-Xoss512k-Xss参数供Java线程栈所用,即用于Java方法调用时追踪变量的状态,如:IBMJDK默认-Xss值为400k,用法如-Xss400k,59,学习交流PPT,OutOfMemoryError,OutOfMemoryError解读:堆空间不足,JVM不能够继续为程序分配对象所需的椎空间,并且没有其它的内存空间供垃圾回收器回收。引发原因JVM堆空间分配不足程序存在”内存泄漏”解决办法:通过-Xms,-Xmx参数为JVM配置Java堆空间审查程序中可能存在的”内存泄漏”,重点是Map,Collection等变量所钩住本该回收的对象。合理利用WeakReference,SoftReference,60,学习交流PPT,大纲,Error与Exception区别Exception处理基本原则StackOverflowError与OutOfMemoryErrorDebug基本技巧以及如何在Eclipse进行调试Logger使用注意事项Assert使用注意事项,61,学习交流PPT,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,学习交流PPT,Debug基本技巧以及如何在Eclipse进行调试,如何在Eclipse进行调试,63,学习交流PPT,Debug基本技巧以及如何在Eclipse进行调试,如何在Eclipse进行调试察看”变量”视图中的内容在”断点”视图中设置某一类Exception的断点在”表达式”视图中增加要观察的表达式为”断点”设置属性可在”显示”视图中对当前上下文的内容进行评估充分利用”剪贴薄”(或”草稿纸”)功能,对无法确定的用法或内容进行试算或尝试,64,学习交流PPT,大纲,Error与Exception区别Exception处理基本原则StackOverflowError与OutOfMemoryErrorDebug基本技巧以及如何在Eclipse进行调试Logger使用注意事项Assert使用注意事项,65,学习交流PPT,Logger使用注意事项,Logger类型JDKLogger日志记录器分成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方式进行调试的,应在发布前屏蔽配置log4j参数时,记录级别要合理,66,学习交流PPT,大纲,Error与Exception区别Exception处理基本原则StackOverflowError与OutOfMemoryErrorDebug基本技巧以及如何在Eclipse进行调试Logger使用注意事项Assert使用注意事项,67,学习交流PPT,Assert使用注意事项,注意事项断言失败是致命的、不可恢复的错误断言检查只用于开发和测试阶段启用或禁用断言是类装载器的功能不要在断言中修改变量的值断言只是测试和调试阶段使用的战术性工具,68,学习交流PPT,目录,第1章Java体系结构第2章基本程序结构设计第3章对象与类第4章继承第5章接口与内部类第6章事件处理第7章异常与调试第8章流与文件,69,学习交流PPT,大纲,InputStream/OutputStream注意事项NIO对象序列化与外部化,70,学习交流PPT,InputStream/OutputStream注意事项,注意事项不论是read方法还是write方法都是线程阻塞模型及时关闭流对象,以释放操作系统资源对于输出流,在不关闭文件时,如果不刷新(flush)输出流占用的缓存区,则可能最后一个字节包永远不会被送出在Java中,所有数据文件都按高字节前存的方法存储StringBuilder是线程不安全的。流类关注的是文件内容,而File类关注的是文件在磁盘上的存储,71,学习交流PPT,大纲,InputStream/OutputStream注意事项NIO对象序列化与外部化,72,学习交流PPT,NIO,NIO支持的特性内存映射文件为文件获取通道(channel)。通道是对于磁盘文件的抽象,允许访问操作系统的特性,如文件间的内存映射、文件锁定和快速数据传输通过FileChannel类的map方法获得MappedByteBuffer.(有只读、读写、私有三种映射模式)文件锁定通过FileChannel的lock、trylock获得共享锁或排他锁文件锁的具体实现依赖于操作系统文件锁是整于JVM持有字符集编码和解码非阻塞IO,73,学习交流PPT,NIO,Buffer数据结构,74,学习交流PPT,大纲,InputStream/OutputStream注意事项NIO对象序列化与外部化,75,学习交流PPT,对象序列化与外部化,注意事项对象序列化采用了是一种特殊文件格式存储对象不建议使用对象序列化来实现对象的持久化序列化对象序列化时,既保存对象的状态,也保存类的描述信息:类名、serialVersionUID、非私有的方法标志信息、非transient的数据域(不区分可见性)序列化时,保存的类描述直到实现Serializable接口的父类为止重载对象状态的序列化过程:privatevoidwriteObject(java.io.ObjectOutputStreamout)throwsIOExceptionprivatevoidreadObject(java.io.ObjectInputStreamin)throwsIOException,ClassNotFoundException;ObjectOutputStream.defaultWriteObject方法序列化对象的状态,不区分子类或父类的数据域。仅包含实现Serializable接口的类其及子类不实现Serializable接口的父类必须有一个子类可访问到的无参构造方法。否则运行时抛InvalidClassException,76,学习交流PPT,对象序列化与外部化,序列化拦截序列化对象:拦截参与序列化的对象:ANY-ACCESS-MODIFIERObjectwriteReplace()throwsObjectStreamException;重解析反序列化的对象,用途如:可序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 离谱医生考试题及答案
- 课件显示作图过程
- 2025年中国拔罐器数据监测报告
- 客服管家考试题及答案
- 绞盘机司机数字化技能考核试卷及答案
- 井矿盐制盐工专项考核试卷及答案
- 多维地理信息采集员知识考核试卷及答案
- 旅游团队领队晋升考核试卷及答案
- 静脉抽血考试题及答案
- 河北石家庄市42中7年级下册数学期末考试专项练习试题(含答案解析)
- Klotho蛋白在万古霉素致急性肾损伤中的机制及干预潜力研究
- 水果打包加工厂管理制度
- 空调冷库维修合同范本
- 借物喻人的作文五年级完美版
- HER2阳性晚期胃癌分子靶向治疗中国专家共识
- 2025届安徽省六校研究会高三开学联考-数学试卷(含答案)
- 矿泉水定制合同协议
- 临床技术操作规范麻醉学分册
- 基于赋能理论的老年COPD稳定期患者慢病管理方案的构建及应用
- 中医护理常见穴位课件
- 医院 查对制度
评论
0/150
提交评论