Java基础-第三天(进阶).ppt
《Java基础-第三天(进阶).ppt》由会员分享,可在线阅读,更多相关《Java基础-第三天(进阶).ppt(48页珍藏版)》请在三一办公上搜索。
1、Java基础 J2SE(3),新一站开发部 孟凡军,目录,Java语言,Java语法,Java进阶,2,内容大纲,程序员应知破窗与童子军军规代码规范设计模式中文编码泛型、反射线程池正则表达式加解密,程序员应知破窗与童子军军规,程序员应知破窗与童子军军规,代码规范,Java 编码规范:是常用代码习惯 不是语法要求 但是需要严格遵守,代码规范,写干净整洁的代码删除没有使用的类引用(Ctrl+Shilft+O)格式化代码(Ctrl+Shilft+F)删除废弃的老代码(Ctrl+D)请不要在两个地方出现完全相同的代码(重用)命名类,方法,变量慎用简写拆分大的类,大的方法(500,50)2、注释 使用注
2、释来解释代码的意图,它们不应作为代码的翻译,编写高质量的代码从命名入手,编写高质量的代码从命名入手,设计模式,设计模式(Design pattern):是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式和框架,设计模式-要素,模式是一条由三个部分组成的通用规则:它表示了一个特定环境、一类问题和一个解决方案之间的关系。设计模式要素名称:助记、交流问题:先决条件解决方案:了解设计的组成成分效果:应用的效果、权衡、影响,为什么要提倡Design Pattern呢?,根本原因是为了代码复用,增加可维护性。那
3、么怎么才能实现代码复用呢?OO界有前辈的几个原则:开闭原则(Open Closed Principal)、里氏代换原则、合成复用原则。设计模式就是实现了这些原则,从而达到了代码复用、增加可维护性的目的。,设计模式-原则,1、开闭原则2、里氏代换原则3、合成复用原则4、依赖倒转原则5、接口隔离原则6、抽象类7、迪米特法则,常用的设计模式,单例模式简单工厂模式代理模式策略模式观察者模式模板方法模式职责链模式装饰模式工厂方法模式,设计模式-书,中文编码,为什么要编码?常见的有 ASCII、ISO-8859-1、GB2312、GBK、UTF-8、UTF-16几种编码格式的比较GB2312 与 GBKU
4、TF-16 与 UTF-8,编码转换,I/O 操作中存在的编码InputStreamReader、OutputStreamWriter内存中操作中的编码:字符到字节的数据类型的转换,常见问题分析,中文变成了看不懂的字符字符串在解码与编码字符集不一致导致汉字变成了看不懂的乱码,而且是一个汉字字符变成两个乱码字符。一个汉字变成一个问号将中文和中文符号经过不支持中文的ISO-8859-1编码后,所有字符变成了“?”,这是因为用 ISO-8859-1 进行编解码时遇到不在码值范围内的字符时统一用 3f 表示,这也就是通常所说的“黑洞”,所有 ISO-8859-1 不认识的字符都变成了“?”。一个汉字变
5、成两个问号中文经过多次编码,但是其中有一次编码或者解码不对仍然会出现中文字符变成“?”现象。,内容回顾,程序员应知破窗与童子军军规代码规范设计模式中文编码,泛型、反射,Java泛型理解Java泛型应用Java泛型编程 Java反射机制理解Java反射机制理解Java的动态代理,自学内容,熟悉设计模式应用场景编码规范中文编码转换,Java泛型,在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”;泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称
6、为泛型类、泛型接口、泛型方法。,Java泛型:规则和限制,Java泛型:泛型类语法,泛型类的语法说明:使用来声明一个类型持有者名称,就可以把T当作一个类型代表来声明成员、参数和返回值类型。T仅仅是个名字,这个名字可以自定义。声明 class GenericsFoo 声明了一个泛型类,这个T没有任何限制,实际上相当于Object类型,实际上相当于 class GenericsFoo。使用 与Object泛型类相比,使用泛型所定义的类在声明和构造实例的时候,可以使用“”来一并指定泛型类型持有者的真实类型。比如 GenericsFoo douFoo=new GenericsFoo(new Doubl
7、e(33);当然,也可以在构造对象的时候不使用尖括号指定泛型类型的真实类型,但是你在使用该对象的时候,就需要强制转换了。比如:GenericsFoo douFoo=new GenericsFoo(new Double(33);实际上,当构造对象时不指定类型信息的时候,默认会使用Object类型,这也是要强制转换的原因。,Java泛型应用示例,/*DAO操作基类:本DAO层实现了通用的数据操作*param POJO实体对象*param ID*/public class BaseHibernateDAOImpl extends HibernateDaoSupport implements Base
8、HibernateDao private Class entityClass;public void setEntityClass(Class entityClass)this.entityClass=entityClass;,Java语言的反射机制,在 Java 运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的。这种动态获取类的信息,以及动态调用对象的方法的功能来自于Java 语言的反射(Reflection)机制。Java 反射机制主要提供了以下功能:在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行
9、时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。,Java Reflection API,在 JDK 中,主要由以下类来实现Java 反射机制,这些类都位于包中:类:代表一个类。Field类:代表类的成员变量(成员变量也称为类的属性)。Method类:代表类的方法。Constructor 类:代表类的构造方法。Array类:提供了动态创建数组,以及访问数组元素的静态方法。,Java Reflection API,Java Reflection API,Method类的invoke(Object obj,Object args)方法用于动态执行一个对象的特定
10、方法。第一个obj 参数指定具有该方法的对象;第二个args 参数指定向该方法传递的参数,该参数必须为对象,如果参数为基本类型数据,必须转换为相应的包装类型的对象;invoke()方法的返回值总是对象,如果实际被调用的方法的返回类型是基本类型数据,那么invoke()方法会把它转换为相应的包装类型的对象,再将其返回。,代理模式,代理模式是常用的Java 设计模式,它的特征是代理类与委托类有同样的接口。代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,
11、而是通过调用委托类的对象的相关方法,来提供特定的服务。按照代理类的创建时期,代理类可分为两种。静态代理类:由程序员创建或由特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。动态代理类:在程序运行时,运用反射机制动态创建而成。图:代理模式,静态代理类,如图a所示,HelloServiceProxy 类是代理类,HelloServiceImpl类是委托类,这两个类都实现了HelloService接口。其中HelloServiceImpl类是HelloService接口的真正实现者,而HelloServiceProxy类是通过调用HelloServiceImpl
12、 类的相关方法来提供特定服务的。HelloServiceProxy类的echo()方法和getTime()方法会分别调用被代理的HelloServiceImpl 对象的echo()方法和getTime()方法,并且在方法调用前后都会执行一些简单的打印操作。由此可见,代理类可以为委托类预处理消息、把消息转发给委托类和事后处理消息等。图a:HelloServiceProxy是HelloService的代理类 图b:调用时序图,动态代理类,动态代理类的字节码在程序运行时由Java反射机制动态生成,无需程序员手工编写它的源代码。动态代理类不仅简化了编程工作,而且提高了软件系统的可扩展性,因为Java
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 基础 三天 进阶
链接地址:https://www.31ppt.com/p-6509707.html