摘要: 有时类或方法需要对类型变量加以约束。[java] view plaincopyclassArrayAlg{publicstatic<T>Tmin(T[]a){if(a==null||a.length==0)returnnull;Tsmallest=a[0];for(inti=1;i<a.length;i++)if(smallest.compareTo(a[i])>0)smallest=a[i];returnsmallest;}}问题:min方法内部的变量smallest类型为T,意味着它可以是任意类的对象。那么如何确定T所属的类有compareTo方法呢?解答:将T限制 阅读全文
posted @ 2013-02-28 19:10 vincent_hv 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 一个泛型类就是有一个或多个类型变量的类。一般的类和方法,只能使用具体的类型(基本类型或者自定义类型)。如果要编译应用于多种类型的代码就要引入泛型了。例12-1使用Pair类。静态方法minmax遍历数组同时计算出最小值和最大值。用一个Pair返回两个结果[java] view plaincopypackagecore.pair_12_1;publicclassPairTest1{publicstaticvoidmain(String[]args){String[]words={"Mary","had","a","little 阅读全文
posted @ 2013-02-28 19:09 vincent_hv 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 捕获异常必须设置try/catch语句块,最简单的try语句:[java] view plaincopytry{//code//morecode}catch(ExceptionTypee){//handlerforthistype}1、如果在try语句中的任何代码抛出了catch子句中说明的异常类:1)程序跳过try语句块的其余代码2)程序执行catch字句中的处理器代码2、如果try语句块中没有抛出任何异常类则跳过catch子句。3、如果方法中任何代码抛出了在catch子句中没有声明的异常类型,该方法会立即退出。[java] view plaincopypublicvoidread(Stri 阅读全文
posted @ 2013-02-28 19:08 vincent_hv 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 当程序出现异常时,应当次啊去一些异常处理措施:·返回到一种安全状态,并能够让用户执行一些其他命令;·允许用户保存所有操作结果,并以合适的方式终止程序。需要关注的异常问题:1、用户输入错误2、设备错误3、物理限制4、代码错误异常具有自己的语法和特定的继承结构,下面开始介绍:11.1.1异常分类所有已成都由Throwable继承而来,Throwable分为Error和Exception;Exception又分为RuntimeException和IOException。Error类描述Java运行是系统的内部错误和资源耗尽错误。这种情况很少出现RuntimeException是由 阅读全文
posted @ 2013-02-28 19:04 vincent_hv 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 内部类:定义在一个类中的类。为什么要用内部类:1)内部类可以访问其外围类的实例域,包括私有数据。2)内部类可以对同包中的其他类隐藏。3)定义一个回调函数,使用匿名内部类要便捷。6.4.1 使用内部类访问对象的状态实例:一个TimePrinter常规类,他需要通过TalkingClock类的共有方法访问beep标志。注释:TimePrinter类被声明为私有的,这样只有TalkingClock的方法才能生成TimePrinter对象。内部类可以是私有类,常规类只能是包可见性或公有可见性。例6-4源代码:[java] view plaincopypackagecom.corejava.innerc 阅读全文
posted @ 2013-02-28 18:59 vincent_hv 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 6.2 对象克隆,这节的内容实际开发中很少使用,所以略过。之后遇到相应的实例在去学习。6.3 接口与回调回调相当于一个监听器,特定事件或时间采取相应的动作。不做过多解释,直接进入实例。源代码:例6-3,程序给出了一个定时器和监听器的操作行为。定时器启动后弹出一个对话框,点击OK来终止程序。程序运行每隔3秒显示一次当前时间。注意:程序出了导入javax.swing.*和java.util.*外,通过类名导入javax.swing.Timer。这样消除了javax.swing.Timer与java.util.Timer之间的二义性。这里的java.util.Timer是一个与本例无关的类,它主要用 阅读全文
posted @ 2013-02-28 18:57 vincent_hv 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 1、接口不是类;只是对类的一组描述。一个类满足了这一描述就可以使用接口中所提供的方法。例如,Arrays类中的sort方法可以对对象数组进行排序,前提是要满足Comlarable接口。下面是Comparable接口的代码:public interface Comparable { int compareTo(Object other);}即所有实现Comparable接口的类都可以使用compareTo方法。2、接口中的所有方法都是public,所以声明方法时不需要使用public标识。3、接口中绝对不能含有实例域;也不能在接口中实现方法。实例域的提供和方法的实现是由实现接口的类完成的。可以. 阅读全文
posted @ 2013-02-28 18:56 vincent_hv 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 1、为了解决运行时动态更改数组的问题,使用ArrayList类;它与数组很相似,但在增加或删除元素时具有自动调节数组容量的功能。2、ArrayList是采用类型参数的泛型类。用法:ArrayList<Class Name>ArrayList<Employee> staff = new ArrayList<Employee>();3、使用add方法添加元素:staff.add(new Employee("Harry", ...));staff.add(new Employee("Tome", ....));如果调用add 阅读全文
posted @ 2013-02-28 18:55 vincent_hv 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 1、Object类是Java所有类的超类。如果没有明确指出一个类的超类,那么object就是这个类的超类,并且不需要显示的写出。2、Object类型的变量可以引用任何类型的对象:Object obj = new Employee("vincent", 100000);如果要对内容进行操作必须要类型转换:Employee e = (Employee)obj;3、在Java中只有基本数据类型(即数值,布尔值,字符)不是对象。所有的数组类型都是Object的扩展类。5.2.1 Equals方法1、判断两个对象是否有相同的引用。如果两个对象的状态相同,就认为二者相等。例如:两个雇员 阅读全文
posted @ 2013-02-28 18:54 vincent_hv 阅读(274) 评论(0) 推荐(0) 编辑