Myeclipse:
1、IDE (Integrated Development Environment) 集成开发环境
集成开发环境(简称IDE)软件是用于程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具。就是集成了代码编写功能、分析功能、编译功能、debug功能等一体化的开发软件套。所有具备这一特性的软件或者软件套(组)都可以叫做IDE
2、环境preference的设置,编译版本和运行时需要的JDK
3、工作空间的设置,工程的建立,快捷键的设置
4、透视图:Perspective,debug的断点设置查看
5、工程配置继承于工作台,也可以有自己配置,覆盖工作台的配置。
6、快捷键的绑定和代码模板的设置。
7、在eclipse中导入已有的工程并配置所需的JRE类库。
8、静态导入
9、overlaod(重载) 和override(重写)的区别:
10、可变参数特点:
a、 只能出现在参数列表的最后;
b、 …位于变量类型和变量名之间,前后有无空格都可以
c、 调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。
例题:
Seriable { main(String[] args)
out
out
} sum( a,...b){ sum=a; ( i=0;i<b.;i++){ sum+=b[i]; } sum; }
11、增强for循环:
a、 迭代变量必须在()定义
b、 集合变量可以是数组或者是实现了Iterable接口的集合类
public class Seriable {
public static void main(String[] args) {
System.out.println(sum(6,5,6,3));
System.out.println(sum(6,5,5,3,6));
}
public static int sum(int a,int...b){
int sum=a;
for(int arg:b){
sum+=arg;
}
return sum;
}
}
12、基本数据类型的自动拆装箱及享元模式(FlyWeight)
也就是说在一个系统中如果有多个相同的对象,那么只共享一份就可以了,不必每个都去实例化一个对象
13、枚举:就是要让某个类型的变量取值只能为若干个固定值的一个,否则,编译器就会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值。普通变量的方式在开发阶段无法实现这一目标。枚举是一种特殊的类,其中的每个元素都是该类的一个实例对象。
用普通类实现枚举功能:
建立私有的构造方法
每个元素分别用一个共有的静态成员变量表示
可有若干共有方法或抽象方法。
举例:
EnumTest {
publicstaticvoid
WeekDay weekday=WeekDay.; System..println(weekday.nextDay()); }
枚举类:
good;
WeekDay {
publicfinalstaticSUNnew
public
returnMON
publicfinalstaticMONnew
public
returnSUN
publicabstract
public
returnthisSUN"星期天<FONT face=""" color="#2a00ff">""星期日<FONT face=""" color="#2a00ff">"
private
14、枚举的应用:
EnumTest {
publicstaticvoid
WeekDay1 weekday1= WeekDay1.; System..println(weekday1.name()); System..println(weekday1.getDeclaringClass()); System..println(WeekDay1.valueOf()); }
publicenum
MONSUNFRISTA
15、实现带有构造方法的枚举
枚举实例对象必须在构造函数之前
在枚举实例对象后面加入()里面是所带的参数,无内容表示不带参数
good;
EnumTest {
publicstaticvoid
WeekDay1 weekday1= WeekDay1.; System..println(weekday1.name()); System..println(weekday1.getDeclaringClass()); System..println(WeekDay1.valueOf()); }
publicenum
MONSUNFRISTA
private
out"无参数构造方法<FONT face=""" color="#2a00ff">"
privateint
out"带参数的构造方法<FONT face=""" color="#2a00ff">"
16、枚举总结:
A、 枚举相当于一个类,其中可以定义构造方法、成员变量、抽象方法
B、 枚举元素必须位于枚举体中的最开始部分,枚举元素列表的后面要有(;)与其他成员分隔。把枚举中的成员方法或者变量等放在枚举元素的前面,编译器报告错误。
C、 带构造方法的枚举:
1】 构造方法必须定义成private
2】 如果有多个构造方法,需要在定义元素后加“(参数)”选择哪个构造方法
D、带方法的枚举:
实现抽象的方法:每个元素采用“{ }”内部类的形式进行定义
E、 枚举只有一个成员时,就可以作为一种单例的实现方式。
举例:
good;
TrafficLamp {
publicstaticvoid
Traffic trafficlamp=Traffic.; System..println(trafficlamp); }
publicenum
RED
public
returnYELLOW
GREEN
public
returnRED
YELLOW
public
returnRED
publicabstract
inttime
privateint
thistime
17、透彻分析反射的基础Class类:
JAVA程序中的各个类属于同一个事物,描述这类事物的JAVA类名就是Class。
得到各个字节码对应的实例对象(Class类型)的方法:
1】 类名.class
2】 对象.getClass()
3】 Class.forName(“类名”)
九个预定义Class实例对象
参考Classs.isPrimitive方法的帮助
Int.class==Integer.TYPE
数组类型的Class实例对象:Class.isArray()
总之:只要是在源程序中出现的类型,都有自己的Class实例对象,例如:int[],void….
举例:
publicclass
main(String[] args) Exception {
"lideguo"
class
forName("java.lang.String"
out
out
out
out
outintclass
outintclassclass
outintclassTYPE
outintclass
outintclass
}
" p="" class="MsoNormal" style="MARGIN: 0cm 0cm 0pt" font="" style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" face="宋体" font="" size="2" font="" font="" p="" p="" class="MsoNormal" style="MARGIN: 0cm 0cm 0pt" font="" size="2" font="" style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" face="宋体" font="" span="" lang="EN-US" font="" face="Times New Roman" string="" str="new" string="" new="" stringbuffer="" abc="" font="" span="" font="" p="" p="" class="MsoNormal" style="MARGIN: 0cm 0cm 0pt" font="" size="2" font="" style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" face="宋体" font="" span="" lang="EN-US" font="" face="Times New Roman" string="" str="(String)constructor.newInstance(new" stringbuffer="" abc="" font="" span="" font="" p="" p="" class="MsoNormal" style="MARGIN: 0cm 0cm 0pt" font="" size="2" span="" lang="EN-US" font="" face="Times New Roman" class="" newinstance="" font="" span="" font="" style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" face="宋体" font="" font="" p="" p="" class="MsoNormal" style="MARGIN: 0cm 0cm 0pt" font="" style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" face="宋体" font="" size="2" font="" font="" p="" p="" class="MsoNormal" style="MARGIN: 0cm 0cm 0pt" font="" style="mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" face="宋体" font="" size="2" font="" font="" p="" p="" class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none" align="left" font="" face="" color="black">Constructor constructor = Class.forName().getConstructor(StringBuffer.);String str=new"akbcesdf"
outB、
Point {
privateintx
publicinty
publica"alibaba"
publicb"tudoubaicai"
publicc"geyousuoai"
publicintint
thisx
thisy
public
returna" "b" "c
访问:
import
java.lang.reflect.Field;
ReflectTest {
publicstaticvoidthrows
Constructor constructor = Class.forName().getConstructor(StringBuffer.); String str=(String)constructor.newInstance( StringBuffer()); System..println(str.charAt(2)); Point pont1= Point(2,5); Field fieldy=pont1.getClass().getField(); System..println(fieldy.get(pont1)); Field fieldx=pont1.getClass().getDeclaredField(); fieldx.setAccessible(); System..println(fieldx.get(pont1)); changeToa(pont1); System..println(pont1); } changeToa(Object obj) Exception{ Field[] fields=obj.getClass().getFields(); (Field field:fields){ (field.getType()==String.){ String oldstr=(String) field.get(obj); String newstr=oldstr.replace(, ); field.set(obj, newstr); } } }
19、Method类:代表某个类中的一个成员方法
class"charAt"intclass
out20、用反射方式执行某个类中的
问题:java程序的main时,如何为jdk1.5的语法,整个数组是一个参数,而Invoke方法时,jdk1.5肯定要兼容main方法传递参数的时候,不能使用代码mainMethod.invoke(null,new String[]{“xxxxxx”})
mainMethod.invoke(null,(Object)new String[]{“xxxxxx”})
2】String startClassName=args[0]; Method mainMethod=Class.forName(startClassName).getMethod(, String[]. ); mainMethod.invoke(, (Object) String[]{,,});
21、数组与Object的关系及其反射类型
具有相同维数和元素类型的数组属于同一个类型,具有相同的Class实例对象
代表数组的Class实例对象的getSuperclass()方法,返回的父类为Object类对应的Class
基本类型的一维数组可以被当做Object类型使用,不能当做Objectp[]类型使用;非基本类型的一维素组,不仅可以被当做Object类型使用,又可以当做Objectp[]类型使用。
Arrays.aslist()方法处理int[]和String[]时的差异:
例题:
[] a1= []{3,5,6}; [] a2= [4]; [][] a3= [2][3]; String[] a4= String[]{,,}; System..println(a1.getClass()==a2.getClass()); System..println(a1.getClass()==a3.getClass()); System..println(a1.getClass().getSuperclass().getName()); Object obj1=a1; Object obj2=a2; Object[] obj3=a3; Object[] obj4=a4;
out
out
printObject(Object obj) { Class clazz=obj.getClass(); (clazz.isArray()){ ( i=0;i<Array.getLength(obj);i++){ System..println(Array.get(obj, i)); } }{ System..println(obj); } }