Java中String

Outline

一.实例化。

1.方式

(1).直接赋值:String str = “hello world”;

(2).new实例化:String str1 =new String("hello world");

2.区别

(1).如果采用直接赋值方式为字符串创建实例化对象:JVM底层会自动维护一个对象池(字符串对象池),那么该对象会自动保存在这个对象池之中。如果下次继续采用直接赋值的方式创建String对象,会首先比较对象池中有没有指定内容,若有,则直接使用。如果对象池中没有指定内容,则开辟新的空间来容纳新的字符串对象而后自动保存在对象池中,以便下次使用。

(2).构造方法实例化对象

a.采用构造方法创建String实例化对象时,每new一个,在堆上会开辟两块空间,有一块是垃圾空间。 

b.采用构造方法产生的字符串不会自动入池。

c.String提供手工入池操作.intern()。

二.字符串的比较

1.==  址比较。

2.值比较

(1).boolean equals():区分大小写方法

(2).booleanequalsIgnoreCase():不区分大小写比较

( 3).intcompareTo(String str):

          a.>0:表示本字符串大于指定字符串

          b.=0:表示两个字符串相等

          c.<0:表示本字符串小于指定字符串。

三.常见用法

              1.char[]->String:

                     publicString(char[]);

              2.取的制定索引字符(********)

                     publicchar charAt(int intdex):取得字符串指定索引字符

              3.String->char[]:

                     publicchar tocharArray():

       字节(byte)与字符串(String)的常用方法:

              1.byte[]->String:

                     publicString(byte[],编码名称):将指定字节数组变为字符串。

              2.String->byte[]:

                     publicbyte[] getBytes():将字符串对象转化为byte数组。

              3.String->byte[]:

                     publicbyte getBytes(String charName):将指定字符串按照相应编码转化为字节数组。

       字符串比较:

              1.booleanequals():区分大小写方法

              2.booleanequalsIgnoreCase():不区分大小写比较

              3.intcompareTo(String str):

                     a.>0:表示本字符串大于指定字符串

                     b.=0:表示两个字符串相等

                     c.<0:表示本字符串小于指定字符串。

       字符串查找:从完整字符串中判断指定字符串是否在存在(*****)

              1.(*****)

                      public boolean contains(String str):判断一个字符串str在本字符串是否存在

              2.从头开始查找指定字符串位置

                     publicint indexOf(String str):从头开始查找str的位置,找到返回str索引下标,没找到返回-1.

              3.从后开始查找指定字符串位置

                     publicint lastIndexOf(String str):从后开始查找str的位置,找到返回str索引下标,没找到返回-1.

              4.判断是否以指定字符串开头

                     publicboolean startsWith(String str):判断是否以str开头。

              5.判断是否以指定字符串结尾

                     publicboolean endsWith(String str):判断是否以str结尾。

       字符串替换:

              replace(String reg,String rep):将本字符串第一个出现reg的字符串替换称rep。

              replaceAll(String reg,String rep):将本字符串出现reg的字符串替换称rep。

       字符串拆分:

              publicString[]spilt()

       字符串截取:

              publicString substring()

                     首字母大写:str.substring(0,1).toUpperCase()+str.substring(1);

       字符串其他操作:

              判断字符串是否有内容:

                     if(!(str==null||str.isEmpty())){

                                   //str有内容

                            }

              trim():去掉字符串中的空格,去掉字符串左右两边空格,中间的空格还是保留;

注意:字符串常量不可变更:在定义字符串常量时,它的内容不可变更(变的是引用)。使用字符串时,尽量少变更。(+操作最多执行3次)。

四.String与StringBuilder,StringBuffer的比较


1.String类内容不变,俩StringBuilder,StringBuffer内容可变

2.StringBuffer采用同步处理,线程安全,效率较低

3.StringBuilder采用异步处理,线程不安全,效率高。

(String类的修改操作“+”,JVM底层会将String变为StringBuilder类处理,减少大量垃圾空间)




猜你喜欢

转载自blog.csdn.net/weixin_41891854/article/details/80938846