9_1 第九天 魔乐java基础视频学习笔记

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1、课程名称:JDK1.5新特性2、知识点2.1、上次课程的主要知识点1、关于复习问题:在之前给出了若干个代码模型,但是对于所有的代码模型属于知识的综合应用,应该根据每一个代码模型思考里面的知识点:classPerson{privateStringname;publicPerson(){}publicPerson(Stringname){this.name=name;}publicStringtoString(){return姓名:+this.name;}}1)、类和对象:classPerson,publicclass和class定义的区别、包的作用;2)、privateStringname:封装、setter、getter、String类的特点、String类的方法、数据模型;3)、publicPerson(){}:构造方法、定义要求、构造重载、主要作用、单例设计;4)、publicStringtoString():Object是所有类的父类,toString()属于方法的覆写,对象打印时默认调用。2、异常的捕获和处理标准格式:try、catch、finally、throw、throws的应用;3、包的定义及使用,没有包的类根本就不存在;4、四种访问控制权限:private、default、protected、public;5、命名规范。6、有意思的程序:packagecn.mldn.demo;abstractclassA{//抽象类publicA(){//构造方法}publicabstractvoidprint();}classBextendsA{privateintdata=10;publicB(intdata){this.data=data;}publicvoidprint(){//抽象方法System.out.println(data=+this.data);}}publicclassTestDemo{publicstaticvoidmain(Stringargs[])throwsException{newB(100);//实例化子类对象}}“data=0”,这种程序纯粹是为了研究技术而出现的,这道程序要想解决问题:在之前讲解构造方法的时候曾经讲解过,一个类只有构造执行完之后,所有的属性才回为其分配默认值(intdata=10),这个10是在构造执行完毕之后赋予的,可是按照子类对象实例化的原则来讲,子类在实例化对象之前会默认调用父类之中的构造,为父类中的属性初始化,之后再调用子类自己的构造为子类的属性初始化。2.2、本次预计讲解到的知识点1、JDK1.5的新特性;2、理解泛型、枚举、Annotation的主要作用(看即可,先不去使用)。3、具体内容(理解)Java的发展从1995年开始经历了许多的过程,但是其中有三个最具代表性的JDK版本:·1995年推出的JDK1.0:标志着Java彻底产生了;·1998年推出的JDK1.2:加入了javax.swing组件,这是主要新特性;·2005年推出的JDK1.5,标记为tiger:出现了许多一直延续到今天的新特性;在几乎所有的书上,把JDK1.5的新特性都会结合一些系统的类库来讲解,但是本次是将所有的内容单独取出来进行的讲解,所以难免会出现理解上的困难。3.1、可变参数在讲解可变参数之前,首先来思考一个问题:如果说现在要实现若干个整型变量的相加操作,问,此方法该如何设计?使用数组接收,因为参数个数不确定,而按照之前的所学,只能使用数组完成。packagecn.mldn.demo;publicclassTestDemo{publicstaticvoidmain(Stringargs[])throwsException{System.out.println(add(newint[]{1,2,3}));}publicstaticintadd(int[]data){intsum=0;for(intx=0;xdata.length;x++){sum+=data[x];}returnsum;}}以上的确实现了技术要求,但是现在有一个新的问题产生了:如果按照题目的要求,应该是可以任意的传递多个数据,但是以上实际上装的是一个数据,只不过一个数据使用数组的形式封装,那么为了更好的解决这个问题,可以使用JDK1.5可变参数形式来进行操作。Public[static][final]返回值类型方法名称(参数类型…变量){[return[返回值];]}发现现在在进行方法参数定义的时候有了一些变化,而这个时候的参数可以说就是数组形式packagecn.mldn.demo;publicclassTestDemo{publicstaticvoidmain(Stringargs[])throwsException{System.out.println(add(newint[]{1,2,3}));System.out.println(add(1,2,3));System.out.println(add());}publicstaticintadd(int...data){//可变参数intsum=0;for(intx=0;xdata.length;x++){sum+=data[x];}returnsum;}}有了可变参数,在日后进行方法调用的过程之中,就可以比较直观的传递任意多个参数,但是以上的操作在开发之中不建议使用,最好别用。3.2、foreach输出首先需要解释的是:foreach并不是新的概念,最早是在.NET中提出来的,所谓的foreach可以理解为增强性的for循环,下面来回顾一下最早的for循环。packagecn.mldn.demo;publicclassTestDemo{publicstaticvoidmain(Stringargs[])throwsException{intdata[]=newint[]{1,2,3,4,5,6};intsum=0;for(intx=0;xdata.length;x++){sum+=data[x];}System.out.println(sum);}}但是有了foreach之后,那么对于数组或者是集合的输出就有了新的支持,语法如下:for(数据类型变量:数组|集合){//操作代码}这表示通过自动的方式将数组之中的每一个元素赋值给变量,而后在for循环的方法体之中进行操作。packagecn.mldn.demo;publicclassTestDemo{publicstaticvoidmain(Stringargs[])throwsException{intdata[]=newint[]{1,2,3,4,5,6};intsum=0;for(intx:data){//自动循环,将每一个元素赋给xsum+=x;}System.out.println(sum);}}对于这种for循环依然只是要求会使用,能看懂就行,不过个人建议:最好别用。3.3、静态导入如果说现在要想导入一个不同包的类的方法,那么肯定使用import完成,即:如下是之前所采用的格式。范例:定义一个MyMath类packagecn.mldn.util;publicclassMyMath{publicstaticintadd(intx,inty){returnx+y;}publicstaticintsub(intx,inty){returnx-y;}publicstaticintdiv(intx,inty){returnx/y;}publicstaticintmul(intx,inty){returnx*y;}}这个类之中的方法全部都属于static型的方法,而按照之前的方式如果要使用这个类,操作形式如下:范例:按照之前的方式来使用MyMath类packagecn.mldn.demo;importcn.mldn.util.MyMath;publicclassTestDemo{publicstaticvoidmain(Stringargs[])throwsException{System.out.println(加法操作:+MyMath.add(10,20));System.out.println(减法操作:+MyMath.sub(20,10));}}但是在JDK1.5之后,如果一个类之中的全部方法都是static型的,则可以使用如下的语法进行静态导入:importstatic包.类.*;表示的是将这个指定类之中的全部方法导入进来,最后就好像这些方法全部是在主类之中定义的方法一样。packagecn.mldn.demo;importstaticcn.mldn.util.MyMath.*;publicclassTestDemo{publicstaticvoidmain(Stringargs[])throwsException{System.out.println(加法操作:+add(10,20));System.out.println(减法操作:+sub(20,10));}}这种比较难受的语法,也只是出现在讲课之中,是不会建议使用。3.4、JDK1.5三大主要新特性——泛型3.4.1、泛型的引出(重点)下面首先通过一个简单的分析来研究一下泛型出现的主要目的,例如:现在要求定义一个表示坐标的操作类(Point),这个类可以表示三种类型的坐标:·整数坐标:x=10、y=20;·小数坐标:x=10.1、y=20.3;·字符串数据:x=“东经100度”、y=“北纬20度”。类之中如果要想保存以上的数据,一定需要定义x和y两个属性,而这两个属性可以接收三种数据类型,那么只能使用Object类来定义会比价合适,这样会发生如下的几种转换关系:·整数:int自动装箱为Integer向上转型为Object;·小数:double自动装箱为Double向上转型为Object;·字符串:字符串向上转型为Object。范例:定义Point类,使用Object作为属性类型classPoint{privateObjectx;privateObjecty;publicvoidsetX(Objectx){this.x=x;}publicvoidsetY(Objecty){this.y=y;}publicObjectgetX(){returnx;}publicObjectgetY(){returny;}}下面开始设置不同的数据类型,以测试程序。范例:设置整型publicclassTestDemo{publicstaticvoidmain(Stringargs[])throwsException{Pointpoint=newPoint();point.setX(10);point.setY(20);intx=(Integer)point.getX();inty=(Integer)point.getY();System.out.println(X的坐标是:+x+,Y的坐标是:+y);}}范例:设置小数publicclassTestDemo{publicstaticvoidmain(Stringargs[])throwsException{Pointpoint=newPoint();point.setX(10.3);point.setY(20.4);doublex=(Double)point.getX();doubley=(Double)point.getY();System.out.println(X的坐标是:+x+,Y的坐标是:+y);}}范例:设置字符串publicclassTestDemo{publicstaticvoidmain(Stringargs[])throwsException{Pointpoint=newPoint();point.setX(东经100度);point.setY(北纬20度);Stringx=(String)point.getX();Stringy=(String)point.g

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功