JAVA基础Javajava干货

Java知识之字符串

2016-08-04  本文已影响73人  StrongZhao

Java字符串知识框架图

Paste_Image.png

Java字符串

** 1. 不可变字符串(String) **
** 2. 可变字符串(StringBuffer,StringBuilder) **

不可变字符串(String)

String是一个不可变的字符序列,那么为什么String类是不可变的呢?因为创建一个String对象,本质就是一个字符的数组,并且String类内的属性,除了hash属性外,其他的属性都被定义成私有的(private)且是最终的(final)属性。

String类的场景:在字符串不经常变化的场景中可以使用String类,例如常量的声明、少量的变量运算。

    1. 创建String对象
      创建一个String对象我们有两种形式,一种是引用静态区中的字符串的字面量,另外一种是引用堆上的字符串对象。
      ex:
  public static void main(String[] args){
      String str = "赵贺强";
      String str1 = new String("zhaoheqiang");
  }
  public static void main(String[] args){
          String str = "zhaoheqiang";
          //获取字符串的长度
          System.out.println(str.length());
          //获取字符
          System.out.println(str.charAt(5));
          //大小写
          System.out.println(str.toUpperCase()+":"+str.toLowerCase());
          //拼接字符串
          System.out.println(str+"赵贺强"+";"+str.concat("Derry"));
          //比较字符串是否相等
          System.out.println(str.equals("zhaoheqiang")+str.compareTo("赵贺强"));
          //判断开头,或者结尾是否包含某个字符或者字符串
          System.out.println(str.startsWith("zhao"));
          System.out.println(str.endsWith("qiang"));
          //模式匹配,字符串第一次或者最后一次出现字符或者字符串的下标位置
          System.out.println(str.indexOf("a")+":"+str.lastIndexOf("a"));
          //是否包含某个字符或者字符串
          System.out.println(str.contains("he"));
          //获取子串
          System.out.println(str.substring(0,5)+":"+str.substring(5));
          //删除字符串左右空白符
          System.out.println(str.trim());
          /*替换replace/replaceAll
            replaceAll参数regex是一个 regular-expression的匹配模式而不是一个简单的String;
          */
          System.out.println(str.replace("a","b")+str.replaceAll("a","b"));
          /*
            以某种匹配模式去分割字符串, 参数regex是一个正则的匹配模式而不是一个简单的String,
            对于分割的字符(串),通常是常见,普通的,没什么问题;但是对某些特殊字符,
            如果字符(串)正好是正则的一部分,则需要转义才能使用,这些字符有** | , + , * , ^ ,
            $ , / , | , [ , ] , ( , ) , - , . , \**等, 因它们是正则表达式中的一部分, 
            所以如果想用该字符本身, 这些字符需要进行转义(\\)才能表示它本身。
          */
          String str="abc|XYZ";  
          String[] b = str.split("\\|");
          System.out.println(str.split("a"));
          System.out.println(Arrays.toString(b));
          //判断字符串是否为空
          System.out.println(str.isEmpty());
  }

可变的字符串

  1. StringBuffer
    StringBuffer类是线程安全的。StringBuffer类的场景:在频繁进行字符串运算(如拼接、替换、删除等),并且运行在多线程环境中,则可以考虑使用StringBuffer,例如XML解析、HTTP参数解析和封装。

http://blog.csdn.net/kingzone_2008/article/details/9220691
http://www.zhihu.com/question/20101840

上一篇下一篇

猜你喜欢

热点阅读