Java2

来源:互联网 发布:php curl返回值为空 编辑:程序博客网 时间:2024/05/09 19:17

 

Myeclipse

1IDE (Integrated Development Environment) 集成开发环境 

 集成开发环境(简称IDE)软件是用于程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面工具。就是集成了代码编写功能、分析功能、编译功能、debug功能等一体化的开发软件套。所有具备这一特性的软件或者软件套(组)都可以叫做IDE

2、环境preference的设置,编译版本和运行时需要的JDK

3、工作空间的设置,工程的建立,快捷键的设置

4、透视图:Perspectivedebug的断点设置查看

5、工程配置继承于工作台,也可以有自己配置,覆盖工作台的配置。

6、快捷键的绑定和代码模板的设置。

7、在eclipse中导入已有的工程并配置所需的JRE类库。

8、静态导入

9overlaod(重载)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);          }                          }      } 

 

 

19Method类:代表某个类中的一个成员方法

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

2String 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);      }   }