Java上路11-字符串


一. String:

字符串是final类。创建字符串对象后,将不能更改构成字符串的字符。

class Test
{
       String s1="ABC";  //在内存新建一个字符串对象
       String s2="ABC";  //内容相同,指向上一个对象
       String s3=new String("ABC");    //新建
       char[] chars={'A','B','C'};
       String s4=new String(chars);     //新建
 
       public void compare ()
       {
              System.out.println("s1==s2" + (s1==s2));
              System.out.println("s1==s3" + (s1==s3));
              System.out.println("s1==s4" + (s1==s4));
              System.out.println("s3==s4" + (s3==s4));
              System.out.println("s1.eauals(s2)" + s1.equals(s2));
              System.out.println("s1.eauals(s3)" + s1.equals(s3));
              System.out.println("s1.eauals(s4)" + s1.equals(s4));
              System.out.println("s3.eauals(s4)" + s3.equals(s4));
       }
}
 
class StringTest
{
       public static void main(String[] args)
       {
              new Test().compare();
       }
}   


 

1. 字符串比较:

方法

说明

==

  比较引用地址,判断是否为同一个目标。返回真假

equals ( )

  比较值,判断内容是否相同。返回真假

  equalsIgnoreCase ( )  

  忽略大小写进行比较值。返回真假

compareTo ( )

  按字母顺序比较两个字符串的值。相等返回0,比较字符串在参数字符串之前返回值小于0,否则返回值大于0    

startsWith ( )

  是否以参数字符串开始。返回真假

endsWith ( )

  是否以参数字符串结束。返回真假

class StringTest
{
       public static void main(String[] args)
       {
              String s1="ABC";
              String s2="abc";
              String s3="ABcDe";
              String s4="ABcde";
              //equalsIgnoreCase()忽略大小写比较
              //compareTo()按字母顺序比较。基于字符串中各个字符的Unicode值
              //startsWith()判断是否以参数为开始
              //endsWith()是否以参数为结束
              System.out.println("s1.equalsIgnoreCase(s2)" + s1.equalsIgnoreCase(s2));
              System.out.println("s3.compareTo(s4)" + s3.compareTo(s4));
              System.out.println("s3.startsWith(\"AB\")" + s3.startsWith("AB"));
              System.out.println("s4.endsWith(\"dr\")" + s4.endsWith("dr"));
       }
}   


 2 搜索字符串:

方法

说明

  indexOf(int ch)

  返回第一次出现的字符ch的索引

  indexOf(String str)

  返回第一次出现的字符串str的索引    

  lastIndexOf(int ch)

  返回最后出现的字符ch的索引

  lastIndexOf(String str)    

  返回最后出现的字符串str的索引

class StringTest
{
       public static void main(String[] args)
       {
              String str="ABCabcABCabcJKLabcP";
 
              System.out.println("str.indexOf('c')" + str.indexOf('c'));
              System.out.println("str.indexOf(\"BC\")" + str.indexOf("BC"));
              System.out.println("str.lastIndexOf('c')" + str.lastIndexOf('c'));
              System.out.println("str.lastIndexOf(\"BC\")" + str.lastIndexOf("BC"));
       }
}   



3 提取字符串:

方法

说明

    charAt(int index)

  从指定非负索引提取字符。返回字符

  substring(int index)

  从指定索引提取字符串至结尾。返回字符串

  substring(int begin, int end)    

  返回从指定的开始和结束索引提取的字符串    

  concat(String str)

  将参数字符串连接。返回新的字符串

  replace(char old, char new)

  使用新的字符替换字符串中所有的旧字符

  trim()

  将字符串头尾的空格取出后返回副本

class StringTest
{
       public static void main(String[] args)
       {
              String str="  ABCabcABCabcJKLabcP  ";       //前后各有2个空格
 
              System.out.println("字符串:"+str+"\n长度:str.length() ="+str.length());   //长度
              System.out.println("索引为5的字符:str.charAt(5)= " + str.charAt(5));
              System.out.println("索引为5开始的字符串:str.substring(5)= " + str.substring(5));
              System.out.println("索引为5开始至结尾的字符串长度:"+str.substring(5).length());
              System.out.println("索引为5-11上的字符串:str.substring(5,12) = " + str.substring(5, 12));
              System.out.println("在字符串结尾添加Hello:str.concat(\"Hello\") = " + str.concat(" Hello"));
              System.out.println("将字符串中的A替换为Y:str.replace('A','Y') = " + str.replace('A', 'Y'));
              System.out.println("去除字符串首尾的空格:str.trim() =" + str.trim());
       }
}    



4. 字符串转换:

方法

说明

  toUpperCase()

  将所有字符转为大写

  toLowerCase()

  将所有字符转为小写

  copyValueOf(char[] chars)    

  将字符数组转为字符串

  toCharArray()

  将字符串转为字符数组    

  valueOf()

  转数字为字符串

class StringTest
{
       public static void main(String[] args)
       {
              String str1="ABCabcABCabcJKLabc";
              System.out.println("\n转大写:"+str1.toUpperCase());
              System.out.println("转小写:"+str1.toLowerCase());
 
              char chars[]={'a', 'b', 'c', 'd', 'e', 'f'};
              System.out.println("\n构造方法从字符数组中索引1开始提取4个字符新建字符串:"+new String(chars, 1, 4));
              System.out.println("静态方法转字符数组为字符串:"+String.copyValueOf(chars));
              System.out.println("静态方法从字符数组中索引1开始提取4个字符转为字符串:"+String.copyValueOf(chars, 1, 4));
 
              System.out.println("\n字符串转为数组:"+str1.toCharArray());
 
              System.out.println("\n转数字为字符串:"+String.valueOf(123));
              System.out.println("转数字为字符串:"+String.valueOf(123.456));
             
       }
}  


5. 字符串分割:

方法

说明

  split(String str)  

  以str为标记分割字符串为数组  

class StringTest
{
       public static void main(String[] args)
       {
              String str1="ABCabcABCabcJKLabcD";
              String[] str2=str1.split("c");
              for(int i=0; i<str2.length; i++)
              {
                     System.out.println(str2[i]);
              }
       }
}  



二. StringBuffer:

       可修改的字符串类,动态的字符数组。

新建

构造方法

说明

  StringBuffer ( )

  默认保留16个字符的空间

  StringBuffer ( int length )

  同时设置缓存器大小

  StringBuffer ( String value )

  接收参数

 

方法

说明

  insert ( int index, String str )

  在指定索引插入字符串

  append (String str )

  在末尾添加字符串

  delete ( int start , int end )

  删除指定区间的字符,end位保留    

  deleteCharAt ( int index )

  指定位置删除字符

  replace (int start, int end, String str)    

  修改指定区间字符为str

  setCharAt (int index, char ch )

  修改指定位置字符

  reverse ( )

  反转整条字符串

  charAt ( int index )

  指定位置获取字符

  indexOf ( String str )

  查询str首次出现的位置

  lastIndexOf ( String str )

  str最后出现位置

  substring ( int start, int end )

  截取区间为新的字符串

  length ( )

  字符串长度

class StrBufTest
{
       public static void main(String[] args)
       {
              StringBuffer sb1=new StringBuffer("StringBuffer1");
              StringBuffer sb2=new StringBuffer("StringBuffer2");
              System.out.println("sb1="+sb1+"\nsb2="+sb2);
 
              sb1.insert(6," Hello ");
              sb1.append("world");
              System.out.println("sb1="+sb1);
 
              sb2.delete(6,8);
              sb2.deleteCharAt(0);
              System.out.println("sb2="+sb2);
 
              sb1.replace(0,6, "It's a");
              sb1.setCharAt(14,'b');
              System.out.println("sb1="+sb1);
       }
}   

       JDK1.5中提供了一个新的动态字符串类StringBuilder,与 StringBuffer 兼容,但不保证同步。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值