黑马程序员---java基础知识之String类

时间:2021-12-01 12:20:10
java基础知识之String类   ------- android培训java培训、期待与您交流! ----------

1.String 类的概述:         字符串是一个特殊的对象,最大的特点是一旦初始化就不可以被改变。          public static void main(String[]args){                                   String str="abc";                              //str是一个类类型变量,"abc"是一个对象                  String str1=new String("abc");      //                      System.out.println("str==str1");                  System.out.println("str.equals(str1)");
         }          输出的结果是false和true
         结果分析:后者为true的原因是因为String 类复写了Object类中equals方法,该方法用于判断字符串是否相同。
                           以上两者的区别在于str在内存中有一个对象,str1在内存中有俩个对象。
2.String判断的方法:
       2.1 字符串中是否包含某一个子串               boolean contains(str):               特殊之处:indexOf(str):可以索引str第一次出现的位置,如果返回-1,表示该str不在字符串中存在               所以,也可以用于对指定判断是否包含,该方法即可以判断,有可以获取出现的位置,           2.2  字符串中是否有内容                boolean isEmpty():原理即判断字符串的长度是否为零
        2.3  字符串是否以指定内容开头                boolean startsWith(str);
        2.4   字符串是否以指定内容结尾                      boolean endsWith(str);
           2.5    判断字符串内容是否相同,复写了Object类中的equals方法                 boolean equals(str);              2.6     判断内容是否相同,并忽略大小写                  boolean equalsIgnoreCase(str);

3.字符串的转换       3.1   将字符数组转为字符串                 构造函数:String(char[])                                   String(char[],offset.count):将字符数组中的一部分转成字符串                 静态方法:Static String copyValueOf(char[]);                                   Static String copyValueOf(char[] data,int offset,int count);                                   Static String valueOf(char[]);                 例如:char []arr={'a','b','c','d','e','f''};                            String s=new String(arr);                            String s=new String(arr,1,3);                       输出结果是abcdef和bcd                                        3.2   将字符串转为字符数组                    char[] toCharArray();             3.3   将字节数组转为字符串                          String(byte[])                                   String(byte[],offset.count):将字节数组中的一部分转成字符串            3.4  将字符串转为字字节数组                          byte[]  getBytes();
            3.5  将字符数组转为字符串                   static String valueOf(int);                   static String valueOf(double);
     
4.字符串的替换
    常用方法     String replace(oldchar,newchar);      例如:String s="hello java";                 String s1=s.replace("java","world");                    System.Out.println(s);                 System.Out.println(s1);                 输出结果是hello java                                   hello world 5.字符串的切割     String []  split(regex);       例如:String s="zhangsan,lisi,wangwu";                 String [] arr=s.split(",");                 for(int i=0;i<arr.length;i++){                       System.Out.println(arr[i]);                 }       输出结果为:zhangsan                             lisi                            wangwu6.字符串的字串     String substring(begin);      String substring(begin,end);      例如:String s="abcdef";                 System.Out.println(2);//从指定位置开始到结尾,如果角标不存在,会出现字符串角标越界异常。                 System.Out.println(2,4);//包含头,不包含尾      输出结果为:cdef                           cd  7.转换,去除空格,比较     7-1  将字符串转成大写或小写             String toUpperCase();              String toLowerCase();     7-2   将字符串两端的多个空格去除             String   trim();     7-3    对两个字符串进行自然顺序的比较             int   compareTo(String); 8.StringBufferStringBuilder

String是不可变类,一旦String对象被创建,包含在对象中的字符序列是不可变的,直到对象被销毁;

 

StringBuffer StringBuilder对象则是可变的!

 

举例说明这两个的好处:(不用每次新建对象,效率高!)

  

publicclass Demo22 {

    publicstaticvoid main(String[] args) {

       

        String s = "";

        long begintime = System.currentTimeMillis();

        for(int i = 1;i <= 100000;i++){

            s += i;

        }

       

       

        long endtime = System.currentTimeMillis();

        long time = endtime - begintime;

        System.out.println("运行时间为:"+time);

       

        StringBuffer s1 = new StringBuffer();

        s = "";

        begintime = System.currentTimeMillis();

        for(int i = 1;i <= 100000;i++){

            s = ""+i;

            s1 = new StringBuffer(s);

        }

       

        endtime = System.currentTimeMillis();

        time = endtime - begintime;

        System.out.println("运行时间为:"+time);

       

    }

}

 

输出:

运行时间为:82922

运行时间为:15

可以看得出:StringBuffer这两个效率相当高!

 

StringBuffer 是线程安全的;

StringBuilder:是线程不安全的,性能高点,推荐使StringBuilder(jdk1.5出现)

StringBuffer的字符序列是可变的(通过append等方法操作)

StringBuffer   String之间的转换;

String toString()返回此序列中数据的字符串表示形式。

StringBuffer(String str):以指定的字符串创建StringBuffer对象。

 

 

 

StringBuffer方法

 

public StringBuilder()构造一个不带任何字符的StringBuilder对象。

StringBuffer(String str):构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。

StringBuffer append(Object o):将指定的任意类型对象追加到此StringBuffer对象。

StringBuffer insert(int offset, Object o) :将任意类型参数的字符串表示形式插入此序列中。

StringBuffer delete(int start, int end) :移除此序列的子字符串中的字符。

StringBuffer deleteCharAt(int index):移除此序列指定位置的 char 

 

Eg

 

package reviewDemo;

 

/**

 * 用StringBuilder或StringBuffer:

    把字符串“ABCDE”;

    转变成字符串“A,B,C,D”

 */

 

publicclass Demo23 {

    publicstaticvoid main(String[] args) {

        //第一种方法:往里面插入;

        StringBuilder sb = new StringBuilder("ABCDE");

        sb.deleteCharAt(sb.length()-1);

        System.out.println(sb);

        for (int i = 0; i < sb.length(); i+=2) {

            sb.insert(i, ",");

        }

        sb.deleteCharAt(0);

       

        System.out.println(sb);

       

       

        //第二种方法:往里面追加,要追加必须遍历,必须换为数组!

        sb = new StringBuilder("ABCDE");

        sb.deleteCharAt(sb.length()-1);

        System.out.println(sb);

        char []cs = sb.toString().toCharArray();

        StringBuilder sb1 = new StringBuilder();

        for (char c : cs) {

            sb1.append(c).append(",");

        }

        sb1.deleteCharAt(sb1.length()-1);

        System.out.println(sb1);

    }

}

  

package reviewDemo;

/**

 * 编写一个程序,

 * 这个程序把一个整数数组中的每个元素用逗号连接成一个字符串,

 * 例如,根据内容为{1,2,3}的数组形成内容为"1,2,3"的字符串。

 */

 

publicclass Demo24 {

    publicstaticvoid main(String[] args) {

        int []i = {1,2,3,4,5};

        StringBuilder sb = new StringBuilder();

        for (int j : i) {

            sb.append(j).append(",");

        }

        sb.deleteCharAt(sb.length()-1);

        System.out.println(sb);

    }

}

 

 

 

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