zoukankan      html  css  js  c++  java
  • String类,StringBuffer类,StringBuilder类,基本数据类型对象包装类

    String类:

    String类被final修饰,因此不可以创建String类的子类。

      1: class Demo 
    
      2: {
    
      3:   public static void main(String[] args) 
    
      4:   {
    
      5:     String s=new String();
    
      6:     String s1="";
    
      7:     //以上两种方法是等价的。
    
      8: 
    
      9:     //s2是一个类类型的变量,它指向的"abc"为一个对象
    
     10:     //字符串的最大特点是,一旦被初始化,就不可改变
    
     11:     String s2="abc";
    
     12: 
    
     13:     //此时改变的是s2的指向,不是字符串对象。
    
     14:     s2="kk";
    
     15:     String s3=new String("abc");
    
     16: 
    
     17:     //s2和s3是有区别的,s1在内存中只存在一个对象,而s2在内存中存在两个对象
    
     18: 
    
     19: 
    
     20:   }
    
     21: }
    
     22: 

    String类的常用方法:

    1.获取:

    <1>字符串的长度:length(  )方法,返回值为int类型。

    <2>根据位置获取位置上的字符:charAt(int index),返回值为char类型。

    <3>根据字符获取该字符在字符串上的位置:indexOf(int  ch),ch为字符,传递的是ASCII码值,返回值为字符在字符串中第一次出现的位置。

            indexOf(int  ch,int  fromIndex),从fromIndex指定的位置开始获取ch的位置。

            indexOf(String str),返回的是str在字符串中第一次出现的位置。

            indexOf(String str,int fromIndex),从fromIndex指定的位置开始获取str的位置,如果没有找到,则返回-1。

            lastIndexOf(int ch),反向索引,从右往左找,但是角标依旧是从左到右从0开始排序。

    2.判断:

    <1>字符串中是否包含某一个子串:contains(str),返回值为boolean型。

    <2>字符串中是否有内容:isEmpty(  ),返回值为boolean型。

    <3>字符串是否以指定内容开头:startsWith(str),返回值为boolean型。

    <4>字符串是否以指定内容结尾:endsWith(str),返回值为boolean型。

    <5>判断字符串中的内容是否相同:equals(str)

    <6>判断字符串的内容是否相同,忽略大小写:equalsIgnoreCase( )

    3.转换:

    <1>将字符数组转换成字符串:

            构造函数:String(char[])

                               String(char[],offset,count)将字符数组中的一部分转换成字符串,offset为起始位,count为个数

            静态方法:copyValueOf(char[])

                               copyValueOf(char[],offset,count)

                               valueOf(char[])

                               valueOf(char[],offset,count)

    <2>将字符串转成字符数组:toCharArray( )

    <3>将字节数组转换成字符串:

            构造函数:String(byte[])

                               String(byte[],offset,count)

    <4>将字符串转换成字节数组:getBytes( )

    <5>将基本数据类型转成字符串:valueOf( 基本数据类型 )

    特殊:字符串和字节数组在转换过程中,是可以指定编码表的。

    4.替换:

    replace(oldChar,newChar),用新的字符子串替换旧的字符子串。

    5.切割:

    split(regex),以regex进行切割。

      1: 
    
      2: //以逗号进行切割,得出的结果为zhangsan  lisi  wangwu
    
      3: String s="zhangsan,lisi,wangwu";
    
      4: String[] arr=s.split(",");
    
      5: 

    6.获取字符串中的一部分:

    <1>subString(begin),从指定位置一直截取到字符串结尾处。

    <2>subString(begin,end),从指定开始位置一直截止到指定的结束位置,包含头,不包含尾,获取整个字符串,从0到s.length。

    7.转换,去除空格,比较:

    <1>将字符串转换成大写或者小写:toUpperCase( )和toLowerCase( )

    <2>将字符串两端的多个空格去除:trim( )

    <3>对两个字符串进行自然顺序的比较:

    compareTo(string),如果此字符串等于参数字符串,则返回值为0,如果此字符串大于参数字符串,返回值为正数,如果此字符串小于参数字符串,则返回负数

    练习:查找子字符串在字符串中出现的次数

      1: public static int getSubCount_1(String str,String s)
    
      2:   {
    
      3:     //设置一个计数器
    
      4:     int count=0;
    
      5:     int index=0;
    
      6: 
    
      7:     //获取到子串s的位置
    
      8:     while((index=str.indexOf(s))!=-1)
    
      9:     {
    
     10:       System.out.println("Str="+str);
    
     11:       //从s开始往后推s.length()个位置,然后截取子串。
    
     12:       str=str.subString(index+s.length());
    
     13:       count++;
    
     14:     }
    
     15:       return count;
    
     16: 
    
     17:   }
    
     18:   
    
     19:   public static int getSubCount_2(String str,String s)
    
     20:   {
    
     21:     int count=0;
    
     22:     int index=0;
    
     23:     while((index=str.indexOf(s,index))!=-1)
    
     24:     {
    
     25:       System.out.println("index="+index);
    
     26:       //将index进行叠加,每次都往后推s.length()个位置,然后在从新的位置进行搜索
    
     27:       index=index+s.length();
    
     28:       count++;
    
     29:     }
    
     30: 
    
     31:     return count;
    
     32: 
    
     33:   }

    例:获取两个字符串中的最大相同子串。

      1: 
    
      2: public static String getMaxSubString(String s1,String s2)
    
      3: {
    
      4:   String max="",min="";
    
      5:   max=(s1.length()>s2.length())?s1:s2;
    
      6:   min=(max==s1)?s2:s1;
    
      7: 
    
      8:   for(int x=0;x<min.length();x++)
    
      9:   {
    
     10:     for(int y=0,z=min.length()-x;z!=min.length+1;y++,z++)
    
     11:     {
    
     12:       String temp=min.subString(y,z);
    
     13:       if(max.contains(temp))
    
     14:         return temp;
    
     15:     }
    
     16:   }
    
     17: }

    StringBuffer类:

    StringBuffer是字符串缓冲区,是一个容器。

    1.存储:

    append( ),返回类型为StringBuffer,将指定的数据作为参数添加到已有数据结尾处。

    insert(offset,任意类型),在offset位置插入一个数据。

    toString( ),将StringBuffer中存储的变为字符串

    2.删除:

    delete(start,end),删除缓冲区中的数据,包含start,不包含end。

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

    delete(0,sb.length()),清空缓冲区。

    3.获取:

    charAt(index),通过角标获取字符。

    indexOf(String str),通过字符串来获取位置。

    lastIndexOf(String str),反向遍历字符串来获取字符子串的位置。

    4.修改:

    replace(start,end,str),将start~end(不包含end)替换成指定的字符串。

    setCharAt(index,ch),将指定index位置的替换成指定的字符ch。

    5.反转:

    reverse( )

    6.getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin)

    将缓冲区中的指定数据存储在指定的数组的指定位置中。

      1: 
    
      2:     StringBuffer sb=new StringBuffer("abcdef");
    
      3: 
    
      4:     char[] chs=new char[4];
    
      5:     sb.getChars(1,4,chs,1);
    
      6:     for(char c:chs)
    
      7:     {
    
      8:       System.out.print(c);
    
      9:     }
    
     10: 

    打印结果为: bcd。


    StringBuilder类:

    一个可变的字符序列,此类提供一个与StringBuffer兼容的API,但不保证同步,被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用时,与StringBuffer功能一致。


    基本数据类型对象包装类:

    360软件小助手截图20140203215657

    <1>基本数据类型转换成字符串:

    基本数据类型+“”

    基本数据类型.toString( 基本数据类型值),例如:Integer.toString(34);

    <2>字符串转换成基本数据类型:

    parseXXXX(str),例如parseInt(“123”)

    Integer类中的toBinaryString(),将十进制转换成二进制。

                            toHexString(),将十进制转换成十六进制。

                            toOctalString(),将十进制转换成八进制。

      1: Integer m=128,n=128;
    
      2: System.out.println("m==n"+(m==n));//false
    
      3: 
    
      4: Integer a=127,b=127;
    
      5: System.out.println("a==b"+(a==b));//true
    
      6: 
    
      7: /*
    
      8: 因为a和b指向了同一个Integer对象,
    
      9: 因为当数值在byte范围内时,对于新特性,如果该对象已经存在,则不会再开辟新的空间。
    
     10: byte的范围为:-128~127
    
     11: */
    
     12: 
  • 相关阅读:
    MySQL对于数据库应该如何如何配置安全问题了
    对于改善 MySQL 数据装载操作有效率的方法是怎样
    MySQL与SQL比较有那些区别呢
    Centos6.5和Centos7 php环境搭建如何实现呢
    php单例模式是怎么实现的呢
    PHP编写的图片验证码类文件分享方法
    PHP中header函数的用法及其注意重点是什么呢
    java正则表达式四种常用的处理方式是怎么样呢《匹配、分割、代替、获取》
    PHP弱类型安全问题的写法和步骤
    vs2010 使用IIS EXPRESS出错.
  • 原文地址:https://www.cnblogs.com/mandy920213/p/3537676.html
Copyright © 2011-2022 走看看