黑马程序员--集合工具类、其他对象、IO流概述_C_ontinue的博客-程序员秘密

 ---------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培训、期待与您交流! ----------    

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/C_ontinue/article/details/8069768

智能推荐

io---BufferedOutputStream_flush-缓冲区写出字节时的缓冲区问题_outputstream怎么开启缓冲区_biu_biubiubiu的博客-程序员秘密

package io;import java.io.BufferedOutputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;/**缓冲区写出字节时的缓冲区问题@author W*/public class Buff...

(转)[kaili linux]安装kaili linux到VM_jameskaron的博客-程序员秘密

转自:http://www.yishimei.cn/network/782.htmlkaili linux iso:https://www.kali.org/downloads/上次给大家介绍了关于黑客专用系统Kali Linux后,有许多小伙伴都表现出了极大的兴趣,但是想要彻底深入的学习Kali Linux,不仅要知道它的用途与大概介绍,更要亲身实践才能学到真正的黑客技能,考虑到...

JVM(三)--垃圾收集算法_想飞的盗版鱼的博客-程序员秘密

JVM(三)–垃圾收集算法这篇博客的内容包括:一、垃圾收集算法:1,标记——清除算法:2,复制算法:3,标记——整理算法:4,分代收集算法:二、涉及到的问题:1,标记清除,标记整理,复制算法分别是什么,各有什么缺点2,新生代和老年代各用什么算法?3,为什么要划分新生代和老年代?4,新生代分为什么?年轻代为什么分为Eden和Survior区?5,新生代和老年代的年龄阈值是多少?初识GC自动垃圾回收机制,简单来说就是寻找 Java堆中的无用对象。打个比方:你的房间是

adb实用命令(持续更新中....)_潇曜的博客-程序员秘密

1、获取手机屏幕当前显示的activity名与所属的包名:adb shell dumpsys window windows | findstr Current【延伸阅读】有人会有疑问:adb shell dumsys后面可以接哪些参数呢?其实很简单,我们在cmd中输入以下命令:adb shell service list,就会显示可以显示的参数:Found 178 services:0 ...

互联网产品设计进阶(10)关注项目的赢利模式_cndes的博客-程序员秘密

互联网产品设计进阶(10)关注赢利模式整天都在思考项目的进展,忙碌了一天,终于有点时间来打理思绪。晚上收到一封快件,收到一位编辑朋友送来的几本书,里面有一本最近比较热门的《设计原本》。读一本书时,我喜欢看书的前言,因为这里反映了作者的原始动机。正如书中所写,“思维的过程、人与人的

webpack配置: 如何同时使用ES2015和JSX_weixin_34281477的博客-程序员秘密

为什么80%的码农都做不了架构师?&gt;&gt;&gt; ...

随便推点

Docker部署SkyWalking_skywalking部署docker_疯狂小草的博客-程序员秘密

Docker部署SkyWalking文章目录Docker部署SkyWalking前置环境部署步骤部署服务端 skywalking-oap部署UI skywalking-ui服务器java项目部署源码包下载Jar 直接启动docker启动前置环境docker 19.03.13ElasticSearch 7.2.0部署步骤部署服务端 skywalking-oap -- 使用6.6.0版本的skywalking,先部署服务端 docker run --name skywalking-oap

Android 10 适配攻略,深度解析跳槽从开始到结束完整流程_android 10适配_IT精英时代的博客-程序员秘密

应用在卸载后,会将App-specific目录下的数据删除,如果在AndroidManifest.xml中声明:android:hasFragileUserData="true"用户可以选择是否保留。对于SAF的使用,可以查看我之前写的SAF使用攻略,这里就不展开说了。最后这里有一个介绍Scoped Storage的视频,推荐观看:准备好使用分区存储 | ADS 中文字幕视频准备好使用分区存储2.权限变化==============================================

docker部署Traefik1.7 转发marathon、file_docker traefik 1.7-alpine_常名先生的博客-程序员秘密

Traefik1.7 转发marathon上的服务1、准备docker-compose启动文件注:假设你的主机ip为:10.11.0.0,后面皆以此为假设部署traefik-docker-compose.ymlversion: '3.3'services: reverse-proxy: image: traefik:v1.7-alpine command: --api --docker ports: - "80:80" - "443:443"

Google 2018 IO 大会要点_annkie的博客-程序员秘密

人工智能Google Assistant机器学习套件 ML Kit跨平台支持支持文本识别、人脸检测、条码扫描、图像标记和地标识别支持离线和在线使用AR视觉定位系统 Vision Position System,简称VPS通过手机摄像头,用AR技术来为用户进行导航。Google Maps个性化更准确自动驾驶 Waymo操作系统Android P防沉迷系...

642-274认证题库首先Passquick_alisaga的博客-程序员秘密

642-274认证题库首先Passquick642-274 IMPS MeetingPlace支持专家考试编号:642-274 认证:支持专家的MeetingPlace时间:75分钟(55-65题)可用语言:英语点击这里注册:Pearson VUE的考试政策:了解当前的政策和要求,考试教程:审查考试型的问题见下列642-274认证题库介绍。<br /> <br />642-274 认证题库 <br />Implementing Cisco Unified MeetingPlace Services<br /

2017-11-30 Python3选择支持非ASCII码标识符的缘由_weixin_34038652的博客-程序员秘密

原文在: PEP 3131 -- Supporting Non-ASCII Identifiers.Python2并不支持非ASCII码标识符. PEP的全称是Python Enhancement Proposal, 即Python增强提案. 这个3131提案创建于2007年5月. Python3于2008年12月发布.Rationale一节开篇明义...

推荐文章

热门文章

相关标签