1--java字符串学习

java–学习一.字符串学习(其他数据类型操作同C语言

1.字符串学习一开始都是这个经典的例子:

String str1 = "hello world";
String str2 = "hello world";
String str3 = new String("hello world");
System.out.println(str1 == str2);//true 
System.out.println(str1 == str3);//false
System.out.println(str1.equals(str3));//true 
System.identityHashCode(str1)//字符串地址2018699554(机子不同数字不同,但是str1,和str2相等)
System.identityHashCode(str2)//字符串地址2018699554
System.identityHashCode(str3)//字符串地址1311053135

这里的等号对比两个对象是否相等,当str1创建时会在常量池中声明一个常量”hello world”,
接着创建str2时,编译器会先去常量池中查找是否有相等的常量 (这是规定,目的是减少内存消耗)
如果有相应的常量直接让str2等于此常量,此时str2和str1是相等的(代码中输出两个变量的地址,
也就是字符串的头地址),equals()则是 对比起内容

2.使用String构造方法创建String对象

String有两种创建方式,上面代码都有用到,直接赋值和通过 new 创建,看上述代码二者区别则不言
而喻,String的构造方法还有以下这些,String类提供了16种构造方法,常用的有五种:

String() --------- 初始化一个String对象,表示一个空字符序列
String(String value) --------- 利用一个直接量创建一个新串
String(char[] value) --------- 利用一个字符数组创建
String(char[] value,int offset,int count) ---------截取字符数组,创建从offset开始的count个字符创建
String(StringBuffer buffer) --------- 利用StringBuffer创建

    //形如:
    String s = new String();        //s =  
    String s1 = new String(“hello”);    //s1 = hello
    char[] c = {'h','e','l','l','o'};   
    String s2 = new String(c);      //s2 = hello
    'String s3 = new String(c,1,3);     //s3 = ell
    //以上就是String类的基本初始化方法。

3.String类常用的一些方法

    int length()        //查看字符串的长度

    boolean equals(String)      //对比两个字符串的“内容”是否一致

    int compareTo(String)   //比较两个字符串大小
        首先判断两个字符串的长度(长度不一返回长度差值 前减后)
        长度一致逐个对比,直至不相同的字符,返回字符的差值(返回int 前减后ASCII之差)

    char charAt(int)        //输出第int个字符(从零开始)

    String substring(int)       //字符串截取,从第int到最后(从零开始第int位)
    String substring(int1,int2) //字符串截取,截取从int1到int2的字符串
    charSequence subSequence(int1,int2) //字符串截取,截取从int1到int2的字符串
                        (返回charSequence需强转为String)

    String replace(Char1,Char2)     //将char1转换char2
    String replaceAll(String1,String2)  //将String1转换String2

    String[] split(String)      //将字符串在String处分开 成字符串数组

4.可变字符串类 StringBuffer StringBuilder

(1).构造方法:

    StringBuffer()          //创建空串      缓冲区:16
    StringBuffer(int)       //创建int长度的      缓冲区:int + 16
    StringBuffer(String)        //创建String.lenth长度的 缓冲区:String.lenth + 16
    StringBuffer(CharSequence)  // CharSequence(字符串序列,好像是个接口)

(2).StringBuffer和StringBuilder的区别是:StringBuffer是进程安全的,再其内部实现使用关键字
synchroized有一定的性能消耗,StringBuilder内部非线程安全的,效率更高

    int lenth()     //返回字符串的长度

    int capacity()      //返回缓冲区长度 
        ***注意,capacity返回缓冲区长度,StringBuffer创建时候会多加  16  个字节的缓冲区

    boolean equals()    //**注意StringBuffer由于没重写equals()方法,需要比较地址和内容

(3)追加字符

StringBuffer append(String)     //在末尾附加(追加)字符串
    StringBugger insert(int , String)   //在第12个字符后添加String

    StringBuffer reverse(StringBuffer)  //反向输出

    StringBuffer delete(int1 , int2)    //删除从int1到int2的字符
    StringBuffer deleteAt(int)      //删除第int的字符(从零开始)

    StringBuffer trimToSize()       //将多余的缓冲区释放(16)

(4)StringTokenizer 字符串分词器 将字符串在某个字符处分开,(即抽取单词)

StringTokenizer(String1, String2)   //将String1在String2处分开
                                    //**注意Srting2中每一个字符都作为分词的依据
int countTokens();          //用于计算StringTokenizerr 单词个数

String nextToken();         //将分开的单词转换为字符串格式

你可能感兴趣的:(java学习,java语法学习)