zoukankan      html  css  js  c++  java
  • Java解惑(2)——字符之谜

    在处理字符或字符串时,要牢记下面的几点

    (1)若想将一个char数组转换成一个字符串,就要调用String.valueOf(char[])方法

        比如char[] numbers={'1','2','3'};

        如果直接使用System.out.println("numbers:"+numbers);将得不到我们想要的结果。

        解决方法:System.out.println("numbers:"+String.valueOf(numbers));

        或者:System.out.print("numbers:");

                  System.out.println(numbers);

    (2)在比较两个字符串时,应该优先使用equals方法而不是==操作符,除非需要比较的是对象的标识而不是对象的值。

        如果两个final String都是用相同的常量表达式来初始化的,那么它们的==运算结果为true

        例如:final String a="ha10";final String b="ha10";  System.out.println(a==b);结果为true

           而:final String a="ha10";final String b="ha"+a.substring(2);System.out.println(a==b);结果为false,因为b不是用常量表达式来初始化的。

    (3)除非万不得已,否则不要使用Unicode转义字符,注释中也不要用。即注释中也不要含有\u

    (4)在将一个byte序列转换成一个String时,总是会使用一个字符集,不管是否显式地指定了它。系统默认的String(byte[])使用了缺省字符集,可能导致未知结果。

        通常我们需要显式指定字符集,例如:

                byte bytes[]={'0','1','2'};

                String str=new String(bytes,"ISO-8859-1");

    (5)慎用点号.

        String str="com.jp.chapter1.AboutExpressions";
        System.out.println(str.replaceAll(".", "@"));这段代码的本意是用@替换字符串中所有的“.”,结果却输出@@@@@@@@@@@@@@@@@@@,因为正则表“.”可以匹配任何单个字符。

        解决方法1:使用转义字符System.out.println(str.replaceAll("\\.", "@"));因为反斜杠\本身必须要用两个反斜杠来转义,所以用了2个\\

        解决方法2:使用静态方法java.util.regex.Pattern.quote:System.out.println(str.replaceAll(Pattern.quote("."), "@"));

    (6)关于StringBuffer

        它有3个构造函数,无参的、String作为参数的、int作为参数的。

        如果使用StringBuffer sb=new StringBuffer('M');相当于使用了int参数的构造函数,将得到一个具有初始容量77(M的ascii值)的空字符串缓冲区。

  • 相关阅读:
    oracle 怎样查询某用户下的所有表的表名
    Oracle db_name, db_unique_name, global_name 的区别
    Oracle 修改 GLOBAL_NAME 和 SERVICE_NAME
    Oracle中DB_NAME,SID,DB_DOMAIN,SERVICE_NAME等之间的区别
    spoon(kettle)基本配置(连接Mysql和Oracle)
    ESLint学习(四)如何在提交时检查代码
    ESLint学习(三)webpack中使用ESLint
    ESLint学习(二).eslintignore文件
    ESLint学习(一)简介、安装、配置、命令行、规则
    host学习(一)如何修改host?提示无法修改host怎么办?
  • 原文地址:https://www.cnblogs.com/alexrain/p/1990590.html
Copyright © 2011-2022 走看看