String类

来源:互联网 发布:淘宝怎么赚商家的钱 编辑:程序博客网 时间:2024/05/22 03:28


举出例子分析字符串特点

String s1=“abc”;

String s2=new String(“abc”);

String s3=“abc”;

a1和a3比较s1==s3 返回true

s1和s2进行对比,结果,s1==s2返回false,s1.equlas(s2),返回true

分析结果,

通过new String这种方式new出一个新对象没有查找内存池,所以返回false

String类复写了equals方法,比较了两个字符串内容是否相同,


常见功能

1、获取。

    1.1 字符串中包含的字符数,也就是字符串的长度。

        int length():                           获取长度。(数组获取长度的是length常量)

    1.2 根据位置获取位置上某个字符。(此字符串指定索引处的char值。第一个char 值位于索引 0 处)

        char charAt(intindex):

    1.3 根据字符获取该字符在字符串中位置。

        int indexOf(intch):                    返回的是ch在字符串中第一次出现的位置。传入的值是(包括 0 和 0xFFFF)

        int indexOf(intch, int fromIndex) :    从fromIndex指定位置开始,获取ch在字符串中出现的位置。

        intindexOf(String str):                返回的是str在字符串中第一次出现的位置。(找不到返回-1)

        intindexOf(String str, int fromIndex) :从fromIndex指定位置开始,获取str在字符串中出现的位置。

        intlastIndexOf(int ch) :              返回指定字符在此字符串中最后一次出现处的索引。

int lastIndexOf(int ch, intfromIndex) :

int lastIndexOf(String str):

int lastIndexOf(String str,int fromIndex) :

 

特殊:indexOf(str):可以索引str第一次出现位置,如果返回-1.表示该str不在字符串中存在。

 

        所以,也可以用于对指定判断是否包含。

            if(str.indexOf(“aa”)!=-1)

而且该方法即可以判断,又可以获取出现的位置。

 

2,判断。

    2.1字符串中是否包含某一个子串。

        booleancontains(str):

    2.2字符中是否有内容。

        boolean isEmpty(): 原理就是判断长度是否为0.

    2.3字符串是否是以指定内容开头。

        booleanstartsWith(str);

    2.4字符串是否是以指定内容结尾。

        boolean endsWith(str);

    2.5判断字符串内容是否相同。复写了Object类中的equals方法。

        booleanequals(str);

    2.6判断内容是否相同,并忽略大小写。

        booleanequalsIgnoreCase();

   

3,转换。

    3.1将字符数组转成字符串。

        构造函数:String(char[])

                  String(char[],offset,count):将字符数组中的一部分转成字符串。

        静态方法:

                static String copyValueOf(char[] data);

                static String copyValueOf(char[]data, int offset, int count)

                static String valueOf(char[]):

 

    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)

 

        //3+"";//String.valueOf(3);

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

 

4,替换

        String replace(char oldChar, char newChar);

如果要替换的字符不存在,返回的还是原串。

 

5,切割

        String[] split(regex);

 

6,子串。获取字符串中的一部分。

        String substring(begin);

        String substring(begin,end);

返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的 beginIndex 处开始,直到索引endIndex - 1 处的字符。因此该子字符串的长度为endIndex-beginIndex。

 

7,转换,去除空格,比较。

    7.1将字符串转成大写或则小写。

         String toUpperCase();

         String toLowerCase();

 

    7.2将字符串两端的多个空格去除。

        String trim();

 

    7.3对两个字符串进行自然顺序的比较。

        int compareTo(string);

     


返回:如果参数字符串等于此字符串,则返回值 0;如果此字符串按字典顺序小于字符串参数,则返回一个小于 0 的值;如果此字符串按字典顺序大于字符串参数,则返回一个大于 0 的值。


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

方法调用,方法返回调用方法的对象,形成链条


特点:面盆理论

1、长度是可变化的。

2、可以字节操作多个数据类型。

3、最终会通过toString方法变成字符串。


 

1、存储。

    StringBufferappend(): 

将指定数据作为参数添加到已有数据结尾处。

    StringBufferinsert(index,数据):   

可以将数据插入到指定index位置。

 

2、删除。

    StringBufferdelete(start,end):

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

    StringBufferdeleteCharAt(index):  

删除指定位置的字符。

   

3、获取。

    char charAt(int index)

    int indexOf(String str)

    int lastIndexOf(Stringstr)

    int length()

    String substring(intstart, int end)

 

4、修改。

    StringBuffer replace(int start, int end,String str);

    void setCharAt(intindex, char ch) ;

 

5、反转。

    StringBuffer reverse();

 

6、将缓冲区中指定数据存储到指定字符数组中。

    voidgetChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

srcBegin——开始复制在这个偏移。srcEnd -停止复制在这个偏移。

dst -数组复制数据。dstBegin - dst偏移量。

 

StringBuilder  

 

一个可变的字符序列。此类提供一个与StringBuilder兼容的 API,但不保证同步。该类被设计用作StringBuffer的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比StringBuffer要快。

 

JDK1.5 版本之后出现了StringBuilder.

StringBuffer是线程同步。多线程用

StringBuilder是线程不同步。单线程用

 

API升级三个因素、方向:

1、提高效率。

2、简化书写。

3、提高安全性。

基本数据类型对象包装类

byte        Byte

short      Short

int         Integer

long        Long

boolean     Boolean 

float       Float

double      Double

char        Character

      类型对象包装类都是final类


  基本数据类型对象包装类的最常见作用:

就是用于基本数据类型和字符串类型之间做转换

基本数据类型转成字符串。

    1基本数据类型+""

    2基本数据类型对象包装类.toString(基本数据类型值);

字符串转成基本数据类型。

    xxx a = Xxx.parseXxx(String);

自动装箱和拆箱


Integer x =new Integer(4);

Integer x=4;//自动装箱。new Integer(4)

x=x+2;//这里是进行了自动拆箱,然后加2,再把和装箱付给x

当数值在byte范围内容(-128 — +127),对于新特性如果该数值已经存在,则不会再开辟新的空间。指向同一内存地址。


0 0
原创粉丝点击