第三部分

来源:互联网 发布:手机淘宝联盟怎么用法 编辑:程序博客网 时间:2024/05/01 14:31

2:

Eclipse  是用java开发的

My Eclipse Eclipse 的一个插件

IDE ----集成开发环境 ( Itegrity development environment

       其他开发环境JB

----------------------------------------------------------------------------------------------------------

3eclipse工程管理与快捷键配置

   开发环境使用工程化的管理方式  便于维护

   工程project

   工作间Workspace

   透视图:若干小窗口的集合

       一个workspace包含多个project

       一个工作间的设置影响该工作间下的多个工程

配置版本

Window-首选项-java-compiler-     

                            - installed JREs      

 

切换工作间   File-switch workspace

新工作间中创建工程:filenewproject

       工程名字上右键,new class,包名(Package)cn,itcast.day1

                                 类名Staticimport-静态导入

                  Refactor(重构)rename

 

      配置快捷键

            Window-首选项  General-keys

                                 Content Assist 

Perspectiveview调试

            选中变量,右键断点   debug窗口中,选中变量 右键 watch 看变量的值

       显示视图: windowshowview

----------------------------------------------------------------------------------------------------------

5:配置eclispe的编译与运行环境

    5.0=1.5 

  设置整个workspacejavacjava

首选项-java-编译器  设置JDK版本

  更改运行环境 工作间名上右键 run as open run dialog JRE

 ----------------------------------------------------------------------------------------------------------------------

 

 

 

 

 

 

 

 

6java模板代码

          -java-Editor-Template---new   

 

 

 

 

 选中要用模板的代码-右键-Surround with-选择tryf

7:导入工程

  先把工程文件放入,工作文件夹

  文件importGeneral---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循环

   语法:  fortype 变量名:集合变量名){}

       迭代变量必须在()中定义;集合变量可以是数组或实现了lterable接口的集合类

 

例:public static int add int xintargs{

     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()
 }