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

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
                            wangwu
6 .字符串的字串
      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培训、期待与您交流! ----------

 

                                     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值