断点:
F5: step into
F6: step over
F7: step return 从某个方法中跳出去
Drop to frame :跳到当前方法的第一行
Resume: 跳到下一个断点,如果没有下一个断点,则运行完整个程序
Watch:观察变量或表达式的值
断点注意的问题:
1、 断点调试完成后,要在breakpoints视图中清除所有的断点
2、 断点调试完成后,一定要记得结束运行断点的jvn(java虚拟机)
Eclipse
快捷键的配置,在windowàpreferencesà然后在左边输入key,点击keys
内容提示: alt+/
快速修复: ctrl+1
导包
: ctrl+shift+o
格式化代码:ctrl+shift+f
上一步在哪:alt+方向键左
下一步在哪:alt+方向键右
添加注释: ctrl+shift+/
去掉注释:ctrl+shift+\
查看方法说明:F2
重置透视图:在window里Reset perspective
要改为大写:选中ctrl+shift+x
要改为小写:选中ctrl+shift+y
复制行:ctrl+Alt+向下键(有些不能用)
查看类的继承关系 ctrl+T
Alt+向上、下键
查看源代码
1、ctrl+鼠标放上去
2、ctrl+shift+T
Ctrl+shift+l显示所有的快捷键
Junit测试框架:
public class Demo2 {
Person
p;
@Before
public void before(){
p=new Person();
}
@Test
public void testRun(){
p.run();
}
@Test
public void testEat(){
p.eat();
}
@After
public void after(){
System.out.println("after");
}
}
JDK 5.0新特性
静态导入、自动装箱/拆箱、增强for循环、可变参数、枚举、泛型、元数据
静态导入:
语法:import static 包名.类名.静态属性|静态方法|*
例如:import static java.lang.System.out
自动装箱/自动拆箱
自动装箱:只开发人员可以把一个基本数据类型直接付给对应的包装类
自动拆箱:指开发人员可以把一个包装类对象直接赋给对应的基本数据类型。
Integer i=1 //装箱,相当于 Integer i=new
Integer(1);
Int
j=I;
//拆箱
典型应用:
List list=new ArrayList();
List.add(1);
Int j=(Integer)list..get(0);
增强For循环
引入增强for循环的原因:在JDK5.0以前的版本中,遍历数组或集合中的元素,需先获得数组的长度或集合的迭代器,比较麻烦
增强for循环只能用在数组,或实现Iterable接口的集合类上
语法格式:
For(变量类型 变量 :需迭代的数组或集合),只适合取数据,修改数组或者集合中的数据,要用传统的方法
@Test
public void test3(){
Map map=new LinkedHashMap();//这样取出的值是有序的
map.put("1","aaa");
map.put("2","bbb");
map.put("3","ccc");
//set集合取值传统方式
Set set=map.keySet();
Iterator it=set.iterator();
while(it.hasNext()){
String key=(String)it.next();
String value=(String)map.get(key);
System.out.println(key + "=" +value);
}
}
@Test
public void test4(){
Map map=new LinkedHashMap();//这样取出的值是有序的
map.put("1","aaa");
map.put("2","bbb");
map.put("3","ccc");
//传统方式2
Set set=map.entrySet();
Iterator it=set.iterator();
while(it.hasNext()){
Map.Entry entry=(Entry)
it.next();
String key=(String)entry.getKey();
String value=(String)entry.getValue();
System.out.println(key + "=" +value);
}
}
使用增强for的方式:
@Test
public void test5(){
Map map=new LinkedHashMap();//这样取出的值是有序的
map.put("1","aaa");
map.put("2","bbb");
map.put("3","ccc");
for(Object obj: map.keySet()){
String key=(String)obj;
String value=(String) map.get(key);
System.out.println(key +"+"+ value);
}
}
可变参数:把可变参数看成数组,
注意:可变参数类型的问题,是对象类型还是基本数据类型?应传递对象类型的数据,否则会出错!
import org.junit.Test;
public class Demo2 {
@Test
public void testSum(){
sum(1,2,3,4,5);
}
public void sum(int ...nums){
int sum=0;
for(int i:nums){
sum+=i;
}
System.out.println(sum);
}
@Test
public void sum2(){
List list=Arrays.asList("1","2","3");
System.out.println(list);
String[] arr={"2","3","4","5"};
list=Arrays.asList(arr);
System.out.println(list);
Integer nums[]={2,4,6};
list=Arrays.asList(nums);
System.out.println(list);
}
}
枚举类:
一些方法在运行时,它需要的数据不能是任意的,而必须是一定范围内的值,此类问题在JDK5以前采用自定义带有枚举功能的类解决,Java5以后就可以直接使用枚举予以解决。一个枚举也可以有构造函数、字段和方法。
import org.junit.Test;
public class Demo1 {
@Test
public void test(){
print(Grade.A);
}
public void print(Grade g){
System.out.println(g.getValue());
}
}
//使用枚举,如何定义枚举的构造函数,方法,和字段去封装更多的属性
enum Grade{ //相当于一个类
A("100-90"),B("89-80"),C("79-70"),D("69-60"),E("59-0");//枚举的值相当于类的对象
private String value;
private Grade(String value){
this.value=value;
}
public String getValue(){
return this.value;
}
}
带抽想方法的枚举
import org.junit.Test;
public class Demo2 {
@Test
public void test(){
print(Grade.A);
}
public void print(Grade g){
String value1=g.localValue();
String value2=g.getValue();
System.out.println(value1);
System.out.println(value2);
}
}
enum Grade{ //相当于一个类
A("100-90"){
public String localValue(){
return "优";
}
}
,B("89-80"){
public String localValue(){
return "良";
}
}
,C("79-70"){
public String localValue(){
return "一般";
}
},D("69-60"){
public String localValue(){
return "差";
}
},E("59-0"){
public String localValue(){
return "不及格";
}
};
private String value;
private Grade(String value){
this.value=value;
}
public String getValue(){
return this.value;
}
public abstract String localValue();
}
枚举类的特性:
1、 枚举类也是一种特殊形式的Java类
2、 枚举类中声明的每一个枚举值代表枚举类的一个实例对象
3、
与Java中的普通类一样,在声明枚举类时,也可以声明属性,方法和构造函数,但枚举类的构造函数必须为私有的,如果是公有的那么其他类在调用时就可以new对象,
4、 枚举类也可以实现接口、或继承抽象类
5、
JDK5中扩展了swith语句,他除了可以接收int、byte、char、short还可以接收一个枚举类
6、 若枚举类只有一个枚举值,则可以当做单例设计模式使用
7、
在实际开发中用户通常通过表单提交一个数据给我们,那么这些值是字符串的,那么这个时候就要检测下是否是枚举类中的值