zoukankan      html  css  js  c++  java
  • Java API —— JDK5新特性

    JDK5新特性
            自动拆装箱、泛型、增强for、静态导入、可变参数、枚举
     
    1、增强for概述        
      1)简化数组和Collection集合的遍历        
      2)格式:            
      for(元素数据类型 变量 : 数组或者Collection集合) {         
        使用变量即可,该变量就是元素             
      }
      3)好处:简化遍历
      4)注意事项:增强for的目标要判断是否为null
    例子1:
    package jdk5;
    import java.util.ArrayList;
    import java.util.List;
    /**
     * Created by gao on 15-12-16.
     */
    /*
     * 增强for:是for循环的一种。
     *
     * 格式:
     *         for(元素数据类型 变量 : 数组或者Collection集合) {
     *            使用变量即可,该变量就是元素
     *       }
     *
     * 好处:简化了数组和集合的遍历。
     *
     * 弊端: 增强for的目标不能为null。
     * 如何解决呢?对增强for的目标先进行不为null的判断,然后在使用。
     */
    public class ForDemo01 {
        public static void main(String[] args) {
            // 定义一个int数组
            int[] arr = {1, 2, 3, 4, 5};
            for (int x = 0; x < arr.length; x++) {
                System.out.println(arr[x]);
            }
            System.out.println("-------------");
            //增强for
            for (int x : arr) {
                System.out.println(x);
            }
            System.out.println("-------------");
            // 定义一个字符串数组
            String[] strArray = {"林青霞", "风清扬", "东方不败", "刘意"};
            for (String s : strArray) {
                System.out.println(s);
            }
            System.out.println("-------------");
            // 定义一个集合
            ArrayList<String> array = new ArrayList<String>();
            array.add("hello");
            array.add("wrold");
            array.add("java");
            for (String s : array) {
                System.out.println(s);
            }
            List<String> list = null;
            // NullPointerException
            // 这个s是我们从list里面获取出来的,在获取前,它肯定还好做一个判断
            // 说白了,这就是迭代器的功能
            if (list != null){
                for(String s : list){
                    System.out.println(s);
                }
            }
            // 增强for其实是用来替代迭代器的
            //ConcurrentModificationException
            // for (String s : array) {
            // if ("world".equals(s)) {
            // array.add("javaee");
            // }
            // }
            // System.out.println("array:" + array);
        }
    }

    例子2:

    package jdk5;
    import java.util.ArrayList;
    import java.util.Iterator;
    /**
     * Created by gao on 15-12-16.
     */
    /*
     * ArrayList存储字符串并遍历。要求加入泛型,并用增强for遍历。
     * A:迭代器
     * B:普通for
     * C:增强for
     */
    public class ForDemo02 {
        public static void main(String[] args) {
            // 创建集合对象
            ArrayList<String> arrayList = new ArrayList<String>();
            // 创建并添加元素
            arrayList.add("hello");
            arrayList.add("world");
            arrayList.add("java");
            // 遍历集合
            // 迭代器
            Iterator<String> it = arrayList.iterator();
            while(it.hasNext()){
                String s = it.next();
                System.out.println(s);
            }
            System.out.println("------------------------");
            // 普通for
            for(int x = 0; x < arrayList.size(); x++){
                String s = arrayList.get(x);
                System.out.println(s);
            }
            System.out.println("------------------------");
            //增强for
            for(String s : arrayList){
                System.out.println(s);
            }
        }
    }

    例子3:

    学生类:
    package jdk5;
    /**
     * Created by gao on 15-12-9.
     */
    public class Student {
        private String name;
        private int age;
        public Student() {
        }
        public Student(String name, int age) {
            this.name = name;
            this.age = age;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
    }

    测试类:

    package jdk5;
    import java.util.ArrayList;
    import java.util.Iterator;
    /**
     * Created by gao on 15-12-16.
     */
    public class ForDemo03 {
        public static void main(String[] args) {
            // 创建集合对象
            ArrayList<Student> array = new ArrayList<Student>();
            // 创建学生对象
            Student s1 = new Student("林青霞", 27);
            Student s2 = new Student("貂蝉", 22);
            Student s3 = new Student("杨玉环", 24);
            Student s4 = new Student("西施", 21);
            Student s5 = new Student("王昭君", 23);
            // 把学生对象添加到集合中
            array.add(s1);
            array.add(s2);
            array.add(s3);
            array.add(s4);
            array.add(s5);
            // 迭代器
            Iterator<Student> it = array.iterator();
            while (it.hasNext()) {
                Student s = it.next();
                System.out.println(s.getName() + "---" + s.getAge());
            }
            System.out.println("--------------");
            // 普通for
            for (int x = 0; x < array.size(); x++) {
                Student s = array.get(x);
                System.out.println(s.getName() + "---" + s.getAge());
            }
            System.out.println("--------------");
            //增强for
            for (Student s : array) {
                System.out.println(s.getName() + "---" + s.getAge());
            }
        }
    }
    2、静态导入(开发不常用)
      1)静态导入概述
            格式:import static 包名….类名.方法名;
            可以直接导入到方法的级别
      2)注意事项
            方法必须是静态的
            如果有多个同名的静态方法,容易不知道使用谁?这个时候要使用,必须加前缀。
    由此可见,意义不大,所以一般不用,但是要能看懂。
    例子1:
    package jdk5;
    /**
     * Created by gao on 15-12-16.
     */
    //import java.lang.Math;
    import static java.lang.Math.abs;
    import static java.lang.Math.pow;
    import static java.lang.Math.max;
    public class StaticImportDemo01 {
        public static void main(String[] args) {
            // System.out.println(java.lang.Math.abs(-100));
            // System.out.println(java.lang.Math.pow(2, 3));
            // System.out.println(java.lang.Math.max(20, 30));
            // 太复杂,我们就引入到import
    //        System.out.println(Math.abs(-100));
    //        System.out.println(Math.pow(2, 3));
    //        System.out.println(Math.max(20, 30));
            // 太复杂,有更简单
            //System.out.println(abs(-100));
            System.out.println(java.lang.Math.abs(-100));
            System.out.println(pow(2, 3));
            System.out.println(max(20, 30));
        }
        public static void abs(String s) {
            System.out.println(s);
        }
    }
    3、可变参数
      1)可变参数概述
            定义方法的时候不知道该定义多少个参数、
      2)格式
            修饰符 返回值类型 方法名(数据类型…  变量名){}
      3)注意:
                这里的变量其实是一个数组
                如果一个方法有可变参数,并且有多个参数,那么,可变参数肯定是最后一个
      4)Arrays工具类中的一个方法
            public static <T> List<T> asList(T... a)
    例子1:
    package jdk5;
    /**
     * Created by gao on 15-12-16.
     */
    /*
     * 可变参数:定义方法的时候不知道该定义多少个参数
     * 格式:
     *         修饰符 返回值类型 方法名(数据类型…  变量名){
     *
     *         }
     *
     *         注意:
     *             这里的变量其实是一个数组
     *             如果一个方法有可变参数,并且有多个参数,那么,可变参数肯定是最后一个
     */
    public class ArgsDemo {
        public static void main(String[] args) {
            int a = 10;
            int b = 20;
            int result = sum(a, b);
            System.out.println("result:" + result);
            // 3个数据的求和
            int c = 30;
            result = sum(a, b, c);
            System.out.println("result:" + result);
            // 4个数据的求和
            int d = 30;
            result = sum(a, b, c, d);
            System.out.println("result:" + result);
            // 需求:我要写一个求和的功能,到底是几个数据求和呢,我不太清楚,但是我知道在调用的时候我肯定就知道了
            // 为了解决这个问题,Java就提供了一个东西:可变参数
            result = sum(a, b, c, d, 40);
            System.out.println("result:" + result);
            result = sum(a, b, c, d, 40, 50);
            System.out.println("result:" + result);
        }
        private static int sum(int... a) {
            int s = 0;
            for (int x : a) {
                s += x;
            }
            return s;
        }
        // public static int sum(int a, int b, int c, int d) {
        // return a + b + c + d;
        // }
        //
        // public static int sum(int a, int b, int c) {
        // return a + b + c;
        // }
        //
        // public static int sum(int a, int b) {
        // return a + b;
        // }
    }

    输出结果:

    result:30
    result:60
    result:90
    result:130
    result:180
     

    例子2:

    package jdk5;
    import java.util.Arrays;
    import java.util.List;
    /**
     * Created by gao on 15-12-16.
     */
    /*
     * public static <T> List<T> asList(T... a):把数组转成集合
     *
     * 注意事项:
     *         虽然可以把数组转成集合,但是集合的长度不能改变。
     */
    public class ArgsDemo02 {
        public static void main(String[] args) {
            // 定义一个数组
    //        String[] strArray = { "hello", "world", "java" };
            //固定参数
    //        List<String> list = Arrays.asList(strArray);
            //可变参数
            List<String> list = Arrays.asList("hello","java");
            // UnsupportedOperationException
            // list.add("javaee");
            // UnsupportedOperationException
            // list.remove(1);
            list.set(1, "javaee");
            for(String s : list){
                System.out.println(s);
            }
        }
    }
     
     
     
  • 相关阅读:
    数据库查询服务框架
    postgresql清理工具
    postgre索引
    SAP模块一句话入门(专业术语的理解)
    SAP订单结算详解
    SAP Datasheet
    ASP.NET MVC5 网站开发实践
    VMware S/4 HANA OP 1511虚拟机下载,64G内存限制解决方案
    SAP标准教材列表
    SAP文章链接
  • 原文地址:https://www.cnblogs.com/yangyquin/p/5051595.html
Copyright © 2011-2022 走看看