当前位置: 首页 > 后端技术 > Java

cs61bweek4--Javalibrariesandpackages

时间:2023-04-01 19:14:52 Java

(本节为线下课,视频质量差,疯狂掉帧和闪烁,只能看PPT和gitBook,理解可能不到位)1.Java库Java有一些内置的抽象数据类型可供您使用。它们打包在Java库中。java.util库中有3个重要的ADT:List:有序元素的集合,包括ArrayList和LinkListSet:没有重复元素的无序元素集合,包含HashSet和TreeSetMap:key/values的集合key-valuepair元素包含HashMap和TreeMap使用示例:1.ArrayListpublicstaticListgetWords(StringinputFileName){Listlst=newArrayList();在里面=新的在();while(!in.isEmpty()){lst.add(in.readString());//可选地,定义一个cleanString()方法来首先清理字符串。}returnlst;}publicstaticintcountUniqueWords(Listwords){Setss=newHashSet<>();for(Strings:words){ss.add(s);}returnss.size();}2.HashMap:publicstaticMapcollectWordCount(Listwords){Mapcounts=newHashMap();对于(Stringt:target){counts.put(s,0);}for(Strings:words){if(counts.containsKey(s)){counts.put(word,counts.get(s)+1);}}返回计数;}2。接口总结接口继承和实现继承的区别:接口继承:What(类能做什么)。实现继承:How(类做什么)。接口可能混合抽象方法和默认方法抽象方法是什么。必须子类覆盖。默认方法是怎样的。另外除非你使用关键字default,一个方法将被视为抽象的,除非你指定一个访问修饰符,否则该方法将是public关于接口的更多细节:inteface可以提供变量,但变量是publicstaticfinal类型final意味着变量的值永远不会变,我们在Proj0中用到了,引力常数G=6.67e-11一个类可以实现多个接口接口:不能实例化,不能newinterface()可以提供抽象方法和具体方法,abstract方法指的只是函数头声明,具体方法指的是函数中的具体代码实现,只能提供publicstaticfinal类型的变量Java9为接口提供了私有方法3.抽象类介绍抽象类是介于接口和接口之间的中间层次类。抽象类和接口,类的相同点是不能实例化,可以提供抽象方法和具体方法。不同的是,抽象类中的抽象方法是用关键字abstract声明的,而具体方法不使用任何关键字(interface具体方法使用default)可以提供任何类型的变量(interface只有publicstaticfinal类型)可以提供protected而包私有方法子类只能继承一个抽象类接口可以做的,抽象类也可以做,并且可以做更多例子:publicabstractclassGraphicObject{publicintx,y;...publicvoidmoveTo(intnewX,intnewY){...}publicabstractvoiddraw();publicabstractvoidresize();}inImplementations子类必须覆盖抽象类的所有抽象方法Java标准库中的类:摘要:抽象类可以被认为是普通类和接口的混合体。抽象类就像接口一样,所以它们不能被实例化。抽象类中的所有方法就像类中的普通方法一样,除非它们前面有abstract关键字,如果是这种情况,那么它们将被视为接口中的普通方法,不需要有代码体,并且可以通过extends定义抽象类的子类去Override。抽象类和接口一个很重要的区别是一个类只能扩展一个抽象类,但是可以实现多个接口。3.PackagesPackages是组织类和接口的命名空间。命名约定:包名称以网站地址开头(反向)要使用来自不同包的类,请使用以下语法:package_name.classname.subclassnamea=newpackage_name.classname.subclassname();代码简洁可以使用importimportpackage_name.classname.subclassname;importclass:importstaticmember:Wildcardimport*Wildcardreference:最好不要使用wildcardreferences,可能会导致编译错误!