JAVA技术培训陈华海比较牛

上传人:xx****x 文档编号:243012264 上传时间:2024-09-13 格式:PPT 页数:40 大小:127KB
返回 下载 相关 举报
JAVA技术培训陈华海比较牛_第1页
第1页 / 共40页
JAVA技术培训陈华海比较牛_第2页
第2页 / 共40页
JAVA技术培训陈华海比较牛_第3页
第3页 / 共40页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,Java,技术培训,姓名:张永健,部门:银行核心软件开发二部(实施部),电话:,邮箱:,课程目录,编程理论,语言分类,JAVA,历史简介,JAVA,语言优缺点,类型系统,运算符,控制结构,JAVA,面向对象编程,编程理论价值观,沟通,软件开发过程中,无处不在的沟通。,程序员与代码,程序员之间,程序员与客户,简单,要解决的问题本身的内在复杂性,外在非必要的复杂性,简单的相对性,由复杂到简单的过程,简单和沟通之间的相互作用,灵活,灵活是衡量那些低效编码与设计实践的一把标尺,程序是应该灵活,但只有在发生变化的时候才需如此,灵活性的提高可能以复杂性的提高为代价,沟通可以促进灵活性,编程理论原则,局部化影响,最小重复,将逻辑与数据捆绑,对称性,声明式表达(注解),变化率,语言的分类,强类型,VS,弱类型,强类型(,strong typing,)和弱类型(,weak typing,)决定了类型如何被实施或解读。,很多的动态语言是强类型语言,例如:,python,,,smalltalk,。,vbscript,语言是一种弱类型特质的语言。,”12”+3,结果,:”123”,类型不总是黑与白,它是具有高度争议性的话题。,静态类型,VS,动态类型,静态类型:,一种在编译期间就确定数据类型的语言。大多数静态类型语言是通过要求在使用任一变量之前声明其数据类型来保证这一点的。,Java,和,C,是静态类型语言。,动态类型:,一种在运行期间才去确定数据类型的语言,与静态类型相反。,VBScript,和,Python,是动态类型的,因为它们确定一个变量的类型是在您第一次给它赋值的时候。,强类型和静态类型给JAVA带来的苦恼与价值,让编译器有更多的信息,能够早点找出,bug,。,良好的,IDE,工具支持。,繁琐的语法。例如:变量和参数声明类型,类型转化。,程序代码更长,需要花更多的时间理解,维护或加强。,写程序,/,编译周期,动态,反射风格的编程方面。(,java,反射,API,),JAVA,历史简介(一),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,允许开发人员定义“接口”,即一种“契约”而不包含实现,这在一定程度上也可以带来部分多重继承的优点。,JAVA,历史简介(二),总体而言,,Java,语言去除了,C+,中大量的复杂或是不安全的特性,这使的,Java,成为了一门灵活而强大,同时又更为小巧,简单和可靠的语言。从现在的角度看,,Java,语言大大降低了,C+,本身所带来的复杂度,让编程工作变的更为简单,具有很高的历史意义。,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,JDK1.5,新增功能,泛型,注解,自动拆箱,(Autoboxing),枚举,动态参数,新的,foreach,语句,新的并发工具包,Java SE 6,新增功能,脚本语言支持,大幅度提升性能,改进,Web,服务支持,(JAX-WS),支持,JDBC4.0,设计,JAXB,到,2.0,版本。(,JAXB,(,Java Architecture for XML Binding,简称,JAXB,)允许,Java,开发人员将,Java,类,映射为,XML,表示方式),图形界面的改进,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),。,JAVA,类型系统,数据类型,基本类型,引用数据类型,整型,:byte,short,int,long,浮点型,:float,double,布尔型,:boolean,字符型,:char,数组,类,接口,枚举,基本类型带来的不便,错误的写法:,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();,基本类型带来的不便,JDK1.5,自动拆箱,ArrayList list = new ArrayList();,list.add(5);,int,i = (Integer) list.get(0);,int,hash = Integer.,valueOf(3).hashCode();,为什么保持基本类型,吸引,C+,开发者,效率问题,数组带来的困挠,数组的错误初始化,int,numbers =1,2,3;,/ cannot compile,数组正确的初始化,int,numbers = new int1,2,3;,数组作为参数,函数:,public void say(String names),调用:,say(new Stringhello,world);,数组带来的困挠,JDK1.5,带来了可变参数,函数:,public void say(String. names),调用:,say(hello,world),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 Color,red,black,public static void printColor(Color c),printColor(Color.red);,引用类型,Final,关键字的使用,函数参数的传递,函数参数作为返回值(,JAVA IO,),public int read(byte b, int off, int len) throws IOException ;,运算符,算术运算符与逻辑运算符,整数,/,整数结果为整数, - 0, - 0,5/3 - 1,精度计算避免使用,float,,,double.,可以使用,BigDecimal,1.32-0.49 -,0.83001,位运算符的使用率很低,表达式,1&,表达式,2,如果表达式,1,为,false,,表达式,2,不会被计算。,使用括号来区分运算符的先后顺序,(1+2)*3-5,控制结构,功能偏弱的,switch,语句。,Switch,选择条件只能是,int,和,char,类型。,int number = 1;,switch(number),case 1:,case 2:,JDK1.5 foreach,语句,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);,break和 continue语句,相同点,break,除了可以用在,switch,语句中之外,亦可以用于循环语句中,这时它与,continue,语句一样,对循环的执行起限定转向的作用,不同点,continue,语句只结束本次循环,而不是终止整个循环的执行,break,语句则是结束整个循环语句的执行,面向对象历史简介,对象作为编程实体最早是于,1960,年代由,Simula 67,语言引入思维。在分析式程序中,我们将真实世界的对象映射到抽象的对象,这叫做“模拟”。,Simula,不仅引入了“类”的概念,还应用了实例这一思想,这可能是这些概念的最早应用。,20,世纪,70,年代,施乐,PARC,研究所发明的,Smalltalk,语言将面向对象程序设计的概念定义为,在基础运算中,对,对象,和,消息,的广泛应用。,Smalltalk,的创建者深受,Simula 67,的主要思想影响,但,Smalltalk,中的对象是完全动态的,它们可以被创建、修改并销毁,这与,Simula,中的静态对象有所区别。此外,,Smalltalk,还引入了,继承性,的思想,它因此一举超越了不可创建实例的程序设计模型和不具备继承性的,Simula,。,面向对象程序设计在,80,年代成为了一种主导思想,这主要应归功于,C+,。一种说法是,,GUI,的引入极大地推动了面向对象程序设计的发展。,90,年代开始,,Java,语言,成为了广为应用的语言,除了它与,C,和,C+,语法上的近似性。,Java,的可移植性是它的成功中不可磨灭的一步,因为这一特性,已吸引了庞大的程序员群的投入。,面向对象编程定义,面向对象程序设计(,Object-oriented programming,,缩写:,OOP,),指一种,程序设计范型,,同时也是一种程序开发的,方法论,。它将,对象,作为,程序,的基本单元,将程序和,数据,封装其中,以提高软件的重用性、灵活性和扩展性。,当我们提到面向对象的时候,它不仅指一种程序设计方法。它更多意义上是一种程序开发方式。在这一方面,我们必须了解更多关于,面向对象系统分析,和面向对象设计(,Object Oriented Design,,简称,OOD,)方面的知识。,面向对象基本特征,数据抽象(封装),封装就是指利用抽象数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象类型的内部,系统的其他部分只有通过包裹在数据外面的被授权的操作,才能够与这个抽象数据类型交流与交互!,继承,继承性,(,Inheritance,)是指,在某种情况下,一个类会有“,子类,”。子类比原本的类(称为,父类,)要更加具体化。,多态,多态通过分离做什么和怎么做,从另一个角度将接口和实现分离。多态不但能够改善代码的组织结构和可读性,还能够创建可扩展的程序,即无论在项目最初创建时还是在需要添加新功能时都可以“生长”的程序。,JAVA面向对象编程-封装,函数是最小的封装单位。,class,abstract,interface,。,访问级别,.(public protected default privated),静态类,静态方法。,静态引入(,JDK1.5,),原则:,把可变的和不可变区分开。,正确的位置上做正确的事情。,方法设计(一),使用可以变参数,public void println(String. strs),for(String s : strs),System.out.println(s);,方法设计(二),检查参数的有效性,public void println(String. strs),if(strs=null),throw new NullPointerException();,for(String s : strs),System.out.println(s);,方法设计(三),返回长度为,0,的数组或者是集合,而不是,null,。,遵守普遍接受的命名惯例。,给方法取个有意义的名字。,给方法适当的有意义的注释。,对象初始化,默认的构造函数,如果你没有定义默认的构造函数,那么编译的时候就生成一个默认的构造函数,并且默认调用父类的默认的构造函数。,类的属性会有默认的初始化值,而局部变量是没有的。,对象是如何初始化顺序,(1),从父类到子类的静态变量和静态代码块依次被初始化。,(2),父类的非静态变量和非静态代码块依次被初始化,接着执行父亲 的构造函数。,(3),子类的非静态变量和非静态代码块依次被初始化,接着执行子类的构造函数。,JAVA面向对象编程-继承,extends,implments,final,的使用,原则:,明确需要继承,继承体系不予过深,组合优先于继承,JAVA面向对象编程-多态,覆写存在的一些不容易注意到的细节,1.,是否可以改变父类被覆写方法的访问权限?,2.,是否要抛出父类方法抛出的异常?,3.,返回值是否可以是父类方法返回值的子类,答案如下,1.,之类覆写只能扩大父类方法的访问权限,而不能缩小。,2.,子类覆写可以不抛出父类方法抛出的异常。,3.,子类可以抛出父类方法抛出的异常的子类。,4.,子类不能抛出父类方法抛出的异常的父类。,5.,子类方法的返回值可以是父类方法返回值的子类。,函数,的重载,1.,方法签名只包括方法名和参数,方法的返回值和所抛出的异常是不包括在内。,2.,在设计方法重载的时候要慎重考虑。,final,用法总结,1.,修饰类,该类不能被继承。,2.,修饰方法,该方法不能被覆写。,3.,修饰属性,该属性不能被重新赋值。,4.,修饰方法参数,该参数不能被重新赋值。,5.,对于多线程编程的意义。,推荐学习书籍, Java,编程思想,Effective Java,编码大全,谢 谢,!,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!