Java基础加强1

本文介绍Eclipse中的调试技巧,包括断点设置、常用快捷键等,并详细解析JDK5新增特性,如静态导入、自动装箱/拆箱、增强for循环、枚举等。

断点:

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、  在实际开发中用户通常通过表单提交一个数据给我们,那么这些值是字符串的,那么这个时候就要检测下是否是枚举类中的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值