您的位置:首页 > 编程语言 > Java开发

基础加强,JDK1.5新特性,反射,内省

2011-10-15 22:29 253 查看
Eclipse的使用,

f5.跳入,step into

f6跳过,step oevr

f7,跳出 step return

drop to frame:跳到当前方法的第一行

resume:跳到下一个断点(如果没有下一个断点,则运行完整个程序)

watch:观察变量或者表达式的值

断点注意的问题

1. 断点调试完成后,要在breakpoint视图中清楚所有断点。

2. 断点调试完成之后一定要结束运行断点的jvm

Ctrl+L是查看所有快捷键

Junit java里边的一个测试工具,你写完程序要测试吧?就用它,你写完测试类之后,在方法上加个@Test

Assert //断言,他有很多方法,就是判断如果期望值和你测试的输出值一样,则成功

————————————————————

JDK5.0,新特性

1, 静态导入,import static包名.类名.静态属性|静态方法|*

Eg: import static java.lang.System. out//你只要在页面加入这个,输出的时候

就可以out.println();不用写System了

//通常是不用的,因为静态导入虽然让代码简洁了,但是阅读性却差了!

2自动装箱/拆箱:指的是开发人员可以吧一个基本数据类型直接赋给对应的包装类

拆箱:指的是开发人员可以吧一个包装类对象直接赋给对应的基本数据类型。

Integer i = 1;//装箱

int j =1;//拆箱

典型应用

List list = new ArrayLisr();

List arr(new Inter(1));

可以直接写成list。add(1);//jdk1.5才支持装拆箱

增强for循环

迭代不要想得太复杂,就是循环输出。迭代器就是写一个方法,这个方法里能循环输出你的结果。这个方法就是迭代器了

增强for循环只适合取数据,不能存

创建工作间,、File选switch workespce,就是每人都有一套风格,设置好自己的快捷键什么的

良好的工作喜欢,写包名,包名是公司网址倒过来写

给自己的工作间配备帮助快捷键 alt+/ (Content Assist)

注意可能有相同的快捷键设置,所以要吧相同的快捷键解除了

断点调试:

视图:每一个小窗口叫视图

各种视图的集合窗口,就是一个画面上很多小窗口

配置java和javac:运行环境java版本一定要比编译环境javac高才可以

模板代码:就是自定义一段代码的快捷键。

导入工程:先把要导入的工程考到工作间中,然后用文件菜单下import导入,添加。

Jdk1.5新特性:

静态导入:先说一下import语句可以导入一个类或者某个包中所有的类,

1静态导入:import static 导入静态方法或者所有静态方法

(重载,重写的区别)重载,两个参数的参数列表类型个数都一样,但是返回值不一样就不是重载

重载:父类的权限是私有的,子类其他地方跟父类一样,这不是重载。

2可变参数:只能出现在参数列表的最后,...位于变量类型和变量名之间,前后有无空格都可以,

Public static int add(int x, int...args)

3 增强for循环

语法

for(type变量名:集合变量名){。。。}

public static int add(int x,int...args)

{

Int sum= x;

For(int arg;args)

{

sum= sum+arg;

}

Return sum;

}

4,基本数据类型的自动拆箱与装箱

自动装箱:Integer num =12.//吧12一个整数装箱成一个Integer的对象

自动拆箱:System.out.println(num+12);//吧num这个对象拆箱成整数与12相加。

基本类型的整数在装箱的时候,也就是数字在一个字节之内,-128到127之间的数。一旦把他们包装成一个Integer对象的时候,就会把他们缓存在一个池里面,如果下次又要把一个整数对象装箱到Integer对象的时候,他就会先看池里有木有,有的话就直接在池里边拿出来,这样就节省了空间。

享元模式:flyweight

当有很多很小的对象,他们有很多相同的属性,吧他们变成一个对象,那些不同的属性把他们变成方法的参数,称之为外部状态,那些相同的属性称之为内部状态。

5 枚举

为什么要有枚举

在某些情况下, 一个类的对象是有限而且固定的(例如:季节类, 行星类), 这种实例有限而且固定的类, 在 Java 中被称为枚举类

public enum WeekDay {

SUN(1),MON,TUE,WED,THI

private WeekDay(){}

private WeekDay(Int day){}

}

1元素必须放在枚举类的第一行,

2, 构造方法必须是私有的。

3, 在元素后面括号里可以指定一个数子来制定调用哪个构造方法。

反射不是bJDK1.5的新特性,但是框架会用到

Class这个字母是大写的,这不是关键字,是个类,代表了什么事物呢?

众多的人就用person类表示。众多的java类就用Class表示,

Person 类代表着众多的人对象,Class又对应着什么呢?

对应各个类在内存的字节码,例如,对应person类的字节码或者别的类的字节码

l Java 程序中获得 Class 对象通常有如下三种方式:

• 使用 Class 的 forName() 静态方法eg:Class.forName(“java.util.Date”);

类名.class 例如: System.class

• 调用某个对象的 getClass() 方法 :new Date().getClass()

反射

Java的反射就是把java类中的各种成分映射成相应的java类,比如说一个方法的返回值不也是一个类吗

我的理解,就是把类中对象的不管什么方法,变量,成员都定义成一个类(对象)

我们用Class类中的方法就可以得到这些实例的对象,这些对象有什么用呢?

构造方法的反射应用:

Constructor类代表某个类中的一个构造方法

Constructor [] counstructors = Class.forName(“java.lang.String”)gerConstructors();

得到某一个构造方法

Foele 代表某个类中的成员变量

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

Hashcode

1, hashcode只能用在哈希表类的集合中,如果用在想ArrayList集合中是没有用的。

2, 当一个对象被储存进hashset集合后,就不能修改这个对象中的那些参与计算哈希值的字段了,否则,对象修改后的哈希值与最初存进去的哈希值就不同了。这也是内存泄露

框架

框架相当于房子,房子需要门窗,门窗就相当于工具类,框架调用用户提供的类

不同的人能把房子装修得不一样,框架就是一个半成品的房子,以后开发用框架效率高啊

内省 IntroSpector—》主要对JavaBean操作。

JavaBean是一个特殊的java类,里边的方法名要按照特殊的规则取名字。

就看第二个字母,如果是大写,就全大写,如果是小写就全小写
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: