java 基础增强

java基础

//文件复制
public class Demo1 {
    public static void main(String[] args) throws Exception {
        InputStream is = new FileInputStream("F:\\MyEclipseWorkSpace\\myday01\\src\\cn\\itcast\\java\\tools\\myday01\\myday01.txt");
        OutputStream os = new FileOutputStream("F:\\MyEclipseWorkSpace\\myday01\\src\\cn\\itcast\\java\\tools\\myday01\\复件myday01.txt");
        byte[] buf = new byte[1024];
        int len = 0;
        while(is.read(buf) > 0) {
            os.write(buf, 0, len);
        }
        is.close();
        os.close();
    }
}

//使用断点[step over:快捷键F6]
public class Demo2 {
    public static void main(String[] args) {
        int sum = 0;
        for (int i = 0; i <= 10; i++) {
            sum += i;
        }
        System.out.println(sum);
    }
}

//调试方法间的调用关系
//使用断点[step in:快捷键F5]
public class Demo3 {
    public static void main(String[] args) {
        a();
        System.out.println("main()");
    }
    public static void a() {
        b();
        System.out.println("a()");
    }
    public static void b() {
        c();
        System.out.println("b()");
    }
    public static void c() {
        System.out.println("c()");
    }
}

junit的使用

//使用junit运行程序
public class Demo1 {
    @Test
    public void test1() {
        System.out.println("Junit使用");
    }
    @Test
    public void test2() {
        System.out.println("Junit调试");
    }
}

//在myeclipse中的Window --> Show View --> Outline中选择要运行的方法,上述例子中选test1()方法就执行test1()方法;选test2()方法就执行test2()方法;选Demo1就两个方法都执行

//在每个方法执行前后执行一次setUp()方法和tearDown()方法
public class Demo2 {
    @Before
    public void setUp() throws Exception {
        System.out.println("setup()");
    }
    @Test
    public void test1() {
        System.out.println("Test1()");
    }
    @Test
    public void test2() {
        System.out.println("Test2()");
    }
    @After
    public void tearDown() throws Exception {
        System.out.println("teardown()");
    }
}


//在每个类前后执行一次setUpBeforeClass()方法和tearDownAfterClass()方法
public class Demo3 {
    @BeforeClass
    public static void setUpBeforeClass() throws Exception {
        System.out.println("setUpBeforeClass()");
    }
    @Test
    public void test1() {
        System.out.println("test1()");
    }
    @Test
    public void test2() {
        System.out.println("test2()");
    }
    @AfterClass
    public static void tearDownAfterClass() throws Exception {
        System.out.println("tearDownAfterClass()");
    }
}

静态导入

import org.junit.Test;
import static java.lang.Math.PI;
import static java.lang.Math.pow;
import static java.lang.System.out;
//静态导入(导入静态的对象,属性,方法)
//crtl+shift+x转换成大写  crtl+shift+y转换成小写
public class Demo1 {
    @Test
    public void test() {
        double r = 2.3;
        out.println("圆的面积:" + PI * pow(r, 2));
    }
}

自动拆装箱

/*自动拆装箱 JDK5(自动将基本类型和包装类型进行转换)
 * int<->Integer
 */
//crtl+shift+o一次性导入多个包
public class Demo1 {
    @Test
    public void test1() {
        List<String> list = new ArrayList<String>();//尖括号对集合中的类型进行限制
        list.add("jack");
        String name = list.get(0);
        System.out.println("name=" + name); //name=jack
    }
    @Test
    public void test2() {
        int i = 100;
        List list = new ArrayList();
        list.add(i);
        Integer num = (Integer)list.get(0);
        System.out.println("num = " + num); //num = 100
    }
}

增强for循环与集合(Set,List,Map)迭代

//增强for循环(多用于遍历内容)
public class Demo1 {
    @Test
    public void test1() {
        int[] is = {1, 2, 3, 4, 5};
        for(int i = 0; i < is.length; i++) {
            System.out.print(is[i] + " ");
        }
    }
    @Test
    public void test2() {
        int[] is = {1, 2, 3, 4, 5};
        for(int value : is) {
            System.out.print(value + " ");
        }
    }
    @Test
    public void testSet() {
        //set中不允许出现重复元素
        Set<Integer> set = new HashSet<Integer>();
        set.add(100);
        set.add(200);
        set.add(300);
        //传统方式遍历集合
        Iterator<Integer> it = set.iterator();
        while(it.hasNext()) {
            Integer key = it.next();
            System.out.println(key + " ");
        }
    }
    @Test
    public void testList() {
        List<String> list = new ArrayList<String>();
        list.add("jack");
        list.add("marry");
        list.add("sisi");
        //增强for循环遍历集合
        for(String name : list) {
            System.out.print(name + " ");
        }
    }
    @Test
    public void testMap1() {
        Map<Integer,String> map = new HashMap<Integer, String>();
        map.put(100, "jack");    //key = 100  value = "jack"
        map.put(200, "marry");
        map.put(300, "sisi");
        Set<Integer> set = map.keySet();//只获取key值,将map转换为set
        Iterator<Integer> it = set.iterator();
        while(it.hasNext()) {
            Integer key = it.next();
            String value = map.get(key);
            System.out.println(key + "-" + value);
        }
    }
    @Test
    public void testMap2() {
        Map<Integer,String> map = new HashMap<Integer, String>();
        map.put(100, "jack");   
        map.put(200, "marry");
        map.put(300, "sisi");
        Set<Entry<Integer, String>> set = map.entrySet();//entry中存储的是记录<key,value>
        Iterator<Entry<Integer, String>> it= set.iterator();
        while(it.hasNext()) {
            Entry<Integer, String> entry = it.next();
            Integer key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key + "<->" + value);
        }
    }
}

迭代Map的两种方式:

//迭代集合注意的细节
//ctrl+/ 单行注释和取消
//ctrl+shift+/ 注释  ctrl+shift+\ 取消注释
public class Demo2 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("jack");
        list.add("marry");
        list.add("sisi");
        //传统方式遍历集合
//      Iterator<String> it = list.iterator();
        ListIterator<String> it = list.listIterator();
        while(it.hasNext()) {
            String key = it.next();
            System.out.print(key + " ");
            //list.add("qq");
            //动态通知迭代器,加入了新元素,从而迭代器自动通知list集合
            it.add("qq");
        }
        System.out.println("list后长度:" + list.size());
        it = list.listIterator();
        while(it.hasNext()) {
            String key = it.next();
            System.out.print(key + " ");
        }
    }
}

//在迭代集合时,一定要动态通知Iterator,而不要动态通知List集合,应选用ListIterator

可变参数

//可变参数
public class Demo1 {
    public static void main(String[] args) {
        String[] arr = {"jack", "marry", "sisi", "soso"};
//      show1(arr);
//      show2(arr);
        show3("qq","jack", "marry", "sisi", "soso");
    }
    public static void show1(String[] arr) {
        for(String a : arr) {
            System.out.print(a + " ");
        }
    }
    public static void show2(String...arr) {
        for(String a : arr) {
            System.out.print(a + " ");
        }
    }
    //可变参数只能放置在参数列表最后
    public static void show3(String qq, String...arr) {
        System.out.println("第一个参数是:" + qq); //第一个参数是qq
        for(String a : arr) {
            System.out.print(a + " ");
        }
    }
}

//可变参数
//1、参数的个数是不确定的
//2、可变参数只能放置在参数的最后,即最右边
//3、可变参数最少0个,最多1个
//4、编译器将可变参数当作一个一维数组来对待

//枚举
//1、当取值是某范围中的之一,这时可以使用枚举
//2、每一个枚举值相当于该枚举类的一个实例变量 
//3、枚举类与普通类一致,可以继承或实现,如果有抽像方法的话,可以利用每个枚举值以匿名内部类的方式去实现,枚举类的构造方法必须是私有的
//4、枚举值可以用在switch()语句中

//运行时验证枚举:
//学生
public class Student {
    //姓名
    private String name;
    //等级
    private String grade; //等级只能是A,B,C,D,E
    public Student(){}
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getGrade() {
        return grade;
    }
    public void setGrade(String grade) throws Exception {
        //matches()方法中的参数为正则表达式,枚举类型有matches()方法
        if(grade!=null && grade.matches("A|B|C|D|E")) {
            this.grade = grade;
        }else{
            throw new Exception();
        }
    }
}

//选中行+Alt+上下键任意移动代码
public class Demo1 {
    public static void main(String[] args) throws Exception {
        Student student = new Student();
        student.setName("jack");
        student.setGrade("D");
        //student.setGrade("F");  抛出错误
        System.out.println("姓名:" + student.getName());
        System.out.println("等级:" + student.getGrade());
    }
}

//编译时验证枚举:
//分数类
public class Grade {
//模拟枚举
    public static Grade A = new Grade("A", "90-100");
    public static Grade B = new Grade("B", "80-89");
    public static Grade C = new Grade("C", "70-79");
    public static Grade D = new Grade("D", "60-69");
    public static Grade E = new Grade("E", "<60");
    private String tip;
    private String desc;
    private Grade(String tip, String desc) {
        this.tip = tip;
        this.desc = desc;
    }
    public String getTip() {
        return tip;
    }
    public String getDesc() {
        return desc;
    }
}

//学生
public class Student {
    //姓名
    private String name;
    //分数类
    private Grade grade;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Grade getGrade() {
        return grade;
    }
    public void setGrade(Grade grade) {
        this.grade = grade;
    }   
}

//选中行+Alt+上下键任意移动代码
public class Demo1 {
    public static void main(String[] args) throws Exception {
        Student student = new Student();
        student.setName("jack");
        student.setGrade(Grade.A);
        System.out.println("姓名:" + student.getName());
        System.out.println("等级:" + student.getGrade().getTip());
        System.out.println("分数区间:" + student.getGrade().getDesc()); 
    }
}

//编译时验证枚举:
//分数枚举类
public enum Grade {
    A("A", "90-100"),
    B("B", "80-89"),
    C("C", "70-79"),
    D("D", "60-69"),
    E("E", "<60");
    private String tip;
    private String desc;
    private Grade(String tip, String desc){
        this.tip = tip;
        this.desc = desc;
    }
    public String getTip() {
        return tip;
    }
    public String getDesc() {
        return desc;
    }
}

//学生
public class Student {
    //姓名
    private String name;
    //分数类
    private Grade grade;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Grade getGrade() {
        return grade;
    }
    public void setGrade(Grade grade) {
        this.grade = grade;
    }   
}

//选中行+Alt+上下键任意移动代码
public class Demo1 {
    public static void main(String[] args) throws Exception {
        Student student = new Student();
        student.setName("marry");
        student.setGrade(Grade.A);
        System.out.println("姓名:" + student.getName());
        System.out.println("等级:" + student.getGrade().getTip());
        System.out.println("分数区间:" + student.getGrade().getDesc()); 
    }
}

//枚举类常用方法:
//季节枚举类
public enum Season {
    SPRING{
        public void show() {
            System.out.println("春天");
        }   
    },
    SUMMER{
        public void show() {
            System.out.println("夏天");
        }
    }, 
    AUTOMN{
        public void show() {
            System.out.println("秋天");
        }
    },
    WINNTER{
        public void show() {
            System.out.println("冬天");
        }
    };
    public abstract void show();
}

/**
 * 枚举类的常用方法
 * @author L J
 */
public class Demo1 {
    public static void main(String[] args) {
        Season season = Season.AUTOMN;
        //打印枚举值
        System.out.println(season.name());    //AUTOMN
        //打印枚举值下标
        System.out.println(season.ordinal()); //2
        //遍历枚举类中的枚举值
        Season[] seasons = season.values();  
        for(Season s : seasons) {
            System.out.println(s.name());
        }

        //判断SPRING是否是枚举类中的值,是就返回枚举名称,不是抛出异常
        Season flag = Season.valueOf(Season.class, "SPRING");
        System.out.println(flag); //SPRING
        season.show(); //秋天

        //枚举用于switch语句
        String msg = null;
        switch(season) {
        case SPRING:
            msg = "1";
            break;
        case SUMMER:
            msg = "2";
            break;
        case AUTOMN:
            msg = "3";
            break;
        case WINNTER:
            msg = "4";
            break;
        }
        System.out.println(msg); //3
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值