摘要:六十-20:00要使用静态成员(方法和变量)我们必须给出提供这些个静态成员所在的类。而使用静态导入可以使被导入的类的所有静态变量和静态方法在当前类中可以直接使用,使用这些静态成员无需再给出他们的类名。如下例:不使用静态导入的状况:package cn.edu.bupt;import cn.edu.bupt.common.Common; //需要导入到类的层面即可public class Hello { /** * @param args */ @MyAnno(schoolName="BUPT",studentName="YangM") public st
阅读全文
摘要:一、EnumSet介绍EnumSet的名称说明了其作用,他是在J2SE 5.0后加入的新类别,可以协助建立枚举值的集合,他提供一系列静态方法,可以让您指定不同的集合建立方式。在实际开发中常用的集合类使用较多,枚举类型的Set使用的场合并不是很多。EnumSet是一个泛型,他接受接受枚举类型的对象作为其内部的成员。由枚举类型本身特点决定EnumSet和普通集合类的初始化方式是不一样的,普通集合类的初始化方式如下:List<E> list = new ArrayList<E>;但是EnumSet初始化方式不能按照上述new方式写出来。并且我们不能像这个List一样去随意的想
阅读全文
摘要:JDK 1.5加入了一个全新类型的“类”(与类、接口属于同一个层次)-- 枚举类型。为此JDK1.5引入了一个新关键字:enum一、枚举类型及其原理的介绍1.我们可以这样定义和使用一个枚举类型,枚举名称一般使用大写方式:定义:public enum Color { Red, White, Blue;}注:最后一个枚举类型值可加分号“;”也可不加。使用:Color myColor = Color.Red;2.枚举类型还定义了两个有用的静态方法values() 和valueOf()使用方式: values():package cn.edu.bupt;public class C...
阅读全文
摘要:可变参数使程序员可以声明一个可以接受可变数目参数的方法。注意:可变参数必须是方法声明中的最后一个参数,否则会发生编译错误,因此一个方法的可变参数只可能有一个,而不可能存在两个以上的可变参数。例1:package cn.edu.bupt;public class TestVarArgues { private static int sum(int... nums) { //这里在类型名称后边加入3个点来表示当前参数的类型时int类型,但是参数的数目并不是固定的,传入几个就能使用几个 int sum = 0; for(int i=0; i<nums.leng...
阅读全文
摘要:1.自动装箱/拆箱大大方便了基本类型数据和它们所对应的包装类的使用; 五十七-50:002.自动装箱/拆箱是相对于8个原生的数据类型以及它们的包装类而言的;3.Java中8个原生数据类型比较特殊,因为只有他们不是Class,不会自动继承java.lang.Object类,其余的全部是Class;4.自动装箱/拆箱操作简化了原生数据类型与对应的包装类之间的转换过程;5.自动装箱/拆箱完成了原生数据类型和对应包装类之间的自动转换过程。6.该特点的一大用处就是简化对集合中元素的操作,使得我们向集合中放置对象和从集合中取出内容的时候不用手动的在原生数据和对象数据之间进行转换,取而代之的是直接放置...
阅读全文
摘要:package cn.edu.bupt.genericinterface;import java.util.Iterator;import java.util.LinkedList;import java.util.List;public class ForTest { public static void main(String[] args) { List<String> col = new LinkedList<String>(); col.add("one"); col.add("two"); col.add("
阅读全文
摘要:For-Each循环的加入简化了对集合或数组的遍历其语法如下:for(Type element : List) { System.out.println(element); ...}例如:1.一维数组的遍历package cn.edu.bupt.genericinterface;public class ForTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int[] ...
阅读全文
摘要:1.策略模式概念策略模式(Strategy Pattern)体现了两个非常基本的面向对象设计原则。 1>封装变化概念; 2>编程中使用接口,而不是对接口的实现,即面向接口编程。2.定义: 1> 定义一组算法,将每个算法都封装起来,并且使他们之间可以作为组建互相替换; 2> 策略模式使这些算法在客户端调用它们的时候能够互不影响的变化。3.意义: 1> 策略模式使开发人员能够开发出由许多可替换的部分组成的软件,并且各部分之间是 松耦合的关系; 2> 若连接的特性是软件具有更强的可扩展性,易于维护;更重要的是,他大大提高了软件 的可重用性。4.策略模式的组成: 1
阅读全文
摘要:泛型方法:与泛型类型和C++中的函数模板相类似,就是将泛型定义在方法上。一个方法操作的引用数据类型不确定。如下例: 1 package cn.edu.bupt1; 2 3 public class MainTest { 4 public static void main(String[] args) { 5 GenericMethod<String> gm = new GenericMethod<String>(); 6 7 gm.show("hello,gm.show"); 8 gm.show(18); 9 ...
阅读全文
摘要:ArrayList 和 Iteratorpackage cn.edu.bupt;import java.util.ArrayList;import java.util.Iterator;import java.util.List;public class ArrayListTest { public static void main(String[] args) { //List和ArrayList是泛型 List<String> list = new ArrayList<String>(); list.add("a"); ...
阅读全文
摘要:所谓泛型,顾名思义,“广泛的类型”就是数据类型的参数化。类(或接口)是对象实例的抽象,与之类似,泛型是类的抽象;因此泛型通过传入类型实参("实例化")变成为类(或接口),类通过实例化变成具体对象。因此,ArraList是泛型,ArrayList<String>就是泛型实例化后得到的类,new ArrayList<String>() 就是同过泛型生成的类实例化后得到的对象。使用泛型的好处之一就是减少了强制类型转换引起的运行时风险,即编译正确则运行一定没有问题思想!!如果使用泛型,只要代码在编译时没有出现警告,就不会遇到运行时的“ClassCastExc
阅读全文
摘要:泛型(Generic)增强的“for”循环(Enhanced For loop)自动装箱/自动拆箱(Autoboxing/unboxing)类型安全的枚举(Type safe enums)静态导入(Static import)可变参数(Var args)对于以上这些新特性,能在程序中使用时要尽量使用。
阅读全文
摘要:元数据: 所谓元数据是描述数据的数据,也就是说元数据是描述数据的,就是数据库表中的字段一样,每个字段描述了这个字段下的数据含义。 元数据可用于创建文档、跟踪代码中的依赖性、甚至执行基本编译时的检查。 许多元数据工具,如:XDoclet,将这些功能添加到Java语言中,暂时成为Java编程功能中的一部分。 一般来说,元数据用途有三: 1、文档编制; 2、编译器检查; 3、代码分析。 元数据提供了一种有用的方法来指明方法是否取决于其他方法、它们是否完整、特定类是否必须引用其他类,等等。注解: Java中的注解是Java源代码的元数据,也就是说注解是用来Java源代码的,基本语法就...
阅读全文
摘要:原文链接安装的java会jdk自动关联jar文件,如果是可执行的jar文件,双击就可以运行。可是假设java路径为“D:/Java /jdk1.6.0_12”。在xp下,比较简单1、用“打开方式”指定jar文件由“D:/Java /jdk1.6.0_12/jre/bin/javaw.exe”打开,此时如果双击jar文件的话,应该会报“找不到main入口”的错误。2、打开“我的电脑”,选择“工具”菜单下的“文件夹选项(0)...”然后选择“文件类型”TAB项。3、找到jar文件类型,点击“高级”按钮,出现“编辑文件类型”窗口。4、现在“高级”里面的open操作的应用程序为“D:/Java /jd
阅读全文
摘要:原文链接Fat Jar 打包插件,可以方便的完成各种打包任务,可以包含外部的包等 。Fat-jar它是sourceforge.net下的一个开源工具从http://sourceforge.net/projects/fjep地址可以下载该工具,下载完成后是一个zip压缩包,解压后将plugins文件夹下的net.sf.fjep.fatjar_0.0.27.jar文件夹拷贝到Myeclipse8.5或者8.x的目录下的dropins文件夹下(例如,我用的是Myeclipse8.5,即在D:\StudySoftware\AppData\Local\Genuitec\MyEclipse 8.5\dro
阅读全文
摘要:原文链接使用开源项目:opencsvhttp://opencsv.sourceforge.net/示例代码: 1 import java.io.FileReader; 2 import java.io.FileWriter; 3 import java.io.IOException; 4 import java.util.ArrayList; 5 import java.util.List; 6 7 import au.com.bytecode.opencsv.CSVReader; 8 import au.com.bytecode.opencsv.CSVWriter; 9 10 public.
阅读全文
摘要:原文链接1.synchronized与static synchronized 的区别 synchronized是对类的当前实例进行加锁,防止其他线程同时访问该类的该实例的所有synchronized块,注意这里是“类的当前实例”, 类的两个不同实例就没有这种约束了。那么static synchronized恰好就是要控制类的所有实例的访问了,static synchronized是限制线程同时访问jvm中该类的所有实例同时访问对应的代码快。实际上,在类中某方法或某代码块中有 synchronized,那么在生成一个该类实例后,改类也就有一个监视快,放置线程并发访问改实例synchronized
阅读全文
摘要:原文链接 1 /** 2 使用三种Callback接口作为参数的query方法的返回值不同: 3 以ResultSetExtractor作为方法参数的query方法返回Object型结果,要使用查询结果,我们需要对其进行强制转型; 4 以RowMapper接口作为方法参数的query方法直接返回List型的结果; 5 以RowCallbackHandler作为方法参数的query方法,返回值为void; 6 RowCallbackHandler和RowMapper才是我们最常用的选择 7 * @author Administrator 8 * 9 */ ...
阅读全文
摘要:在Java语言中, abstract class 和interface是支持抽象类定 义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进 行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对 于问题领域本质的理解、对于设计意图的理解是否正确、合理。本文将对它们之间的区别进行一番剖析,试图给开发者提供一个在二者之间进行选择的依据。 理解抽象类 .
阅读全文