黑马程序员--集合工具类、其他对象、IO流概述

 ---------android培训java培训、期待与您交流! ----------    

 

一.集合框架的工具类:内部封装好的静态功能

     1.Collections:用于操作集合的工具类

            List<String> list = new ArrayList<String>();

            .....

         ①Collections.sort(list),对容器中元素按自然顺序排序

         ②Collections.max(list),获取list容器中元素的最大值

         ③Collections.binarySearch(list,"指定对象"),二分查找(查找指定对象),返回负数表示要查找对象不存在

         ④Collections.fill(list,"指定对象"),替换,将list中元素全部替换为指定对象

            Collections.replaceAll(list,oldObj,newObj),替换,将list中指定元素替换为新对象

         ⑤Collections.reverse(list),反转,交换集合中元素位置

         ⑥Collections.reverseOrder(new 比较器对象()),返回一个比较器,将按照指定比较器强行逆转元素的顺序

         ⑦Collections.synchronizedList(list),返回一个线程安全的集合

         ⑧Collections.swap(list,index1,index2),为指定位置换位置

         ⑨Collections.shuffle(list),将list集合中的元素位置随机化

  

    2.Arrays:用于操作数组的工具类

             String[] str = {"aa","bb","cc"};

      ①Arrays.sort(str),将数组中元素排序,也可以传入参数按指定位置排

     ②Arrays.fill(str),替换数组中的元素

      ③Arrays.asList(str):返回一个泛型集合,把数组变成集合可以使用集合的思想和方法来操作数组                    

                ArrayList<String> al =  Arrays.asList(str);  //但不能进行增加删除操作.

                //把数组变集合,数组中的对象会直接转成集合中的对象

     ④集合转成数组:为了限定对元素的操作

                 ArrayList<String> al = new ArrayList<String>();

                 al.toArray(new String[al.size()]); //指定数组的长度为集合的长度

     ⑤高级for循环:for(数据类型  变量名  : 被遍历的集合或数组){...}

                这种遍历方式虽然简化了代码,但有局限性,即它只获取元素,而不能操作元素

                和传统for的区别:高级for必须有被遍历的目标,所以在遍历数组时最好使用传统for

     ⑥可变参数:JDK1.5版本后出现的新特性,是数组的简写形式,只需将要操作的元素作为参数传递即可

           public void show(String str,int... arr)  //可变参数一定要在列表的最后面

 

     3.静态导入:(import static java.lang.System.*) ,导入的是类中所有的静态成员

         ①当类名重名时,需要指定具体的包名

         当方法名重名时,需要指定所属的对象或者类

 

二.其他对象

     1.System对象:描述一些系统信息,它的属性和方法都是静态的

           ①System.getProperties():获取系统属性信息,返回Properties对象(Properties是Map集合的一个子类对象)

                       Properties p =  System.getProperties();  //该集合中存储的都是字符串,没有泛型定义

           System.setProperty("myKey","myValue"):自定义系统信息,系统启动时,会加载

           System.getProperty("指定属性"):获取指定属性信息

 

     2.Runtime对象:不可以new对象,类似单例设计模式

                Runtime r = Runtime.getRuntime();

                Process p = r.exec("可执行命令");//exec方法用于执行命令,返回一个进程

                p.destory(); //杀掉子进程    

 

     3.Date对象:对日期和时间进行描述

                Date d = new Date();                

                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd E HH:mm:ss");

                //E为星期;HH表示二十四小时进制;hh表示十二小时进制   

                System.out.print(sdf.format(d));  

      

     4.Calender对象:描述日历,可以用查表法替换月、日、星期等

                Calender c = Calender.getInstance();

                c.get(Calender.YEAR);

                c.get(Calender.MONTH);//取值范围0-11

                c.get(Calender.DAY_OF_MONTH);

                c.get(Calender.DAY_OF_WEEK);

                c.add("指定年/月/日",number);//在指定年/月/日加上number年/月/日,时间的偏移

  

    5.Math:是一个工具类

                Math.abs(); //返回一个数的绝对值

                Math.ceil();//向上取整数

                Math.floor();//向下取整

                Math.round();//四舍五入

                Math.pow(m,n);//返回m的n次幂

                Math.random();//返回0-1间的随机数 

                //Random r = new Random();

                r.nextInt(10);//返回0-9之间的随机整数

 

三.IO(Input Output)流:用于操作数据

    1.概述

         按操作数据可分:字符流、字节流

                  字节流的抽象基类:InputStream、OutputStream

                  字符流的抽象基类:Reader、Writer

          按流向可分:输入流、输出流

          ③FileWriter:是Writer的子类对象,后缀名是父类名,前缀名是该流的功能

                 FileWriter  fw = newFileWriter("要操作的文件");//FileWriter一初始化,必须指定要操作的文件。如果文件存在,会自动覆盖文件;如果不存在会自动创建到指定目录。

                 fw.write("abcdefg");//写入数据

                 fw.newLine();//一行一行的写入

                 fw.flush();//刷新

                 fw.close();//关闭流

 

   2.IO异常处理方式

         FileWriter  fw = null ;

            try{

                     fw = new FileWriter("要操作的文件"); //文件操作代码

                     fw.write("abcefd");

                     ....

                 }catch(IOException e){

                       //异常处理

                 }

             finally{

                       try{

                               if(fw!=null) //避免空指针异常

                                      fw.close(); //必须关闭流对象                                    

                       }catch(IOException e){

                             //异常处理

                      }

                 }         

 

   3.文件的续写:对已有文件的数据读写

               FileWriter fw = new FileWriter("a.txt",true);//true表示将write的内容续写到a.txt末尾,不覆盖a.txt

  

   4.文件的读取

              FileReader fr = new FileReader();

              char[] ch = new char[1024];//中转站数组

              int num = 0;

              while((num=fr.read(ch))!=-1){

                  System.out.print(new String(ch,0,num));

              }

              fr.close();

   

   5.文件拷贝

              FileReader fr = null;

              FileWriter fw = null;

              try{

                    fr = new FileReader("a.txt");

                   fw = new FileWriter("b.txt");

                   char[] buf = new char[1024];

                   int len = 0;

                   while((len=fr.read(buf))!=-1){

                         fw.write(buf,0,len);

                         ....

                   }

              }catch(IOException e){

                 //异常处理

             }

             finally{

                       try{

                               if(fr!=null){

                                        fr.close();

                                }

                               if(fw!=null){

                                        fw.close();

                               }

                       }catch(IOException e){

                         //异常处理

                       }

             }

 

 ---------android培训java培训、期待与您交流! ----------    

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值