您的位置:首页 > 其它

第三部分

2011-05-16 08:41 78 查看
2:
Eclipse 是用java开发的
My Eclipse 是Eclipse 的一个插件
IDE ----集成开发环境 ( Itegrity development environment)
其他开发环境JB等
----------------------------------------------------------------------------------------------------------
3:eclipse工程管理与快捷键配置
开发环境使用工程化的管理方式 便于维护
工程project
工作间Workspace
透视图:若干小窗口的集合
一个workspace包含多个project
一个工作间的设置影响该工作间下的多个工程
配置版本
Window-首选项-java-compiler-
- installed JREs

切换工作间 File-switch workspace
新工作间中创建工程:file—new—project
工程名字上右键,new class,包名(Package):cn,itcast.day1
类名Staticimport-静态导入
Refactor(重构)—rename

配置快捷键
Window-首选项 – General-keys
Content Assist
Perspective与view调试
选中变量,右键断点 debug窗口中,选中变量 右键 watch 看变量的值
显示视图: window—showview
----------------------------------------------------------------------------------------------------------
5:配置eclispe的编译与运行环境
5.0=1.5
设置整个workspace的javac和java
首选项-java-编译器 设置JDK版本
更改运行环境 工作间名上右键 run as –open run dialog –JRE
----------------------------------------------------------------------------------------------------------------------

6:java模板代码
-java-Editor-Template---new



选中要用模板的代码-右键-Surround with-选择tryf
7:导入工程
先把工程文件放入,工作文件夹
文件—import—General---Existing…..
Jdk环境不同时 工程名上右键-Build path-Configure Buildpath,更改JDK运行版本

8:静态导入(1.5版本以上可用)
Imort导入一个类或导入一个包中所有的类。
Import static语句导入一个类中的某个静态方法或所有静态方法。
如: Import static java.lang.Math.max;
Import static java.lang.Math.*;
9:可变参数
只能出现在参数列表最后
…位于变量类型和变量名之间
调用可变参数的方法时,编译器为该可变参数隐含创建的一个数组,在方法体中一数组形式访问可变参数。
Overload 重载
Override 重写



System.Out.println(add(2,3)); 输出
10:增强for循环
语法: for(type 变量名:集合变量名){…}
迭代变量必须在()中定义;集合变量可以是数组或实现了lterable接口的集合类

例:public static int add (int x,int…args){
Int sum = x;
For(int arg:args){
Sum += arg;
}
Return sum;
}
注释 ctrl+shift+/
11: _基本数据的自动拆装箱及享元设计模式



Num1==num2 为true
Num3==num4 为false
Num5==num6 为true
因为装箱时,在-128~127之间的时候不改变对象
享元模式 :flyweight

12:枚举
1枚举值之间用逗号隔开,最后一个用分号;
2枚举中可以有抽象,但必须在枚举值中实现;将if else语句转移成一个一个独立的类;
3 枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个;
枚举类中的方法



15.为枚举定义构造方法
枚举的元素列表必须位于所有元素之前
枚举中的构造方法必须是私有的



在枚举的元素上加一对括号,使用第二个构造方法
16带有抽象方法的枚举
New Date(300){} 子类实例对象调用父类有参数的构造方法
例交通灯
public enum TraficLamp{
RED(30){
public TraficLamp nextLamp(){
return GREEN;
}
},
GREEN(45){
public TraficLamp nextLamp(){
return YELLOW;
}

},
YELLOW(5){
public TraficLamp nextLamp(){
return RED;
}

};
public abstract TraficLamp nextLamp();
private int time;
private TraficLamp(int time){this.time=time;}
}
枚举只有一个元素,单例实现方式+
17反射
Class类
Java程序中的各个java类属于同一类事物,描述这类事物的java类就是class
获取类对象的三种方式
1: 类名.Class,例如System.class
2: 对象.getClass(),例如new Date().getClass()
3:Class.forName(“类名”)例如class.forName(“java.util.Date”); class.forName(“java.lang.String”);
九个预定于的Class实例对象
八个基本数据类型+void
public class ReflectTest{
public static void main(String[] args)throws Exception{

String str1 = "abc";
Class cls1 = str1.getClass();
Class cls2 = String.class;
Class cls3 = Class.forName("java.lang.String");
System.out.printin(cls1 == cls2);
System.out.printin(cls1 == cls3):

}
}
打印出来的是两个true

参看Class.isPrimitive方法的帮助
Int.class ==ingeger.TYPE 数组类型的class实例对象 Class.isArray()



打印出来的是false true false true false true
只要源程序中出现的类型,都有各自的class实例对象int[],void..
----------------------
18: 反射:java类中的各种成分映射成相应的java类。

Constructor类 代表某个类中的一个构造方法
得到某个类的所有构造方法
Constructor [] constructors= Class.forName(“java.lang.String”).get Constructors()
得到某个类的一个构造方法 Constructor [] constructors = Class.forName(“java.lang.String”).get Constructor(StringBuffer.class);//获得方法时要用到类型
创建实例对象
通常方式:String str = new String(new StringBuffer(”abc”);
反射方式: String str = (String)cstructor.newlnstance(new StringBuffer(“abc”)
//调用获得的方法时要用到上面相同类型的实例对象
Class.newlnstance()方法:
例; String obj = (String)Class.forName(“java.lang.String”).newlnstance();
该方法内部先得到默认的构造方法,然后用构造方法创建实例对象,用缓存机制来保存
Field类
代表某个类中成员的一个成员变量-字段
为变量生成源代码,



要它去取某个对象上的对应值,输出5;
如果y是私有的,则



输出3,暴力反射
21:
所有b用a替换
Public class ReflectPoint{
Public String str1 = “ball”;
Public String str2 = “basketball”;
Public String str3 = itcast”;
}
Public String toString(){
Return str1+”:”+str2+”:”+str3;
}
}



Method类
代表某个类中的一个成员方法 对象代表具体方法
调用方法:
通常方式 System.out.println(str.charAt(1));
反射方式System.out.println(char At.invoke(str,1));



如果前面str1= “abc”,则打印出b
如果传递给Method对象的invoke()方法的一个参数是null,说明Method对象对应的是一个静态方法
23用反射的方式调用类中的main方法
静态调用需要知道要调用的类名字
反射调用的时候不用知道名字
数组打包,
数组的反射; 相同的维数,相同的类型,对象得到字节码要用方法
Int [] a = new int [3];
Int [] b= new int [3];
System.out.println(a.getClass()==b.getClass());
System.out.println(a.getClass().getName()); //得到类的名字
System.out.println(a.getClass().getsuperclass().getName());//得到父类的名字
打印出true object object
获取数组里面的值
Class Array

Object obj = null;
PrintObject(obj);
}
Private static void printObject(Object obj){
Class class = obj.getClass();
If(class.isArray()){
Int len = Array.getLength(obj);
for(int i=0;i<len;i++);{
System.out.println(Array.get(obj),i);
}
else{
System.out.println(obj);
}
}
}
27反射的作用
Hashset类和hashCode方法
判断集合中是否有相等的,有相等的放不进去
实现框架功能
配置文件config.properties //用完整的路径,不是硬编码,是运算出来的
new –file--config.properties className=java.util.AraayList
getRealPath()
InputStream ips = new File InputStream(“config.properties”);
类加载器 getClassLoader
***.class. getClassLoader().getResourceStream(“config.properties”);//括号中路径
配置文件放在Classpath目录下
29:内省 introspector---javaBean操作

Javabean是特殊的java类有get和set
Int getAge()
oid setAge(int age)



去掉get和set 的Age为java的属性名。-----若果第二个字母数小的,则把第一个字母小写

内省操作:
两个模块传递多个信息,可以封装到javabean中,值对象VO
例:



33:注解的应用 Annotation
@SuppressWarnings("deprecation")//编译时不提醒过时API的注释
@Deprecated//提醒是过时的
@Overrde//不是父类的覆盖

注解类 @interface A{}
应用注解类的类 @A class B{}
反射操作 Class C{B.class.isAnnotionPresent(A.class);
A a = B.class.getAnnotion(A.class);}
元注解—注解的注解
@ Retention (RetentionPolicy.RUNTIME)// ---内存中 等生存周期
@ Retention (RetentionPolicy.SOURCE)//java源文件 等生存周期 @ Retention (RetentionPolicy.CLASS)// ---class文件 等生存周期
@Target({Element Type.METHOD,Element Type.TYPE})//元素成分

35为注解增加各种属性
@ ITAnnotation(color = “red”,value=”abc”)如果只有value,就可以(“abc”)
Public @interface ITAnnotation{
String color():
String value()
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: