2015年javaee第168期就业教程class07-基础加强_第1页
2015年javaee第168期就业教程class07-基础加强_第2页
2015年javaee第168期就业教程class07-基础加强_第3页
2015年javaee第168期就业教程class07-基础加强_第4页
2015年javaee第168期就业教程class07-基础加强_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

day06总MyEclipseJUnit1.5MyEclipseMyEclipseEclipseMyEclipse 创建默认包名以 为前缀编 ojava断点调试的目 调试程序debug进入debug查看变量值:选中变量→鼠标右键调试程序FrameMyEclipseMyEclipse常用快捷键Alt(内容助理+CtrlShiftOCtrlShiftFMyEclipse常用快捷键CtrlShiftTCtrl+Alt+左键:查看源代码时的“原路返回CtrlShiftXCtrlShiftYCtrl+Alt+下键:当前行CtrlCtrlShiftCtrlShiftAlt+Alt+CtrlDAlt、Ctrl1、Ctrlshifto、CtrlshiftJUnit使JUnit的作JUnitmainmain中JUnit为测试程序创建编 packagepackage;public{publicvoidrun(){}publicvoideat(){}}编 的测试用例类 包资源管理器→选 类→右键→new→JUnitTestCase→修改包名为junit.test→下一步运试用选 Test类→右键→Runas→JUnitOutline→testXXX()方法→右键→RunasJUnitTest setUp() setUpBeforeClass()和@Test–publicvoid、无参的方法@Beforepublicvoid、无参的方法@After--publicvoid、无参的方法@BeforeClass–public的、staticvoid、无参的方法@AfterClass–public的、staticvoid、无参的方法泛数组与集JavaString[]String类型的数据,我们称之为持String类型的对象。类型变量(参数ArrayList<String>arr=newStringArrayListArrayList类中所有使用类型变量的地方都会String所替换。例如:booleanadd(Ee)eString替换,最终变成booleanadd(Stringe)。Eget(intindex)String替换,最终变成Stringget(intindex)。泛型的好1.4时,ArrayListadd()ObjectClassCastException。ArrayListlist=newArrayList();=(ArrayList<Integer>list=newArrayList<Integer>(); Integeri=定义泛型类(接口自定义泛型类的语publicclassA<T>泛型类中使用类型用户在使用泛型类时,需要为类型变量赋值。例如:newA<String>()。publicclassA<T>{privateTt;publicA(Tt)this.t=}publicTget()return}}TString替换。publicclassAprivateStringt;publicA(Stringt){this.t=}publicStringget(){returnt;}}类型变量的限tObject类的子类,那么就说明你tObject中存在的方法。T类型的构造器:newT()t的类型,那么也就不知道它有public构造器,所以不能创建。继承(实现)泛型类(接口继承泛型类之publicclassArrayList<E>implementsList<E>…}ArrayList<String>arr=newArrayListArrayListEStringArrayList会把这StringListE。,List接口中的E来赋值给它赋值?难道你想newList<String>()这样赋值么?接口是不能被实例化的,你只get()E,继承泛型类之publicclassStringimplementsComparable<String>{publicintcompareTo(Stringother){…}}泛型方法定public<T>Tget(T[]ts,intindex)return}T赋值。String[]strs=Strings=o.get(strs,TString泛型的擦泛型边界限定的类型值的范publicclassA<TextendsNumber>{}TNumberNumber的子类型。例如:newA<Integer>()newA<String>()是不可以的。通配符的作Object[]objs=newString[10];objs[0]=newInteger(100);String[]String[]Integer对象当然是不行的。ArrayList<Object>list=newArrayList<String>();list.add(newInteger(100);上面代码在第一行位置编译失败,因为泛型根本就不让把ArrayList<String赋值给publicstaticvoidprintList(List<Object>list)调用printList()方法只能传递给它List<Object>类型的参数,而不能传递List<String,或者List<Integer>,这说明我们的printList()publicstaticvoidprintList(List<Object>list){…}publicstaticvoidprintList(List<String>list){…}publicstaticvoidprintList(Listlist){…}publicstaticvoidprintList(Listlist)JVM不可能看到这样的代码,因为编译器不能让你编译通过!子类型通配publicstaticvoidprintList(List<?extends>list)printList()List<Student>List<Teacher>,或者是子类型就都可以。道一些信息的,它只知道用户转递的类型参数一定是的子类型。虽然使用了通配符之后listadd()add(newStudent())List是父类型通配publicstaticvoidprintList(List<?superStudent>list)可以传递给printList()方法List<Student>,以及List< 传递给printList()方法的List类型参数为Student,或者Student的父类型就是可以的。数List<Student>、List< 但是,现在我们不知道list的get()方法返回的是什么了!因为用户传递的可能是List<Student>、 >、List<Object>,如果我们用Students=list.get(0),那么如果list其实是一个List< 岂不是出错了!没错,只能使用Object来接收list.get(0)的返回值了。 通配listadd()Objectget()方法返回值。可能也看出来了,泛型还真是很!这也是没有办法中的办法,现在的泛型是迁移性兼容的一种版本而已!JavaJVM1.4之前的版本。当所有人1.5JDK后,Java的泛型可能就不会再是编译期状态了。1.5新特什么是自动装箱拆1.5之后,Java允许把基本类型与其对应的包装器类型之间自动相互转换。例如:Integeri===IntegerInteger对象。Integer类的内部缓存了-128~127256IntegervalueOf()方法需要把这个范valueOf(100)Integer对象!Integeri2=booleanbi1i2;//Integeri1100;Integeri2booleanbi1i2;//Integeri1=200;Integeri2=booleanbi1i2;//这是因为200不在Integer内部的缓存之内,所以这时valueOf()方new一个Integer对象。valueOf(200)Integer对象,所以才会是false。增强for循环概增强for循环的语法格for(e:数组或集合对象}增强for的优缺List或数组时,不能获取当前元素下标。for使用便简单,这是它唯一的优点了。for比使用迭代器方便一点!增强for与 ble接 ble接口的类,都可以使用增强for来遍历静态导入(鸡肋什么是静态导印时可以把System.out.println()out.println();System.exit(0)exit(0)。静态导入的语法格importstatic包名.类名.静态方法名;importstatic包名.类名.静态属性名;importstatic包名.类名.*;静态导入真是鸡肋使用数组为方法参intintsum(inta,intb){returna+intsum(inta,intb,intc){returna+intsum(inta,intb,intc,intd){returna+b+c+intsum(int[]arr)intsum(int[]arr){intsum=0;for(inti=0;i<arr.length;i++){sum+=arr[i];}return}sum()0~Nsum()需要传递一个数组,这使调用这个intarr=可变参数方法的定intintsum(int…arr){intsum=0;for(inti=0;i<arr.length;i++){sum+=arr[i];}return}intsum(int[]arr){intsum=0;for(inti=0;i<arr.length;i++){sum+=arr[i];}return}intarrintarrarr就变成了可变参数。调用可变参数方intarr1,2,3sum(arr);[]={};[]};0~N个参数来调用,也可以直接传递数组来调用。可变参数方法的要枚什么是枚举类word文档的对齐方式有几种:左对齐、居中对齐、右对齐;枚举就是有限实现个数的类型,你可能会说,byte256个,没错,但我们真实定义JDK1.4之前的枚举类intboolean类型即可。例如:BorderLayout类的方位给出五个:CENTER、EAST、SOUTH、WEST、NORTH。当使用容器add(newButton(),“哈哈”)的调用可能,这会导致运行时出现异常。所以,JDK1.5又新增定义枚举类Directiond=Directiond=publicenumDirection}Direction类型只有四个选项,你可以理解为这个枚举类只有四个实例对象一样。外界无法去创枚举与Directiond=switch(d)1.5switchDirectiond=switch(d)casecaseFRONTSystem.out.println("前面");break;caseBEHIND:System.out.println("后面");break;caseLEFT:System.out.println("左面");break;caseRIGHTSystem.out.println("右面");break;}Directiond1=d;caseDictin.FOT所有枚举类都是Enum的子Enum类的子类,无需我们使用extendsEnum中的方法所FRONT0,BEHIND1FRONT枚举类的构造enumDirectionFRONT,BEHIND,LEFT,Direction(){ }}enumDirectionFRONT,BEHIND,LEFT,Direction(){ }}枚举类的方enumDirectionFRONT,BEHIND,LEFT,publicvoidfun(){ oEnum!");}}枚举类的属enumDirectionFRONT("前面BEHIND("后面LEFT("左面RIGHT("右面privateString Direction(Stringexin)this.exin=ex}publicvoid in(String in) in= }publicString in()return }}String in=使用类来创建枚举常还可以使用类来创建枚举常量,这说明枚举常量的类型是当前枚举类的子类,而且是个匿只能使用父类的指向类的实例,而多态之后只能调用父类中存在的方法。所以,使用这种enumDirectionFRONT()publicvoidfun(){}BEHIND()publicvoidfun(){}LEFT()publicvoidfun(){}RIGHT()publicvoidfun(){}publicvoidfun(){}}fun()方法应该定义为抽象的方法,因为每个枚举常量都会去重写它。你无法把Direction为抽象类,但需要fun()方法为抽象方法。enumenumDirectionFRONT()publicvoidfun(){}BEHIND()publicvoidfun(){}LEFTLEFT()publicvoidfun(){}RIGHT()publicvoidfun(){}void} 每个枚举类都有两个特殊方Direction类的特殊方法。[]staticDirectionvalueOf(Stringname)Direction常量,注意,这个EnumvalueOf()方法的参数个数不同。枚举也是编译期状finalclassDirectionextendsEnum{publicstaticfinalDirectionfinalclassDirectionextendsEnum{publicstaticfinalDirectionFRONT;publicstaticfinalDirectionBEHIND;publicstaticfinalDirectionLEFT;publicstaticfinalDirectionRIGHT;privatestaticfinalDirectionenumDirection{FRONT,BEHIND,LEFT,staticstaticFRONT=newDirection("FRONT",0);BEHIND=newDirection("BEHIND",1);LEFT=newDirection("LEFT",2);RIGHT=newDirection("RIGHT",3);ENUM$VALUES=newDirection[]{FRONT,BEHIND,LEFT,}privateDirection(Strings,inti)super(s,}publicstaticDirection[]values(){Directionadirection[];intDirectionadirection1[];System.arraycopy(adirection=ENUM$VALUES,0,adirection1=newDirection[i=adirection.length],0,return}publicstaticDirectionvalueOf(Strings)return(Direction)Enum.valueOf(Direction.class,}}反什么是反classClassClass类的对象理解为硬class文件的对应体。反射的作Objectobj,然后你的方法需要创建一个与参数类型相同的对象出来,还要调用这个对象上的ObjectObject实体对象,publicstaticvoidfun(Objectobj)objobjobjObject中}猜猜Class类都有什么功getNumber()方法…API!nameClass反射从Class类开Methodnewclass文newnewClass类的对象,那么是不是就不用我们再去编写.java文件,然后再通过编译器去编译成.class文件了呢?当然这是不可能的!我们需要思考,Class除了可以返回当前对应类型的所有属性、方法、构造器的反射对象外,还public类,是得到Class对ClassClass类型的实例了。通过类名来获取Class(类名时使用Class.forName(StringClassc1=Classc1=Classc2=ClassClassc3=Class.forName(“java.lang.String”);System.out.println(c1==c2);加载ClassConstructorgetConstructor(Class…parameterTypes):通过指定的参数类型获取公有构造器反[]ConstructorgetDeclaredConstructor

温馨提示

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

评论

0/150

提交评论