一.eclipse的配置
1.在eclispe中配置java模板代码
模板代码的应用 右键选择Surround With->try/catch Block 选择配置好的模板,添加java模板代码:首选项Preferences->java->Editor->Templates->New
2.在eclipse中导入已有的工程
把工程放到工作台目录下,在eclipse下选择File->Import,选择General->Existing Project into Workspace,选择工程目录就行了
二.增强for循环
for(int r:arr){ }其中int表示数组或是集合的元素类型 r代表每一个迭代变量,arr表示数组或集合的名字。
三.基本数据的自动拆装箱及享元设计模式
装箱:自动把一个基本数据类型装成一个对象。如:Integer ir=2;
拆箱:把对象转换成基本数据类型如 如:println(ir+3); Integer a =5 ,Integer b = 3;这时候a和ab相同。
当a1,a2的值是-128-127之间的小整形时,它就会自动装箱。
享元模式(flyweight):有很多很小对象,他们有很多相同的东西,那你就可以把他们变成一个对象,还有一些不同的东西变成外部的属性作为方法的参数来传入。
四.泛型:
使用泛型,可以建立以类型安全模式处理各种数据的类、接口和方法。泛型的本质是类型参数化,是指用来声明数据的类型本身,也是可以改变的它有实际参数来决定。
创建一个泛型方法常用的形式如下:
[访问权限修饰符] static final <类型参数列表> 返回值类型 方法名(形式参数列表)
泛型方法可以写在一个泛型类中,也可以写在一个普通类中
使用一个泛型方法通常有两种方式
1.<对象名|类名>.<实际类型>方法名<实际参数表>
2 .<对象名|类名>.方法名<实际参数表>
泛型接口的形式: interface 接口名<类型参数表>
注意:
1.泛型中使用的所有的类型参数都是类类型,不能使用基本类型。如可用Generic<Integer>不能用Generic<int>,
2.java中不能抛出和捕获泛型类异常,
3.不能使用泛型数组。如Gerenic<Integer> arr[]=new Generci<Integer>[5]是错误的。
4.不能实例化参数类型对象。如public class Demo<T>{ T t=new T(0); }
五.反射:就是把java类中的各种成分映射成对应的java类。
构造方法,根据class可以获取所有类型的构造方法,方法可以根据参数获取相应的构造方法,然后根据构造方法可以获取对应的对象。
Constructor可以获取对象的实例方法,根据相应的参数实例成对应的对象。
六.类加载器:
Class d所代表的类对应各个类在内存中的字节码
如何得到各个类对应的字节码:
1. 类名.class 如System.class
2. 对象.getClass 如 new Date().getClass()
3. Class.forName(“类名”) 如Class.forName(“java.util.Date”)
4. int.class=Integer.TYPE;
5. 数组的实例对象 数组.isArray();
6. 一个类被类加载器加载到内存中,占用一片存储空间,这个空间里的内容就是内的字节码,不同类的字节码是不同的,因此他们在内存中的容量是不同的这一个个的空间可以分别用一个个的对象来表示。
七. 注解种类:
注解的有效时间:在编写代码的时候(source),在编译的时候存在(class),在运行的时候存在(runtime)。
1. 标记某个方法过时@Deprecated
2. 子类覆盖父类的方法@Override
3. 压缩警告@SuppressWarning
注解总结:javac编译器和开发工具或程序通过反射来了解你的类及各种元素上有无何种标记就去干相应的事,标记可以加在包、类、字段及方法或方法的参数以及局部变量上。
八.操作JavaBean类
一个普通的java类能否被当做一个JavaBean来操作取决于这个类里面有无set和get方法。获取一个javabean的属性是get→后如果后面的单词第二个字母小写属性是而这个单词的首字母小写。
九.可变参数
定义:一个方法接受的参数不固定。
特点:
1.只能出现在参数列表的最后
2. ...位于变量类型和变量名之间,前后有误空格后可以;
3.调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。如
public class Parameter {
public static void main(String[] args) {
System.out.println( add(2,3));
System.out.println( add(2,3,5));
}
public static int add(int x,int...args ){
int sum=x;
/*for(int t:args){
sum+=t;
}
return sum;*/
for(int i=0;i<args.length;i++){
sum+=args[i];
}
return sum;
}
}
十枚举和单例
定义枚举类型其实就是在定义一个类,只不过很多细节由编译器帮你补齐了,可以在一个独立的文件中声明枚举值,或是在某个类中声明枚举成员。
枚举上的方法:定义枚举类型基本上就是在定义类,定义枚举类型时也可以定义方法。如可以为枚举加上一些描述,而不是使用默认的toString()返回值来描述枚举值。
枚举类只有一个对象值的时候同时构造方法私有,相当于是单列。
如:public enum Demo{
sum;
private Demo(){
}
}