Java String中若干问题

关于String的若干问题:

  • String中的“==”与equals() 方法:
    (1)对于String对象使用“==”判定时,其实是判定两个String对象是否为同一String对象的引用(内存地址是否相同);
    (2)equals()用于判定两个String对象的内容是否一致;
public class TestEquals {
    static String str1=new String("abcde");
    static String str2=new String("abcde");
    static String str3="abcde";
    static String str4="abcde";
    public static void main(String[] args) {
        System.out.print("str1==str2 ? ");
        System.out.println(str1==str2);
        System.out.println("str1.equals(str2) ? "+str1.equals(str2));   
        System.out.println("str1.equals(str3) ? "+str1.equals(str3));   
        System.out.print("str1==str3 ? ");
        System.out.println(str1==str3);
        System.out.print("str3==str4 ? ");
        System.out.println(str3==str4);
    }
}

输出结果://str1==str2 ? false
//str1.equals(str2) ? true
//str1.equals(str3) ? true
//str1==str3 ? false
//str3==str4 ? true

  • String与char[]比较:
    (1)String 对象是不可变的,JDK中对于String对象内容修改的方法实质上是重新创建了一个全新的String对象,原始的String一旦创建直到GCC将其收回才会消失。
    (2)保存在char[]中的值是可以随时修改的,每次修改完之后之前的值将消失;
    因此,相对来说char[]比String保密性更好。

  • 取出String中的内容:

String str1=new String("abcde");
String str2=new String("234");
String str3=new String("2.0f");
char[] strChar=str1.toCharArray();
Int strInt=Integer.parseInt(str2);
Float strFloat=Float.parseFloat(str3);
  • 字符串拆分:
String str4=new String("a,b,c,d;e");
String[] strTemp=str4.split(",");
for(String ss:strTemp)
    System.out.print(ss+",");
  • String vs StringBuilder vs StringBuffer :
    (1) 上面已经提及,String是不可变的,而StringBuilder对象值是可变的,StringBuilder提供的insert(), replace(), subString(), append() 等用于操纵字符串内容;
    (2) 相比StringBuffer,StringBuilder是java SE5引入的,在此之前,一般使用StringBuffer;相比StringBuilder,StringBuffer是线程安全的,因此开销会大,更慢。

  • Apache Commons Lang包中的StringUtils:
    (1) repeat()实现字符串重复构造;
    (2) countMatches() 可以统计子串出现次数;

    int n = StringUtils.countMatches("11112222", "1");
    System.out.println(n);
    String strRep=StringUtils.repeat("String ,", 6);        
    System.out.println(strRep);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值