---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO开发S</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------
一.eclipse使用技巧
1.透视图:多个小窗口的集合。java透视图、Debug透视图等
查看变量值:设置断点->Debug->在窗口中右键watch
2.包名:运用URL来起名字,例如 cn.itcast.xxx
3.配置快捷键方式:window-->preferences(首选项)->General->keys 切换工作间后要重新配置所有的属性
4.设置单个程序的javac和java:window-->preferences(首选项)->compiler(编译器)/Installed JREs(运行)
5.模版代码:window-->preferences(首选项)->java->Editor->templtes(模版)
6.导入工程:先把工程copy到当前workspace,然后File->import->General->Existing Projects into Workspace
如果jdk版本不同则可以通过BuildPath来设置新的java类库。
二.静态导入(JDK1.5新特性)
import: 导入一个类或者某个包中所有的类。
import static 包名.类名.; 导入某个类下的所有静态方法
三.可变参数(JDK1.5新特性)与增强for循环
1.可变参数的特点:
·只能出现在参数列表的最后;
·...位于变量类型和变量名之间,前后有无空格都可以;
·调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。
定义可可变参数的格式:
publicstatic void method(int x,int... args )
2. 增强for循环
格式:for(type 变量名:集合变量名){ ..... }
注意事项:迭代变量必须在( )中定义;集合变量可以是数组或者实现Iterable接口的集合.
public static void method(int x,int... args ){
int sum=x;
for(int arg : args){
sum+=arg;
}
return sum;
}
四.基本数据类型的自动拆箱与装箱(JDK1.5新特性)
Integernum=12; 将基本数据类型自动封装成对象;
注意:Integer num1=12;
Integer num2=15;
num1与num2是同一个对象,当num的值在-128到127之间是都相等,这是一中模式即享元模式(flyweigth)。
五.枚举(enum) (JDK1.5新特性) :枚举是一种特殊的类,其中每个元素都是该类的一个实例对象。
用普通类实现枚举功能:
·私有构造方法
·每个元素分别用一个公有的静态成员表示
·可以有若干个公有方法或者抽象方法,采用抽象方法定义nextDay()就将大量的if else语句转换成了独立的类(匿名内部类)。
定义一个枚举类:
public enum WeekDay{
SUN,MON,TUE,WED,THR,FRI,SAT;
}
注意:枚举元素必须位于枚举体中的最开始部分,枚举元素列表的后要有分号与其他成员分隔。
定义枚举类中的方法时,一般用抽象方法,然后创建元素的子类对象覆盖此方法。
枚举元素后面加上一对大括号{}来指定创建该元素实例对象时候所运用的构造函数。例SUN{};
public enum TrafficLamp{
RED(30){
public TrafficLampnextLamp()
{
return GREEN;
}
},
YELLOW(10){
public TrafficLampnextLamp()
{
return RED;
}
},
GREEN(20){
public TrafficLampnextLamp()
{
return YELLOW;
}
};
public abstract TrafficLampnextLamp();
private int time;
private TrafficLamp(int time){this.time=time;};
}
如果枚举只有一个成员是,就可以当作一种单例的实现方式。
六.反射
1.获取各个字节码对应的实例对象
·类名.class
·对象.getClass();
·Class.forName(“类名”);
2.Constructor类:代表某个类中的构造方法
·得到某个类中的所有的构造方法Constructor[]constructors=Class.forName("").getConstructors();
·得到某一个构造方法
Constructorconstructor=Class.forName("").getConstructor();
·创建实例对象
通常方式:String str=new String(new StringBuffer(""))
反射方式:String str=(String)constructor.newInstance(new StringBuffer(""));
·Class.newIntance()方法
该方法内部先得到默认的构造方法然后用该构造方法创建实例对象;
3.Field类:代表某个类中的成员变量
getField()方法只能得到public修饰的成员变量的值;
getDeclaredField()可以得到私有private修饰的成员变量,要想得到其值可以用setAccessible(true)方法显示(暴力反射)
Field fieldxx=对象.getClass().getField("xx");
fieldxx不是对象身上的变量,而是类上的变量。
注意:变量的修饰是public还是private
4.Method类:代表某个类中的成员方法。
通常方式:对象.method();
运用反射的方式调用某个类中的main方法:
反射方式:Method method=类名.class.getMethod("方法名","方法的参数");
method.invoke(对象,参数); 如果是method.invoke(null,参数);则说明该方法是静态方法。
自定义程序调用mian方法时,jdk1.5为了兼容1.4 new String[]{"xx","xx","xx"} 不当做一个数组而是三个参数 应该按照1.4接收Object类型数组来定义即new Object[]{new String[]{"xx","xx","xx"}}
或者(Object) new String[]{"xx","xx","xx"}
5.数组的反射
·具有相同维数和元素类型的数组属于同一个类型,即具有相同的Class实例对象。
·基本类型的一维数组可以被当作Object类型使用,不能当作Object [] 类型使用;非基本类型的一维数组,既
可以当作Object使用,又可以当作Object [] 类型使用。
·Arrays.alist()方法处理int[] 和String[]时的差异
String类型的可以直接列出数组中的元素;但是int(基本数据)类型的不可以,因为为了兼容jdk1.4,int类
型的不可以被当作一个Object[]类型使用。
·Array工具类用于完成对数组的反射操作。
·hashCode()方法的作用:在一个数组中存储对象时,通过 hashCode 得到的哈希值来计算数组的索引位置常,
然后根据这个索引位置进行存取。多个对象计算出来的索引位置相同时,用链表保存。
·内存泄漏:是指在内存对象明明已经不需要的时候,还仍然保留着这块内存和它的访问方式(引用)。
例如:在集合中存储对象时,存储完后改变某个对象的成员的属性,然后将该对象删除,结果不
会删除掉集合中的该对象。
6.反射的作用:实现框架功能
·加载配置文件
InputStream ips=new FileInputStream("");
Properties prop=new Properties();
prop.load(ips);
ips.close();
·获取配置文件:getRealPath();先得到总目录,然后获得其中的配置文件
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.csdn.net"target="blank">.Net培训</a>、期待与您交流! ----------------------