Java中,抽象类和接口有很多不同之处,但是最重要的一个是Java中限制一个类只能继承一个类,但是可以实现多个接口。抽象类可以很好的定义一个家族类的默认行为,而接口能更好的定义类型,有助于后面实现多态机制。关于这个问题的讨论请查看答案。
Java8在Java历史上是一个开创新的版本,下面JDK8中5个主要的特性:Lambda表达式,允许像对象一样传递匿名函数StreamAPI,充分利用现代多核CPU,可以写出很简洁的代码Date与TimeAPI,最终,有一个稳定、简单的日期和时间库可供你使用扩展方法,现在,接口中可以有静态、默认方法。重复注解,...
虽然JDK1.7不像JDK5和8一样的大版本,但是,还是有很多新的特性,如try-with-resource语句,这样你在使用流或者资源的时候,就不需要手动关闭,Java会自动关闭。Fork-Join池某种程度上实现Java版的Map-reduce。允许Switch中有String变量和文本。菱形操作符(&am...
DOM解析器将整个XML文档加载到内存来创建一棵DOM模型树,这样可以更快的查找节点和修改XML结构,而SAX解析器是一个基于事件的解析器,不会将整个XML文档加载到内存。由于这个原因,DOM比SAX更快,也要求更多的内存,不适合于解析大XML文件。
Serializable接口是一个序列化Java类的接口,以便于它们可以在网络上传输或者可以将它们的状态保存在磁盘上,是JVM内嵌的默认序列化方式,成本高、脆弱而且不安全。Externalizable允许你控制整个序列化过程,指定特定的二进制格式,增加安全机制。
throw用于抛出java.lang.Throwable类的一个实例化对象,意思是说你可以通过关键字throw抛出一个Error或者一个Exception,如:thrownewIllegalArgumentException(“sizemustbemultipleof2″)而throws...
接口用于定义API。它定义了类必须得遵循的规则。同时,它提供了一种抽象,因为客户端只使用接口,这样可以有多重实现,如List接口,你可以使用可随机访问的ArrayList,也可以使用方便插入和删除的LinkedList。接口中不允许写代码,以此来保证抽象,但是Java8中你可以在接口声明静态的默认方法,这种方法...
publicstaticintdateDiff(Dated1,Dated2)throwsException{longn1=d1.getTime();longn2=d2.getTime();longdiff=Math.abs(n1-n2);diff/=3600*1000*24;returndiff;}
java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分,它们都有getTime方法返回毫秒数,自然就可以直接构建。java.util.Date是java.sql.Date的父类,前者是常用的表示时间的类,我们通常格式化或者得到当前时间都是用他,后者之后在读写数据库的时候用他,因为Prepa...
Java中,可以使用SimpleDateFormat类或者joda-time库来格式日期。DateFormat类允许你使用多种流行的格式来格式化日期。参见答案中的示例代码,代码中演示了将日期格式化成不同的格式,如dd-MM-yyyy或ddMMyyyy。