zoukankan      html  css  js  c++  java
  • JavaAPI学习(一):API && String类 && Stringbuffer && StringBuilder

    一、API

      1、API:英文 Application Program Iterface 的缩写,即应用编程接口

        由官方或第三方提供的能实现特点功能的程序封装包,包含各功能类,接口,以及实现方法等;很多基础功能不需要再重写,直接调用即可;但因为Java的API十分丰富,常用的基础API就有很多,也需要花时间熟悉这些API的功能和使用方法;

      2、常用API

       String类, StringBuffer, StringBuilder ,集合(list set map) ,包装类,日历日期,IO流 ,异常 ,线程等;

     二、String类

      2.1String类

      1、String类:Java 程序中的所有字符串字面值(如 "abc" ) 都作为此类的实例实现。即之前用到的所有的字符串引用类型数据;

        即:String t =  "HelloJava";   其中"HelloJava"即为一个对象;      

      2、位置:java.lang.String;lang包为系统默认的导包,直接调用不用导包;

      3、String 类代表字符串。

       字符串是常量,它们的值在创建之后不能更改。字符串缓冲区才支持可变的字符串。因为 String 对象是不可变的,所以可以共享;

     1 String s1 = "HelloWorld";
     2 String s2 = "HelloWorld";
     3 String s3 = "Hello" + "World";
     4 String s4 = "Hello" ;
     5 String s5 = "World";
     6 String s6 = s4 + s5;    //生成新的对象,创建新地址
     7 System.out.println(s1 == s2);    //直接量    true
     8 System.out.println(s1 == s3);    //直接量 true
     9 System.out.println(s1 == s6);    //间接量 false
    10 
    11 String s7 = new String("HelloWorld");
    12 System.out.println(s1 == s7);    //间接量 false


    思考题

      String s7 = new String("HelloWorld"); 这句话创建了几个对象? 
         两个;new一个,"HelloWorld"本身就是个对象。

    备注:

      如果字符串创建的对象的时候是直接量赋值,那么会将该对象放到常量池 中去,如果下次再有相同的直接量赋值,此时会先从常量池遍历是否有该常量  存在,有则直接将该引用指向目标地址值,没有则会重新创建新的地址值,并 将其放入常量池;(同之前的常量以及数值型基本数据一样理解)。

       2.2 String类中常见的一些方法(BJ)

        1.charAt(int index);返回指定位置的字符

             练习:

             检查一句话是否为回文?

             回文:上海自来水来自海上

      参考代码:StringDemo.java

        2.concat(String str);

      将指定字符串拼接到字符串末尾;

        3.contains(String str);

      查看是否有指定的字符序列,有返回true,否则返回false   

        4.startsWith(String str,int i);

      判断指定字符串是否在字符串的起始/具体位置/结束;返回布尔值;

        5.endsWith(String str);

      判断指定字符串是否在字符串的结束;返回布尔值;

        6.subString(int sta,int end);

      返回字符串指定范围内(前包括,后不包括)的字符串;

        7.toCharArray();

      将指定字符串转为字符数组   

        8.toLowerCase();

      将所有的字母全部转为小写

        9.toUpperCase();

      将所有的字母全部转为大写

        10.trim();

      去除字符串两边空白(中间的不能去除)

        11.valueOf(obj);

      将数组对象基本数据类型转为字符串类型

        12.getBytes();

      使用平台默认的编码字符集获取字符串的字节序列,

                      将结果存入到字节数组中去

                      平台默认的编码字符集:

           Windows  GBK:中文占2个字节,英文占1个字节

           Linux/IOS  UTF-8:中文占3个字节,英文占1个字节

           UNICODE字符集:中英文各占2个字节,最后单独加2个字节进行相应的排序

        13.indexOf(String str, int i);

      返回指定字符str从第i个起在原字符串中第一次出现的位置

        14.lastIndexOf(String str);

      返回指定字符在原字符串中最后一次出现的位置

        15.length();

      返回字符串的长度

           备注:区别length属性和length()方法

           获取数组的长度用length属性,获取字符串长度用length()方法

        16.replace();

      用指定字符串替换原字符串中的部分内容(常用来替换敏感词汇) ,支持正则表达式(见下一章);

        17.split();

      根据指定的条件进行分割,结果返回为字符串数组,支持正则表达式(见下一章);

      综合测试代码:StringDemo.java 

      内容较多,写得较乱,仅供参考,建议自测;

      1 package API;
      2 
      3 import java.util.Arrays;
      4 
      5 import javax.swing.table.TableStringConverter;
      6 
      7 import org.omg.CosNaming.NamingContextExtPackage.StringNameHelper;
      8 
      9 //import org.junit.Test;
     10 
     11 /**
     12  * @项目名称:APIDay01
     13  * @模块功能:测试String类的各个函数功能
     14  * @模块版本:
     15  * @JDKVersions:JDK 8.0
     16  * @author:  Kanekiyi
     17  */
     18 public class StringDemo {
     19     //@Test
     20     public static void test1() {
     21         /**判断句子是否为回文**/
     22         String string = "上海自来水来自海上";
     23         int times=0;
     24         boolean flag = true  ;
     25         for (int i = 0; i<string.length()/2;i++) {
     26             if (string.charAt(i)!=string.charAt( string.length()-i-1) ) {
     27                 System.out.println(string+",这句话不是回文");
     28                 flag = false ;
     29                 break;
     30             }
     31             if (true) {
     32                 System.out.println(string+",这句话是回文");
     33                 break;
     34             }
     35         } 
     36         
     37         //找到字符串中的某个位置的字符
     38         char  c =  string.charAt(5);
     39         System.out.println("charAT()函数测试"+c);
     40     }
     41     
     42     public static void test2() {
     43         String string = "java很吊";
     44         
     45         /**字符串的拼接*/
     46         String string2 = string.concat(",PHP最好");     
     47         System.out.println("string2:"+string2);
     48         
     49         /**判断字符串是否在字符串的起始/具体位置/结束,在返回true
     50         boolean b1 = string.startsWith("java");
     51         boolean b2 = string.startsWith("吊",5);
     52         boolean b3 = string2.endsWith("吊");
     53         System.out.println();
     54         System.out.println("starts/endsWith测试");
     55         System.out.println(b1);
     56         System.out.println(b2);
     57         System.out.println(b3);
     58 
     59         /**截取字符串的某一段作为新的字符串*/
     60         String string3 = string2.substring(7);
     61         System.out.println("string3:"+string3);
     62             //前包括,后不包括
     63         String string4 = string2.substring(7,9);        
     64         System.out.println("string4:"+string4);
     65         
     66         /***将字符串转换为字符数组***/
     67         char[] chras= string2.toCharArray();
     68         System.out.println("chras:"+Arrays.toString(chras));
     69         
     70         /***将字符串进行大小写互换***/
     71         String string5 = "CHINA";
     72         String string6 = string5.toLowerCase();
     73         System.out.println("string6:"+string6);
     74         String string7 = string6.toUpperCase();
     75         System.out.println("string7:"+string7);
     76         
     77         /***将字符串首位空格去除变成新的数组***/
     78         String string8 = "      1832668989       ";
     79         String string9 = string8.trim();
     80         System.out.println("string9:"+string9);
     81         
     82         /***将其它类型数据(基础类型、引用)转换为字符串***/
     83         int i4=57895;
     84         String string10 = String.valueOf(i4);
     85         System.out.println("string10:"+string10);
     86 
     87         GusseZiMu gusseZiMu  = new GusseZiMu();
     88         String string11 = String.valueOf(gusseZiMu);
     89         System.out.println("string11:"+string11);
     90         
     91         boolean b4 = false;
     92         String string12 = String.valueOf(b4);
     93         System.out.println("string12:"+string12);
     94         
     95         /***将字符串的(与平台的编码格式有关)
     96           ,转换为byte型的数组***/
     97         String string13 = "我爱Java";
     98         byte[] by1 = string13.getBytes();
     99         System.out.println("字节长度:"+by1.length);        
    100         //字节长度与平台编码格式有关,Unicode编码汉字占两个字节,英文占一个字节
    101         System.out.println(Arrays.toString(by1));
    102         
    103         /***返回指定字符在字符串中出现的位置***/
    104         String string14 = "1234d157a809a4525a1323";
    105         //出现的第一次位置
    106         int  index1 = string14.indexOf("a");
    107         System.out.println("index1:"+index1);
    108         //从第九个开始找出现的位置
    109         int  index2 = string14.indexOf("a",9);
    110         System.out.println("index2:"+index2);
    111         //出现的最后的位置
    112         int  index3 = string14.lastIndexOf("a");
    113         System.out.println("index3:"+index3);
    114         
    115         /**返回 字符串的长度
    116          * 数组的长度是通过获取其属性,字符串是通过方法获取
    117          * 
    118          * ****/
    119         int strLength = string14.length();            
    120         System.out.println("strLength:"+strLength);
    121         
    122         /***字符中的字符替换***/
    123         String string15 = "鲁班七号最肉";
    124         String string16 = string15.replace('肉', '脆');
    125         System.out.println("string16:"+string16);
    126         String string17 = string15.replaceAll(" 5|肉", "脆");
    127         System.out.println("string17:"+string17);
    128         
    129         /***字符中的字符替换***/
    130         String string18 = "灰化肥,发黑,会挥发";
    131         String[] string19 = string18.split(",");
    132         System.out.println("string19:"+string19);
    133 
    134     }
    135     
    136     public static void test3() {
    137         /***判断字符串是否包含某个字符***/
    138         String string = "java很吊";
    139         boolean  c =  string.contains("吊");
    140         System.out.println(c);
    141     }
    142     public static void main(String[] args) {
    143          test1();
    144          test3();
    145          test2();
    146   
    147     }
    148 }
    View Code

    2.3第三方包

     以上内容是java官方提供的API,也需要了解第三方jar包以及对自己封装的包进行操作。 第三方j常用的是commons-lang3-3.1.jar

     常用类:StringUtil类,测试方法如下

    1、deleteWhitespace(String string); 删除字符串中所有空格;
    2、StringUtils.left(String string, int i); 返回字符串指定范围的字符串;

            测试代码:    

     1 /**
     2  * 
     3  */
     4 package API;
     5 
     6 import org.apache.commons.lang3.StringUtils;
     7 
     8 /**
     9  * @项目名称:APIDay01
    10  * @模块功能:测试第三方
    11  * @模块版本:
    12  * @JDKVersions:JDK 8.0
    13  * @author:  Kanekiyi
    14  */
    15 public class StingUtilDemo {
    16     
    17     public static void main(String[] args) {
    18         String string= "  我 哎    你   安家费   hhh  加法     ";
    19         System.out.println(string);
    20         // 删除字符串中所有空格
    21         String string2 = StringUtils.deleteWhitespace(string);
    22         System.out.println(string2);
    23         
    24         // 左起截取指定长度字符串
    25         String str3=StringUtils.left(string2, 5);
    26         System.out.println(str3);
    27     }
    28     
    29 }
    View Code

     五、StringBuffer和StringBuilder

     2.1、StringBuffer类和StringBuilder类

     1、优点:String类频繁的修改内容就会频繁的创建对象,对资源的开销较大此时能够解决该问题,引入StringBuffer类和StringBuilder频繁的修改String中的内容不会创建新的对象;

     2、比较:

    StringBuffer:线程安全           安全性高,效率低

    StringBuilder:线程不安全      安全性低,效率高

     2.2两个类中常见的方法

      1.append(String str);在字符串末尾追加字符串

      2.insert(int i, String str);在指定位置插入字符串

    测试代码:

     1 package API;
     2 
     3 /**
     4  * @项目名称:APIDay01
     5  * @模块功能:
     6  * @模块版本:
     7  * @JDKVersions:JDK 8.0
     8  * @author:  Kanekiyi
     9  */
    10 public class StringBufferDemo {
    11     public static void main(String[] args) {
    12         StringBuffer  stringBuffer = new StringBuffer();
    13         // 字符串末尾添加字符串
    14         stringBuffer.append("鲁班七号天下无敌");
    15         System.out.println(stringBuffer);
    16         // 指定位置插入字符串
    17         stringBuffer.insert(4, ",");
    18         System.out.println(stringBuffer);
    19         
    20     }
    21 
    22 }
    View Code

     有错误内容或不足之处望指正!!!

  • 相关阅读:
    Java自学笔记(21):【IO】数据流,标准输入输出
    makefile 学习笔记
    tensorflow 环境搭建
    matlab
    【转】MATLAB各种矩阵生成函数
    leetcode刷题收获
    leetcode 15. 3Sum
    STL 记录
    leetcode 服务器环境
    visual studio 2017 使用笔记
  • 原文地址:https://www.cnblogs.com/Kanekiyi/p/9550614.html
Copyright © 2011-2022 走看看