Day12_20

作者: yangyangyjj | 来源:发表于2016-12-24 10:48 被阅读0次

    容器(集合框架)--承载其他对象的对象

    list容器

    package Day12_20_01;
    
    
    import java.util.*;
    /*
     *容器(集合框架、Container)承载其他对象的对象;
     *容器不能放基本数据类型,只能放类型对象的 引用;
     *Collection
     *  -List
     *      -ArrayList
     *      -LinkedList
     *  -Set
     */
    class Test01
    {
        
        /*
         * list两个实现版本的比较;
         * ArrayList-底层实现是一个数组,使用连续的内存 可以实现随机存取
         * LinkedList-底层实现是一个双向循环链表,可以使用碎片内存,不能随即存取,
         * 但是增删元素是需要修改引用即可,所以增删元素时有更好的效果
         */
    
        public static void main(String[] args)
        {
            //List<Object> list=new ArrayList<Object>();
            //从java7开始,构造器后面的泛型参数可以省略--砖石语法
            List<Object> list=new ArrayList<>();
            list.add("apple");
            list.add("grape");
            list.add("banana");
            list.add("apple");
            //容器中只能放对象的引用,不能放基本数据类型,因此向容器里添加基本数据类型时会
            //自动装箱(list.add(new Integer(100)));所谓自动装箱就是将基本数据类型处理成对应的包装类型
            list.add(100);
            list.add(true);
            list.add(3.14);
            //基本类型-->包装类型   byte-->Byte  short-->Short  int-->Integer long-->Long
            //float-->Float double-->Double char-->Character  boolean-->Boolean
            
            list.add(new Date());
            //遍历容器的四种方法:
            System.out.println("======java1.8======");
    //      //从java1.8开始可以给容器发送forEach消息对元素进行操作,
    //      //forEach方法的参数可是是方法引用也可以是lambda表达式
    //      //方法引用
            list.forEach(System.out::println);
    //      //lambda表达式
    //      list.forEach(e->{
    //          //这里虽然可以将字符串元素以大写的形式打印出来,但并不改变容器里的元素()
    //          System.out.println(((String) e).toUpperCase());
    //      });
            System.out.println("====普通for循环======");
            for (int i = 0; i < list.size(); i++)
            {
                System.out.print(list.get(i)+" ");
            }
            System.out.println();
            System.out.println("===for-each循环=====");
            for (Object object : list)
            {
                System.out.println(object.getClass());
            }
            
            //指定位置增加元素
            list.add(0, "狗屎");
            
            //已指定对象名的方式删除元素时,若是小数,自动转化其包装类型,若是整数,必须手动转化为其包装类型
            //否则java虚拟机会认为是删除指定位置的元素;
            list.remove(3.14);
            list.remove(new Integer(100));
            
            //指定位置删除
            list.remove(0);
            
            //指定对象名删除,两个apple会删除前面一个apple
            list.remove("apple");
            
            //<String>:泛型参数,指定该容器只能装String类型的元素
            //从java5开始,容器可以指定泛型参数来限定容器中对象应用的类型
            //带泛型参数的的容器比不带泛型参数的容器使用上更加方便
            List<String > temp= Arrays.asList("grape","banana");
            list.retainAll(temp);//根据指定参考系保留所有
            //list.removeAll(temp);//根据指定参考系删除所有
            
            System.out.println("======迭代器========");
            Iterator<Object> iterator=list.iterator();
            while(iterator.hasNext())
            {
                System.out.print(iterator.next()+" ");
            }
            
            //清空
            list.clear();
        }
    
    

    自动装箱与自动拆箱

    package Day12_20_01;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class Test02
    {
        public static void main(String[] args)
        {
            Object object1=100;
            System.out.println(object1.getClass());
            Integer object2=(Integer)object1;
            int a=object2;//自动转换
            int b=(Integer)object1;//强转
            System.out.println(a);
            System.out.println(b);
            
            
            //自动装箱(auto-boxing)int-->Integer
            List<Integer> list=new ArrayList<>();
            for(int i=0;i<10;i++)
            {
                list.add((int)(Math.random()*20));
            }
            list.sort(null);
            
            for(Integer x:list)
            {
                //自动拆箱(auto-unboxing):Integer-->int
                //x本来是属于一个对象,与10(int)做比较是,自动拆箱成int基本类型
                if(x>10)
                {
                    System.out.print(x+" ");
                }
            }
        }
        
    }
    

    简易贪食蛇小游戏

    相关文章

      网友评论

          本文标题:Day12_20

          本文链接:https://www.haomeiwen.com/subject/qsulvttx.html