eclipse 大型开发的集成软件
应用最广
安装myeclipse之后
功能更强
主要有工作区
工程两个概念
工程将很多有关联的java文件放到同一个工程中这样这些java文件就可以同时执行大大提高效率
同时应该多主要eclipse的开发小技巧可以大大节省时间
静态导入
import static javalangMath*;这样就可以直接调用Math中的静态方法如max()如果不导入就要写成Mathmax()
高级for循环
for(Object obj : array) { 代码块}
其中array为Object类型数组或者集合这样就可以实现数组或集合的遍历
枚举(enum)
可以看成一个包含很多元素的类如public enum WeekDay{ SUNMONTUE}
对于其中元素可以直接引用WeekDaySUN
几个重点方法WeekDayvalueOf(SUN)就是获得一个WeekDay元素实例SUN
***枚举类中构造方法必须private化所以可用于单例设计模式
可变参数(jdk新特性重点)
public static int plus (int xint … args) //加…表示不确定
{
int sum = ;
for(i=;i<argslength;i++) //参数被放入数组中
{
sum+=args[i];
}
return sum;
}
这样就可以随便调用了plus()plus()……都可以
基本数据的知道装修及拆箱(jdk新特性)
如 Integer i = ;
实际上执行上面那句代码的时候系统为我们执行了Integer i = new Integer() 此即基本数据类型的自动装箱
享源模式运用共享技术有效地支持大量细粒度的对象
概念也就是说在一个系统中如果有多个相同的对象那么只共享一份就可以了不必每个都去实例化一个对象比如说一个文本系统每个字母定一个对象那么大小写字母一共就是个那么就要定义个对象如果有一个M的文本那么字母是何其的多如果每个字母都定义一个对象那么内存早就爆了那么如果要是每个字母都共享一个对象那么就大大节约了资源
在Flyweight模式中由于要产生各种各样的对象所以在Flyweight(享元)模式中常出现Factory模式Flyweight的内部状态是用来共享的Flyweight factory负责维护一个对象存储池(Flyweight Pool)来存放内部状态的对象Flyweight模式是一个提高程序效率和性能的模式会大大加快程序的运行速度应用场合很多
反射
实质把类中各成分映射成相应java类如成员变量成员方法构造方法main方法
用Class类来代指这类事物主要与class的区别class只是一个修饰语Class就是具体的类本质是字节码
获取Class字节码的方法
类名class如intclassStringclassIntegerclass
getClass() 如String str = asd; strgetClass()
ClassforName(类名)
Class的几个重要方法isPrimitive()是否为基本数据类型
一构造方法的反射getConstructor(parameter(typeclass) ; getConstructors()(获得的是构造方法数组)
如Constructor constructor = StringclassgetConstructor(StringBufferclass)
String str = (String)connstructornewInstance(new StringBuffer(ades))
其中newInstance(parametertype)是最重要的方法可以直接获得所属类的实例对象
二成员变量的反射Field:
class Point p {int x=;int y =;}
Field fieldx = pgetClass()getField(x)
Systemoutprintln(fieldxget(p)) 即可得到p中x的值
三成员方法的反射
必须导入javalangreflect*;包治好才能使用
String str = dafsf
Method methodCharAt = StringclassgetMethod(charAtintclass)
Systemoutprintln(methodCharAtinvoke(str))
方法的反射是最能 体现反射的意思的即以方法为中心原来作用的类和参数都作为该方法的参数
四main方法的反射
package combaiduexam;
import javalangreflectMethod;
class Point {
public static void main(String[]args)throws Exception
{
String name = args[];
Method mainMethod = ClassforName(name)getMethod(main String[]class)
mainMethodinvoke(null (Object)new String[]{eAWDRrgsfegs}) //此时强制转换特别重要
}
}
class Hello
{
public static void main(String[]args) {
for(String str:args){
Systemoutprintln(str)
}
}
}
将main方法发射的实例
五数组的反射
有一个关于数组反射的工具类Array在javalangreflect包中
关键方法Arrayget(Object [] obj int i)得到obj数组中第i个元素i的值