字符串——String 的常用方法及注意事项

来源:互联网 发布:linux查看80端口 编辑:程序博客网 时间:2024/06/01 08:19
String自身特点:

String被初始化之后不能被修改的
String s = “first str”;
s = “second str”;
这个过程中,s的引用的地址变了,但是想要改变s之前指向的字符串对象,是无法改变的,只能将s指向新的字符串对象。


String s1 = “abc”;
String s2 = new String(“abc”);
两者有何区别:
第一句有一个对象(“abc”是一个对象)
第二句有两个对象(一个是new出来的对象,一个是“abc”对象)




原因:
    两个而引用指向的对象不一样。
    equals 方法比较的是地址值。但是 String 复写了 Object 中的 equals 方法,String 定义了自己独特的判断相同的规则——判断字符串内容是否相同

String s1 = “abc”;
String s2 = new String(“abc”);
String s3 = “abc”;

System.out.println(s1==s2);
System.out.println(s1==s3);
打印结果是:false,true
为什么第二个是true:
由于对于String这种特殊的类,它的字符串对象存储在常量池内存中,如果常量池中已经存在了“abc”对象,那么如果在创建一个相同的“abc”对象,比较浪费,所以可以直接用新的引用指向已经存在的“abc”


String 的常用方法:

1、获取
      1.1 字符串中包含的字符数,也就是字符串的长度。
            int   length() :  获取长度

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

      1.3 根据字符获得该字符在字符串中的位置(给我ASCII码找位置)
            int  indexOf(int ch) : 返回的是ch在字符串中第一次出现的位置  ,ch是ASCII码
            int  indexOf(int ch,int fromIndex) :从fromIndex开始,获取ch在字符串中出现的位置

            int  indexOf(String str) : 返回的是str在字符串中第一次出现的位置  (给我字符串找位置)
            int  indexOf(String str,int fromIndex) :从fromIndex开始,获取ch在字符串中出现的位置
          (如果没有则返回  -1)

-----------------------------------------------------------------------------------------------------------------

2、判断
     2.1 判断字符串中是否包含一个子串
            boolean  contains(CharSequence str):CharSequence是一个接口,String,StringBuffer和StringBuilder都是他的子类
                   特殊之处:indexOf(String str):可以索引str第一次出现的位置,如果返回-1,表示str不在该字符串中存在,所以也可以用来判断str的是否包含:
                    if(string.indexOf(“aa”)!= -1)
                    所以 indexOf(Stirng  str)既可以获得第一次出现的位置,又可以判断是否存在。

     2.2 字符串中是否有内容
            boolean  isEmpty(): 实际上就是判断字符串长度是否为0
            注意:
                “”与 null  是有区别的:前者是个对象,只不过内容是空,引用还是有指向对象的;而后者引用连指向对象都没有。

     2.3 字符串是否以指定内容开头
            boolean  startsWith(String str)

     2.4 字符串是否以指定内容结尾
            boolean  endsWith(String  str)

     2.5 判断字符串的内容是否相同,复写了Object中的equals()方法
            boolean  equals(String  str)

     2.6 判断字符窜的内容是否相同,并忽略大小写
            boolean  equealsIgnoreCase(String  str)

-----------------------------------------------------------------------------------------------------------------

3.、转换
     3.1 将字符数组转换成字符串
              构造函数:
                  String(char  arr[ ])从数组的开始到最后所有的字符转换成字符串
                  Stirng(char  arr[ ],int  offset,int  count):从数组的第几个字符开始往后选择count个字符转换成字符串

     3.2 将字符串转换成字符数组
                  toCharArray()

     3.3 将字节数组转换成字符串
                  String(byte  arr[ ])从数组的开始到最后所有的字符转换成字符串
                  Stirng(byte  arr[ ],int  offset,int  count):从数组的第几个字符开始往后选择count个字符转换成字符串

     3.4 将字符串转换成字节数组   ( IO中的字节流中需要将字符流转换成字节流 )
                  getBytes()

     3.5 将基本数据类型转换成字符串
             String  static  valueOf(int num)
             String  static  valueOf(int num,int offset,int count)


-----------------------------------------------------------------------------------------------------------------

4、替换
     4.1 String   replace(char  oldChar,char  newChar)
             注意:
                 1、该方法返回的是一个新字符串,因为字符串对象是不能被改变的
                           String s = "hello java";
                           String s1 = s.replace("java", "n");
                           System.out.println("s= "+s);
                           System.out.println("s1= "+s1);
                       输出的结果是:
                           s= hello java
                           s1= hello n
                2、如果要替换的字符不存在,则返回原字符串
                
     4.2  String   replace(String  oldString,String  newString)(与上同理)
  
-----------------------------------------------------------------------------------------------------------------

5、切割
      5.1 String[ ]  split(String  str)   : 返回值是一个字符串数组

                      String name = "zhangsan,lisi,wangwu";
                      String[] arrName = name.split(","); 
                      //长度自动生成
                      for(int i = 0;i < arrName.length;i++){
                              System.out.println("name= "+arrName[ i ]); 
                      }

-----------------------------------------------------------------------------------------------------------------


6、子串
       6.1 获得字符串中的一部分
           String  substring(int  begin) :从指定开头到结尾
           String  substring(int  begin,int  end)  :包含头,不包含尾


-----------------------------------------------------------------------------------------------------------------

7、转换、去空格、比较
      7.1 将字符串转换成大写或者小写
              String  toUpperCase() 
              String  toLowerCaes()
                 注意:调用这两个方法的字符串没有变,这两个方法返回的是一个新的字符串
      7.2 将字符串两端多个空格去除
              Stirng  trim()
 
                   String str = " hello java ";
                   String str2 = str.trim(); 
                   System.out.println(str); 
                   System.out.println(str.length()); 
                   System.out.println(str2); 
                   System.out.println(str2.length());
                打印结果为:
                              hello java
                    17
                    hello java
                    10
(这三个方法都返回新的字符串)

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

0 0
原创粉丝点击