zoukankan      html  css  js  c++  java
  • Java API常见的使用类(二)

    数组的高级操作

                     1,数组是存储同一种数据类型多个元素的容器。

                  2,特点是每个元素都有从0开始的编号,称为索引。

                  3,数据的操作:

                          1,遍历:

    //数组的遍历
    public static void printArray(int[] arr){
        for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);    
        }
    }

                           2,获取最大值:

    //获取最大值
    public static int getMax(int[] arr){
        int max=arr[0];
        for(int i=1;i<arr.length;i++){
            if(arr[i]>max){
                max=arr[i];
            }
        }
        return max;
    }

                           3,排序:

                                  a 冒泡排序:相邻元素两两比较,最大后往后放,第一次比较完毕,最大值在最大索引处。

    //冒泡排序
    public static void bubleSort(int[] arr){
        for(int i=0;i<arr.length-1;i++){
            for(int j=0;j<arr.length-i-1;j++){
                if(arr[j]>arr[j+1]){
                    int temp=arr[j];            
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }    
            }
        }
    }

                                  b 选择排序:从0索引元素开始,依次和后边的所有元素进行比较,小的往0索引处放,第一次比较完毕后,最小值在0索引。

    //选择排序
    public static void selectSort(int[] arr){
        for(int i=0;i<arr.length-1;i++){
            for(int j=i+1;j<arr.length;j++){
                if(arr[i]<arr[j]){
                    int temp=arr[j];
                    arr[j]=arr[i];
                    arr[i]=temp;
                }
            }
        }
    }

                           4,查找:

                                  a 普通查找:遍历数组,从头找到尾。

    //查找
    public static int getIndex(int[] arr,int value){
        int index=-1;
        if(arr==null) return index;
        for(int i=0;i<arr.length;i++){
            if(arr[i]==value){
                index=i;
                break;
            }
        }
        return index;
    }

                                  b 二分查找:每次都从中间开始查找,如比中间值小,就在左边找,如果比中间值大,就在右边找,如果相等就返回该值索引。

                                             前提:数组必须是有序的。

    public static void getIndex(int[] arr,int value){
        int start=0;
        int end=arr.length-1;
        int mid=(start+end)>>1;
        
        while(arr[mid]!=value){
            if(value>arr[mid]){
                start=mid+1;
            }else if(value<arr[mid]){
                end=mid-1;
            } 
            if(start>end){
                return -1;
            }
            mid=(start+end)>>1;
        }
        return mid;
    }

    Arrays

           1,Arrays是针对数据进行操作的工具类。

          2,需要掌握的功能:

                       a:把数组转换成字符串。

                          public static String toString(int[] arr)

                       b:排序。

                          public static void sort(int[] arr)

                       c:二分查找。

                         public static int binarySearch(int[] arr,int value)

    StringBuffer

                  1,StringBuffer是字符串缓冲区,长度可改变。

                2,构造方法:

                        a:StringBuffer buffer=new StringBuffer();

                        b:StringBuffer buffer=new StringBuffer(int capacity);

                        c:StringBuffer buffer=new StringBuffer(String s);

                        注意: StringBuilder的功能与StringBuffer一致,StringBuilder是JDK5以后出现的。

                3,需要掌握的功能:

                         添加功能:

                               StringBuffer append(data):在缓冲区追加数据,添加到尾部。

                               StringBuffer insert(index,data):在指定位置插入数据。

                         删除功能:

                               StringBuffer delete(start,end):删除从指定位置开始到结束的内容。包左不包右。

                               StringBuffer deleteCharAt(index):删除指定位置的字符。

                         替换功能:

                               StringBuffer replace(start,end,string):从指定位置开始至结束的内容替换成一个字符串,返回当前对象的引用。

                         截取功能:

                               public String substring(int start):截取从指定位置开始到末尾的字符串并返回。

                               public String subsring(int start,int end)截取从指定位置开始到指定位置结束的内容,并返回。

                         返转功能:

                               public StringBuffer reverse():把字符串缓冲区对象的内容进行反转。

                         字符串和字符缓冲区的相互转换:

    // String-->StringBuffer
    StringBuffer buffer=new StringBuffer(String s);
    StringBuffer buffer=new StringBuffer();
    buffer.append(String s); 
    
       // StringBuffer-->String
    String s=new String(StringBuffer buffer);
    String s=(StringBuffer buffer).toStirng();

    基本数据类型包装类

                    1,我们针对基本数据类型只能做一些基本的算术运算,想对其做一些复杂操作,就做不了。

                         所以,JAVA提了基本数据类型的包装类,这样就有很多属性和方法可供我们使用了。

                    2,基本数据类型对应的包装类:

                           byte       >> Byte

                           short      >> Short

                           int         >> Integer

                           long       >> Long

                           float      >> Float

                           double   >> Double

                           char      >> Character

                           boolean >> Boolean

                     3,Integer类的构造方法:

                            a Integer i=new Integer(int x);

                            b Integer i=new Integer(String s);

                                 注意:s必须是数字字符组成的字符串。

                     4,Integer的功能:

                            a  String >>  int

                                   String s=”100”;

                                   int i=Integer.parseInt(s);

                            b  int  >>  String

                                   int i=100;

                                   String s=Integer.valueOf(i);

                     5,JDK5以后的新特性。

                            a 自动装箱:从int到Integer

                            b 自动拆箱:从Integer到int

    //示例
    Integer i=100; //自动装箱,等价于 Integer i=new Integer(100);
    i+=200; //i自动拆箱  i.intValue()
     //自动装箱   i=i.intValue()+200;    
    System.out.println(i);

    注意事项:基本数据类型包装类让我们操作变的简单 ,但其中也隐含一个问题,操作前最好做不为null的校验。

                    6,Byte常量池的问题:

    //byte常量池示例
    Integer i=new Integer(128);
    Integer i2=new Integer(128);
    
    System.out.println(i==i2);  //false
    System.out.println(i.equals(i2)); //true
    
    Integer i3=128;
    Integer i4=128;
    
    System.out.println(i3==i4);    //false
    System.out.println(i3.equals(i4));  //true
    
    Integer i5=127;
    Integer i6=127;
    
    System.out.println(i5==i6);   //true
    System.out.println(i5.equals(i6));  //true
    
    Integer i7=new Integer(127);   
    Integer i8=new Integer(127);
    
    System.out.println(i7==i8);    //false
    System.out.println(i7.equals(i8)); //true
    
    //byte范围内的值赋值包装类的时候,是从常量池里获取的。

                7,包装类的功能测试

                    需求:把“1 44 34 88 98 -4”字符串进行排序并打印输出

                    分析:

                            首先需要将字符串中的空格进行去除,

                            然后将字符串需要进行类型转换成数组。     

                            将数组进行排序,

                            将数组转换成字符串,输出。

    //获取字符串
    String s="1 44 34 88 98 -1";
    //将字符串空格切割转换成字符串数组
    String[] strs=s.split(" ");
    //将字符串数组转成int数组
    int [] arr=new int[strs.length];
    for(int i=0;i<strs.length;i++){
    arr[i]=Integer.parseInt(strs[i]);
    //对数组进行排序
    Arrays.sort(arr);
    //调用方法 将数组转换成字符串原来的格式。
    String result=strsToString(arr);
    System.out.println(result);
    //
    //返回类型:String
    //参数列表:int[]
    private static String strsToString(int[] arr) {
            
        StringBuilder builder=new StringBuilder();
         for(int i=0;i<arr.length;i++){
            builder.append(arr[i]).append(" ");
         }
                return builder.toString().trim();
            
    }

                           

    Random

               1,是产生随机数的类。

               2,构造方法:

                        a Random r=new Random();

                        b Random r=new Random(long seed);

                            注意:种子一样,随机数一样。

               3,掌握的方法 :

                       public int nextInt(int n );

                           产生在[0,n]之间的随机数。

    正则表达式

              1,符合一定规则的字符串。

              2,规则:

                     字符:

                          x    字符x

                          \\   反斜线字符

                          \r   回车

                          \n  换行

                     字符类:

                          [abc]         a、b或c

                          [^abc]       任何字符,除了a、b或c

                          [a-zA-Z]     a到z,A到Z,包括两端的字符

                          [0-9]          数字0到9

                     预定义字符:

                          .         任意字符

                          \d       数字[0-9]

                          \w       单词字符[a-zA-Z_0-9]

                     边界适配器:

                         ^       行的开头

                         $       行的结尾

                         \b      单词的边界 指这里不能出现的字符,如hello;world   xi.xi

                     Greedu数量词:

                         x?        x,一次或一次也没有。

                         x*       x,零次或多次。

                         x+       x,一次或多次。

                         x{n}    x,n次。

                         x{n,}   x,n次以上。

                         x{n,m} x至少n次不超过m

                     组:从左边小括号开始编号,每一个对应一个组。

                              (a(b(c)d(e)))
                                  第一组:a(b(c)d(e))

                             第二组:b(c)d(e)

                             第三组:c

                             第四组:e

                             我们可以通过组名来获取组内的内容,组0表示整个表达式。

                             组功能示例:

                                      需求:

                                            “我..我.爱爱....JJJ..ja...a..vv...aaa....a”将字符串还原成"我爱Java"

                                      分析:

                                              首先将所有.替换成“”

                                              将重复的叠词只保留一个。

    //定义一个字符串
    String strs="我..我.爱爱....JJJ..Ja...a..vv...aaa....a";
    //将.替换成""
    String s1=strs.replaceAll("\\.","");
    //将重复的叠词保留一个
    String s2=s1.replaceAll("(.)\\1+","$1");
    System.out.println(s2);

      叠词:

                                      在同一个字符串中,右边引用左边:“(.)\\1+”

                                      在下一个字符串中引用前边字符串组的内容:“(.)\\1+”,“$1”

               3,通过String类的功能使用正则表达式

                            判断 public boolean matches(String regex)

                            分割 public String[] split(String regex)

                            替换 public String replaceAll(String regex,String newString)

                          

                           获取 :  

                                1,pattern和Matcher类。

                                        pattern:正则表达式的编译表示形式。

                                        Matcher:匹配器

                                2,使用步骤:

    //正则表达式获取功能的使用步骤
    Pattern p=Pattern.compile(String regex);//规则
    Matcher m=p.matcher(String findstring);//查找的字符串
    //判断是否有
    while(m.find){
        //有就获取
        System.out.println(m.group());
    }

                                               

                            3,获取的简易示例:

                                       需求:“hi,what do you want to do?”找到其中两个字符的单 词分别是哪些

    //定义一个字符串
    String s="hi,what do you wat to do ?";
    //定义规则
    String regex="\\b[a-z]{2}\\b"
    Pattern p=Pattern.compile(regex);
    Matcher m=p.mathcer(str);
    while(m.find){
        System.out.println(m.group());
    }

    Date

               1,Date:是一个日期类,大部分方法已过时。被Calendar替代

                         构造方法 :

                                       Date d=new Date();//获得当前日期的毫秒值

                                Date d=new Date(long time);//把一个毫秒值转换成日期。

                         获取毫秒值:

                                getTime()

             2,DateFormat:

                        对日期进行格式化和字符串进行解析的类。

                        String >> Date

                           public  Date parse(String source)

                           解析:parse()

                        Date  >> String

                          public final String format(Date date)

                          格式化:format()

                           示例:

    //获得当前日期
    Date d=new Date();
    String s=dateToString(d,"yyyy年MM月dd日HH:mm:ss");
    System.out.println(s);
    
    public static String dateToString(Date date,String format){
        return new SimpleDateFormat(format).format(date);
    }

    //字符串日期转成日期
    String s="2014-03-27 15:20:13";
    Date d=stringToDate(s,"yyyy-MM-dd HH:mm:ss");
    System.out.println(d);
    
    private static Date stringToDate(String date,String string) throws ParseException {
        return new SimpleDateFormat(string).parse(date);
    
    }

             3,Calendar:

                      日历类,对日期进行了更细的划分,可以获取日历的每个字段值。

                      根据日历字段获取对应的值:

                                       get()

                      设置年月日

                                      set(int year,int month,int date)

                      修改指定日历的值

                                      add(int field,int value)

                     示例:

                           根据输入的日期判断这年的2月有多少天(闰年)

    Calendar c=Calendar.getIntance();
    Scanner sc=new Scanner(System.in);
    int y=sc.nextInt();
    
    c.get(y,2,1);
    c.add(Calendar.DATE,-1);
    int d=c.get(Calendar.DATE);
    System.out.println(d);

    System

                系统类,通过静态的方法供我们使用。

                需要掌握的功能:

                      exit()

                      currentTimeMillis()

                      arraycopy() 小写。

    Collection

             1,集合的由来:

                   我们需要对多个对象进行存储,可以使用对象数组。

                   但是如果对象的个数是变化的, 对象数组就解决不了。

                   因此Java提供了集合类。

             2,集合体系的由来:

                   多种集合的数据结构不同,但是它们都有共同的特性,

                   通过不断的向上抽取,最终形成了集合的体系结构。

                      Collection

                           |  

                           |-----List

                                     |---ArrayList

                                     |---Vactor

                                     |---LinkedList

                           |

                           |-----Set

                                     |---HashSet

                                     |---TreeSet

               3,Collection的接口功能:

                         添加功能:add(Object obj)

                         删除功能:remove(Object obj)

                         判断功能:contains(Object obj)

                         获取功能:Iterator iterator()

                         长度功能:size()

               4,迭代器:以内部类的方式存在。

                        1,就是遍历集合的一种方式。

                        2,迭代器不能单独使用,它依赖集合而存在。

                        3,使用步骤:

                                    1,通过集合调用Iterator的方法得到迭代器对象。

                                    2,通过迭代器的hasNext()判断是否有元素。

                                    3,通过迭代器的next()方法获取元素。

                 集合示例:

    //创建集合对象
    Collection c=new ArrayList();
    
    //创建元素对象
    String s="hello";
    String s1="world";
    String s2="java";
    
    //将元素添加到集合
    c.add(s);
    c.add(s1);
    c.add(s2);
    
    //通过集合调用Iterator()方法获得迭代器对象
    Iterator it=c.iterator();
    //遍历
    while(it.hasNext()){
        //向下转型
        String s=(String)it.next();
        System.out.println(s);
    }

  • 相关阅读:
    QT QT程序初练
    Linux Shell编程三
    Linux Shell编程二
    git操作
    git push命令
    Zabbix全方位告警接入-电话/微信/短信都支持
    CentOS 7安装TigerVNC Server
    MySQL各版本的区别
    MariaDB Galera Cluster 部署
    MySQL高可用方案MHA的部署和原理
  • 原文地址:https://www.cnblogs.com/zhanfuxing/p/3624485.html
Copyright © 2011-2022 走看看