黑马程序员_String类及StringBuffer和StringBuilder概述和功能、基本数据类型

来源:互联网 发布:淘宝爱互动 编辑:程序博客网 时间:2024/05/29 02:08

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 

String类及StringBuffer和StringBuilder概述和功能

一、String

字符串是一个特殊的对象。

只要是双引号括起来的,都是一个字符串对象,如:”abc””3344”,这都属于字符串对象。String  s  = “abc”;  s类类型变量,”abc”是一个对象。

String类中有很多够着函数,有空参数的构造函数,也有有参数的构造函数。这样看来,

String s = new String();

String s1 =””;

这两个方式其实是一样的,当然第二个方法更为方便。

字符串一旦初始化就不可以被改变

String  s  = “abc”;

s = “aaaa”;

这里,不要以为原有字符串改变了,”abc”并没有变,变化的是s变量的指向,它指向了一个新的字符串对象。再看下面的代码:

         String s1 = "abc";

                   Strings2 = new String("abc");

上面两者的是有区别的,s1在内存中有一个对象,s2中在内存中有两个对象。但是s1s2的地址不同,如果用equals方法比较的话,结果却是true因为String类复写了Object equals方法,比较的是字符串中的内容是否相同。

字符串是在常量池中的,所以一个字符串对象是单一的,比如:
                   String s1 ="abc";

                   Strings2 = "abc";

其中s2不会在创建一个新的字符串,而是指向原有的字符串。

二、String中的常用方法

1、  获取

1.1   获取字符串长度  int  length()

1.2   根据位置获取位置上某个字符  char  charAt(int index)

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

 int indexOf(int ch)  这里注意传入的是ASCII码。返回的是ch在字符串中第一次出现的位置。

 int indexOf(int ch  ,  int formIndex ) formIndex位置开始,返回ch在字符串中的出现的位置。

int indexOf(String  str)  这里注意传入的是ASCII码。返回的是str在字符串中第一次出现的位置。

 int indexOf(String  str  ,  int  formIndex ) formIndex位置开始,返回str在字符串中的出现的位置。

相应的如果前面加上last,比如lastIndexOf,就是获取最后一次出现的位置。

上述方法中,如果没有要找的字符或字符串,那么就会返回-1

2、  判断

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

boolean  containsstr);

特殊之处:indexOf(str):可以索引str第一次出现的位置,如果返回-1,则表示该str不再字符串中,所以也可以用于判断是否包含。

if(str.indexOf(str)!=-1)

而且该方法即可以判断是否存在,又可以判断位置。

2.2 字符串中是否有内容

boolean  isEmpty() 这里其实就是判断length()是否为零。(1.6才有)。

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

   boolean startsWith(Stringstr);

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

   booleanendsWith(String str);

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

   boolean  equalsstr);

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

   booleanequalsIgnoreCasestr);

3、  转换

3.1 将字符数组转成字符串

构造函数:String(char[]);将字符数组转成字符串

          String(char[ ]  ch  ,int offset , int count);将字符数组的一部分转成字符串,从offse值开始,长度为count值。

静态方法:

                    static  String copyVauleOf(char[ ]  ch)

                    static  String copyVauleOf(char[ ]  ch ,int offse , int count)

                    static  String vauleOf(char[ ]  ch)

3.2 将字符串转成字符数组

           char[]  toCharArray()将字符串变成字符数组

3.3将字节数组转成字符串

String(byte[] b);

String(byre[] int offset ,int count)

3.4将字符串转成字节数组

           byte[]  getBytes()

3.5 将基本数据类型转成字符串

String valueOf (int);

String valueOf (double);

特殊:字符串和字节数组在转换过程中,是可以指定编码表的,有这个方法、

 

4、  替换

String replace (char oldchar , charnewchar) 替换字符

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

String replace (oldstr , newstr ) 替换字符串

5、  切割

String [ ] split(regex); 把一个字符串,以regex隔开,分成一个字符串数组。

6、  获取字符串的字串

String substring(begin)

String substring(begin ,end);注意,这个截取的是只包含头,不包含尾。

7、  转换,去除空格

7.1 将字符串转成大写或者小写

           StringtoUpperCase();

           StringtoLowerCase();

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

           Stringtrim();

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

           intcompareTo(str);这个要注意,两字符串相等返回为0,大于返回大于0的参数,小于返回小于0的参数,一句Unicode

 

StringBufferStringBuilder

一、StringBuffer

StringBuffer是一个容器,可以对字符串内容进行增删,很多方法与String方法一致,StringBuffer长度是可变的。

操作方法:当然最先都要建立对象。

1、  存储

1.1 StringBuffer append(数据):将制定数据作为参数添加到已有数据的结尾处。返回时Stringbuffer对象。注意数据中,接收除byteshort意外的其他基本类型,可接受字符串,数组类的只接收char类型数组,接受对象和其他Stringbuffer对象。

1.2 StringBuffer insertindex,数据):可以将数据插入指定位置。

2、删除

         StringBufferdeleteint start , int end:从指定位置删除数据,含头不含尾。

         StringBufferdeleteCharAtint index):删除指定位置的字符

2、  获取

char charAtint index

int indexOf(String str)

int length()

String substring(int start ,int end)这里注意,也是返回的String类型

3、  修改

StringBuffer replace(start , end ,str);

void setCharAr(ine index , char ch)这里注意,没有返回类型

4、  反转

StringBuffer reverse();

5void getChar(intsrcBegin , int srcEnd , char[ ] dst , int dstBegin):将缓冲区中的指定字符存到目标字符数组中

 

总结:

1)  StringBuffer长度是可变化的

2)  可以操作多个数据类型

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

二、StringBuilder

         这类是被用作StringBuffer的简易替换,不保证同步。JDK1.5特性

         StringBuilder是线程不同步的

         StringBuffer是线程同步的

 

开发建议使用StringBuilder

 

 

基本数据类型对象

一、基本数据类型包装类

java中可以把基本数据类包装成类,这样就可以用对象的方法对基本数据类型进行操作。

每个基本数据类型都有对应的包装类,比如byte  Byteint  Integer。。。。。。我们以Ingeter为例。

基本数据类型对象包装类的最常见的作用,就是用于基本数据类型和字符串类型之间的做转换。

1、基本数据类型转换成字符串:基本数据类型+””   

         基本数据类型.toString(基本数据类型);

如:Integer.toString(99),99转换成字符串”99”

2、字符串转成基本数据类型

         Integer为例:int num =Integer.parseInt ( “123456”),这样就把字符串”123456”转变成十进制的123456

3、十进制转换成其他进制

         toBinaryString()

         toHexString()

         toOctalString()

4、其他进制转换成十进制

         praseIntStringradix)注意,这里传入的radix是进制数,如2,8,10,16,前面的字符串是对应后面的进制的。

 

 

二、JDK1.5新特性

基本数据类型的拆箱与装箱  

   Integer a = 4;这里就会把4自动装箱为Integer对象

   System.out.println(a+5);这里就会把Integer对象a,进行拆箱和5相加;

  

  -128~127

在这个范围内,相同数字装箱对应的对象只有一个。程序如下:

                   Integer i1 = 13;

                   Integer i2 = 13;

                   System.out.println(i1==i2);

                   结果是 true

注意一点,byte中自动装箱对象一样,但是用到new Integer13)和new Integer13),就是两个对象了。

 

 

0 0
原创粉丝点击