String StringBuffer StringBuilder 类的区别 和 常用方法

String          字符不可以改变 她的内部 final 修饰类,不可以被继承  
   private final char value[];  值用数组接受, 并用 final修饰
                 char[] v;  this.value = v;  的到的值是传入的大小 
  值一单确定不可以改变

StringBuffer和StringBuilder都是 AbstractStringBuilder 子类

StringBuffer    它的方法由synchronized修饰,线程安全 效率较低 字符可以改变  synchronized

StringBuilder   线程不安全 效率较高 字符可以改变

 
AbstractStringBuilder   字符可以改变
   char value[]; 用数组接受 没有被final修饰 里面的数值可以改变

1
2
3
4
public StringBuffer(String str) {
                       super (str.length() + 16 );
                 append(str);
                  }
当StringBuffer 传入值, 如“abc” 3个值  他的数值长度初始话就是 3+16=19
1
2
3
4
5
6
7
8
9
10
11
public AbstractStringBuilder append(String str) {
     if (str == null ) str = "null" ;
          int len = str.length();
      if (len == 0 ) return this ;
     int newCount = count + len;
     if (newCount > value.length)
        expandCapacity(newCount);
     str.getChars( 0 , len, value, count);
     count = newCount;
     return this ;
     }
1
传入一个新的值, 原来的数组太小, 就扩容
String 常用方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
String a= new String( "abc" );
 
System.out.println(a.length()); //输出数组的长度 = 3
     System.out.println(a.charAt( 1 )); //返回指定索引处的 char 值 b
     System.out.println(a.indexOf( "b" )); //从前往后找,b在的位置 1
     System.out.println(a.lastIndexOf( "c" )); //从后往前找,c在的位置,2 返回指定子字符串在此字符串中最右边出现处的索引。
     System.out.println(a.contains( "a" )); //查询数组有没有 a 有 a就返回true
     System.out.println(a.startsWith( "a" )); //查询是不是a开头, 如果是就返回true
     System.out.println(a.endsWith( "c" )); //查询是不是以c结尾   如果是就返回true, 如果不是就返回false
     System.out.println(a.toLowerCase()); //把所有数组的字符串都转为小写  ,使用默认语言环境的规则将此 String 中的所有字符都转换为小写。
     System.out.println(a.toUpperCase()); //把所有数组的字符串都转为大写 
     System.out.println(a.substring( 1 )); //截取字符串 起b开始截取b以后的全部字符串
     System.out.println(a.substring( 0 , 2 )); //截取字符串 起a开始到c结束, 但是不包括c    包头不包尾
     System.out.println(a.replace( "a" , "z" )); //替换, 将 a 替换成 A 也可以换成  其它的   比如  z
     }
1
2
3
4
5
6
String a1= new String( "小高;小立,小明 " );
  String[] a2= a1.split( ";|,| " );  //分离   分离以后变成数组
  for (String string : a2) {
   System.out.println(string);
  }
  }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<p>
     StringBuilder s= new StringBuilder( "abcde" );
  s.append( "fjql" );  // 存值
  s.reverse() ; //让字符全部反过来, 比如   abc   反  cba
</p>
 
<p>
      
  
  System.out.println(s);
  System.out.println(s.length());
  System.out.println(s.indexOf(a));
  System.out.println(s.toString().contains(a)); //如果StringBuilder里面没有想要的方法就吧他转成String  加 toString就可以
</p>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值