JAVA技术培训陈华海.ppt_第1页
JAVA技术培训陈华海.ppt_第2页
JAVA技术培训陈华海.ppt_第3页
JAVA技术培训陈华海.ppt_第4页
JAVA技术培训陈华海.ppt_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Java技术培训,姓名:张永健 部门:银行核心软件开发二部(实施部) 电话邮箱:zhang_,2,课程目录,编程理论 语言分类 JAVA历史简介 JAVA语言优缺点 类型系统 运算符 控制结构 JAVA面向对象编程,编程理论价值观,沟通 软件开发过程中,无处不在的沟通。 程序员与代码 程序员之间 程序员与客户 简单 要解决的问题本身的内在复杂性,外在非必要的复杂性 简单的相对性 由复杂到简单的过程 简单和沟通之间的相互作用,3,灵活 灵活是衡量那些低效编码与设计实践的一把标尺 程序是应该灵活,但只有在发生变化的时候才需如此 灵活性的提高可能以复杂性的提高为代价 沟通可以促进灵活性,4,编程理论原则,局部化影响 最小重复 将逻辑与数据捆绑 对称性 声明式表达(注解) 变化率,5,语言的分类,强类型VS弱类型 强类型(strong typing)和弱类型(weak typing)决定了类型如何被实施或解读。 很多的动态语言是强类型语言,例如:python,smalltalk。 vbscript语言是一种弱类型特质的语言。”12”+3 结果:”123” 类型不总是黑与白,它是具有高度争议性的话题。 静态类型VS动态类型 静态类型:一种在编译期间就确定数据类型的语言。大多数静态类型语言是通过要求在使用任一变量之前声明其数据类型来保证这一点的。Java 和 C 是静态类型语言。 动态类型:一种在运行期间才去确定数据类型的语言,与静态类型相反。VBScript 和 Python 是动态类型的,因为它们确定一个变量的类型是在您第一次给它赋值的时候。,6,强类型和静态类型给JAVA带来的苦恼与价值,让编译器有更多的信息,能够早点找出bug。 良好的IDE工具支持。 繁琐的语法。例如:变量和参数声明类型,类型转化。 程序代码更长,需要花更多的时间理解,维护或加强。 写程序/编译周期 动态,反射风格的编程方面。(java反射API),7,Java既是一个完整的平台,也是一门语言。Java语言是1995年由James Gosling在Sun Microsystems公司设计,作为Java平台的组成部分之一的语言。Java平台除了语言之外,还有两个组成部分,虚拟机(JVM)和类库。 Java语言参考了C语言和C+的设计,因此在代码整体风格上与它们比较类似。不过与C+相比,Java语言设计的更为小巧,简单和可靠。Java的 类型分为两种:类(class)和基本类型(primitive type),并没有C+中的struct和union类型。同时,Java还提供了boolean类型,并对布尔类型的定义和使用作出了限制。此 外,Java中也不允许开发人员进行运算符重载,但提供如synchronize等进行并发控制的语言特性。 在面向对象类型系统的设计中,Java不允许C+中的多重继承,因为许多人认为多重继承所带了许多复杂性和混乱,可谓弊大于利。不过Java允许开发人员定义“接口”,即一种“契约”而不包含实现,这在一定程度上也可以带来部分多重继承的优点。,8,JAVA历史简介(二),总体而言,Java语言去除了C+中大量的复杂或是不安全的特性,这使的Java成为了一门灵活而强大,同时又更为小巧,简单和可靠的语言。从现在的角度看,Java语言大大降低了C+本身所带来的复杂度,让编程工作变的更为简单,具有很高的历史意义。,9,10,JAVA发布时间表,1996年1月23日 JDK1.0 1997年2月19日 JDK1.1 1998年12月8日 J2SE1.2 2000年5月8日 J2SE1.3 2002年2月6日 J2SE1.4 2004年9月30日 J2SE5.0 2006年12月11日 JAVA SE 6 至今 JAVA SE 6 upate21,11,JDK1.5新增功能,泛型 注解 自动拆箱(Autoboxing) 枚举 动态参数 新的foreach语句 新的并发工具包,12,Java SE 6新增功能,脚本语言支持 大幅度提升性能 改进Web服务支持(JAX-WS) 支持JDBC4.0 设计JAXB到2.0版本。(JAXB(Java Architecture for XML Binding简称JAXB)允许Java开发人员将Java类映射为XML表示方式) 图形界面的改进,13,JAVA语言的缺点,许多框架设计用来简化JAVA项目开发,的确让JAVA开发者更具有生产力,但是也让学习的曲线增加,初学java者难以负荷。 编译期异常与类型检查可以提高安全性,但是让时间和语法的成本增加。 JAVA不适合表现结果性数据,这使得JAVA过度依赖XML,因此造成额外的复杂度和体制暴增。 JAVA的许多折中设计,像基本类型,让JAVA更不好学习,更不好写。 JAVA比C+动态,但是远远比不上smalltalk动态。Java开发者正发现元编程,但是他们无法用够快的速度执行这样的想法。 JAVA比其他直译式语言,动态语言,编译和部署周期更长。,JAVA语言的优点,JAVA在需要的地方提供了更多的结构。例如:提供接口。 JAVA减少了指针的必要性,让软件更稳定,更好阅读。 垃圾收集更容易,因为JVM自动处理不用的内存。 JAVA允许更好的封装机制,简化了程序代码的使用。 JAVA消除了一些问题,像嵌套的引用文件以及宏。 JVM具有空前的可移植性。 JAVA的元模型 ,通过类对象来描述JAVA类型,允许我们使用相当精巧的反射编程(reflective programming)。,14,JAVA类型系统,基本类型带来的不便,错误的写法: ArrayList list = new ArrayList(); list.add(5); / cannot compile int i = (int)list.get(0); / cannot compile int hash = 3.hashCode(); / cannot compile 正确的写法(jdk1.4): ArrayList list = new ArrayList(); list.add(Integer.valueOf(5); int i = (Integer)list.get(0).intValue(); int hash = Integer.valueOf(3).hashCode();,16,基本类型带来的不便,JDK1.5自动拆箱 ArrayList list = new ArrayList(); list.add(5); int i = (Integer) list.get(0); int hash = Integer.valueOf(3).hashCode(); 为什么保持基本类型 吸引C+开发者 效率问题,17,数组带来的困挠,数组的错误初始化 int numbers =1,2,3; / cannot compile 数组正确的初始化 int numbers = new int1,2,3; 数组作为参数 函数:public void say(String names) 调用:say(new String“hello“,“world“);,18,数组带来的困挠,JDK1.5带来了可变参数 函数:public void say(String. names) 调用:say(“hello“,“world“),19,JDK1.5带来的枚举,JDK1.4 public static final String readColor = “red“; public static final String blackColor=“black“; public static void printColor(String. names) printColor(readColor,blackColor); JDK1.5枚举 public enum Colorred,black public static void printColor(Color c) printColor(Color.red);,20,引用类型,Final关键字的使用 函数参数的传递 函数参数作为返回值(JAVA IO) public int read(byte b, int off, int len) throws IOException ;,21,运算符,算术运算符与逻辑运算符 整数/整数结果为整数 - 0 - 0 5/3 - 1 精度计算避免使用float,double.可以使用BigDecimal 1.32-0.49 - 0.8300000000000001,22,位运算符的使用率很低 表达式1&表达式2 如果表达式1为false,表达式2不会被计算。 使用括号来区分运算符的先后顺序 (1+2)*3-5,23,控制结构,功能偏弱的switch语句。Switch选择条件只能是int和char类型。 int number = 1; switch(number) case 1: case 2: JDK1.5 foreach语句,24,List list = new ArrayList(); list.add(“hello“); for(int i=0;ilist.size();i+) String hello = list.get(0); System.out.println(hello); for(String name : list) System.out.println(name); ,25,break和 continue语句,相同点 break除了可以用在switch语句中之外,亦可以用于循环语句中,这时它与continue语句一样,对循环的执行起限定转向的作用 不同点 continue 语句只结束本次循环,而不是终止整个循环的执行 break语句则是结束整个循环语句的执行,26,面向对象历史简介,对象作为编程实体最早是于1960年代由Simula 67语言引入思维。在分析式程序中,我们将真实世界的对象映射到抽象的对象,这叫做“模拟”。Simula不仅引入了“类”的概念,还应用了实例这一思想这可能是这些概念的最早应用。 20世纪70年代施乐PARC研究所发明的Smalltalk语言将面向对象程序设计的概念定义为,在基础运算中,对对象和消息的广泛应用。Smalltalk的创建者深受Simula 67的主要思想影响,但Smalltalk中的对象是完全动态的它们可以被创建、修改并销毁,这与Simula中的静态对象有所区别。此外,Smalltalk还引入了继承性的思想,它因此一举超越了不可创建实例的程序设计模型和不具备继承性的Simula。 面向对象程序设计在80年代成为了一种主导思想,这主要应归功于C+。一种说法是,GUI的引入极大地推动了面向对象程序设计的发展。 90年代开始,Java语言成为了广为应用的语言,除了它与C和C+语法上的近似性。Java的可移植性是它的成功中不可磨灭的一步,因为这一特性,已吸引了庞大的程序员群的投入。,27,28,面向对象编程定义,面向对象程序设计(Object-oriented programming,缩写:OOP) 指一种程序设计范型,同时也是一种程序开发的方法论。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。 当我们提到面向对象的时候,它不仅指一种程序设计方法。它更多意义上是一种程序开发方式。在这一方面,我们必须了解更多关于面向对象系统分析和面向对象设计(Object Oriented Design,简称OOD)方面的知识。,面向对象基本特征,数据抽象(封装) 封装就是指利用抽象数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象类型的内部,系统的其他部分只有通过包裹在数据外面的被授权的操作,才能够与这个抽象数据类型交流与交互! 继承 继承性(Inheritance)是指,在某种情况下,一个类会有“子类”。子类比原本的类(称为父类)要更加具体化。 多态 多态通过分离做什么和怎么做,从另一个角度将接口和实现分离。多态不但能够改善代码的组织结构和可读性,还能够创建可扩展的程序即无论在项目最初创建时还是在需要添加新功能时都可以“生长”的程序。,29,JAVA面向对象编程-封装,函数是最小的封装单位。 class,abstract,interface。 访问级别.(public protected default privated) 静态类,静态方法。 静态引入(JDK1.5) 原则: 把可变的和不可变区分开。 正确的位置上做正确的事情。,30,方法设计(一),使用可以变参数 public void println(String. strs) for(String s : strs) System.out.println(s); ,31,32,方法设计(二),检查参数的有效性 public void println(String. strs) if(strs=null) throw new NullPointerException(); for(String s : strs) System.out.println(s); ,方法设计(三),返回长度为0的数组或者是集合,而不是null。 遵守普遍接受的命名惯例。 给方法取个有意义的名字。 给方法适当的有意义的注释。,33,对象初始化,默认的构造函数 如果你没有定义默认的构造函数,那么编译的时候就生成一个默认的构造函数,并且默认调用父类的默认的构造函数。 类的属性会有默认的初始化值,而局

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论