编写高质量代码:改善Java的151个建议六(字符串)52-59

该书籍PDF下载地址:http://download.csdn.net/download/muyeju/10001473

52.推荐使用String直接赋值

  通过String直接创建字符串的过程:创建一个字符串时,首先检查字符串常量池中有没有与字面值相等的字符串,如果有,就不创建,直接返回字符串常量池中该对象的引用;如果没有,就创建,然后放到字符串常量池中,然后返回新建对象的引用。

  通过new创建字符串的过程:它不会检查字符串常量池的

  所以字符串推荐使用直接赋值

  字符串的intern()方法:返回字符串对象的规范化表示形式。调用intern()方法时,首先会查找字符串常量池中是否有该字面值,有的会直接返回该引用,没有的话就创建一个放到字符串常量池中,然后返回引用。

53.字符串的replaceAll方法第一个参数是正则表达式

54.正确使用String,StringBuffer,StringBuilder

  String是不可变量,创建后就不能修改,修改其实是创建了新的字符串对象

  StringBUffer是可变字符序列,与String一样,在类型中保存的都是一个有序的字符序列(char类型的数组),不同的是StringBuffer的值是可以变的

  StringBuffer的append和String的+号拼接的区别:

    StringBuffer拼接后,它的引用不变,值变了

    String通过+号拼接后:它指向了新的引用

  StringBuilder和StringBuffer一样,都是可变字符序列,不同的是,StringBuffer是线程安全的,StringBuilder是线程不安全的,StringBuffer前面有synchronized修饰,所以StringBuffer的性能低于StringBuilder

  

  使用场景:

  

 55.注意字符串的位置:

  Java对+号的处理机制:在使用+进行计算的表达式中,只要遇到String类型的字符串,所有数据都会转化为String类进行拼接,如果是原始类型就直接拼接,如果是对象,就调用对象的toString()方法的返回值后在拼接

  在有+号的表达式中,String字符串具有最高优先级

56.自由选择字符串拼接方法

  + < concat < StringBuilder、StringBuffer的append

57.复杂字符串中使用正则表达式

58.统一使用utf-8编码

59.汉字排序

  普通的汉字排序用Collator,复杂的自己写方法

public static void main(String[] args) {
        String[] s = {"手机费","捡垃圾","肯德基"} ;
        Comparator com = Collator.getInstance(Locale.CHINA) ;
        Arrays.sort(s,com);
        for (String string : s) {
            System.out.println("---"+string);
        }
                结果:---捡垃圾
                         ---肯德基
                         ---手机费

    }
原文地址:https://www.cnblogs.com/-scl/p/7650801.html