String类,StringBuilder,StringBuffer

1.String类是不可变字符序列,因为用final修饰

2.String位于java.lang包中,Java程序默认导入java.lang包下的所有类

3.Java字符串就是Unicode 字符序列

4.Java没有内置的字符串类型,而是在标准Java类库中提供了一个预定义的类String,每个用双引号括起来的字符串都是String类的一个实例

public class Wang {
   public static void main(String[] args){
       String str="abc";
       String str1=new String("abc");
       String str2="abcd"+"ef";
       String str3="abc";
       System.out.println(str==str3);//判断是否为同一个对象
       System.out.println(str==str1);
       System.out.println(str.equals(str1));//判断字符是否相等
   }
}

运行结果见下:

true
false
true 

public class Wang {
    public static void main(String[] args) {
       String str ="aabbcc";
       String str1=str.substring(2,5);
       System.out.println(str);//输出为:aabbcc; str是不可变字符序列
       System.out.println(str1);//输出为:bbc

       System.out.println("###########");

       //编译器做了优化,直接在编译的时候将字符串进行拼接;
        String str2="hello"+"java";//相当于str2="hellojava";
        String str3="hellojava";
        System.out.println(str2==str3);//true;
        String str4="hello";
        String str5="java";
        //编译的时候不知道变量中存储的是什么,所以没办法在编译的时候优化;
        String str6=str4 + str5;
        System.out.println(str3==str6);//false;
        System.out.println(str3.equals(str6));//作字符串比较时,使用equals不要使用== ;



    }
}

StringBuilder

public class Wang {
    public static void main(String[] args) {
      //StringBuilder线程不安全,效率高(一般使用它);StringBuffer线程安全,效率低
      StringBuilder sb=new StringBuilder("abcdefg");
      System.out.println(Integer.toHexString(sb.hashCode()));
      System.out.println(sb);

      sb.setCharAt(2,'M');
      System.out.println(Integer.toHexString(sb.hashCode()));
      System.out.println(sb);

    }
}

运行结果见下

1b6d3586  //地址
abcdefg
1b6d3586  //地址
abMdefg
 

StringBuilder的用法

public class Wang {
    public static void main(String[] args) {
        StringBuilder sb=new StringBuilder();
        for(int i=0;i<26;i++){
            char temp =(char)('a'+i);
            sb.append(temp);
        }
        System.out.println(sb);//abcdefghijklmnopqrstuvwxyz
        sb.reverse();//倒序;
        System.out.println(sb);
        sb.setCharAt(3,'王');
        System.out.println(sb);
        sb.insert(0,'我').insert(3,'喜').insert(6,'凡').insert(9,'你');
        System.out.println(sb);
        sb.delete(20,23);
        System.out.println(sb);

    }
}

 运行结果见下

abcdefghijklmnopqrstuvwxyz
zyxwvutsrqponmlkjihgfedcba
zyx王vutsrqponmlkjihgfedcba
我zy喜x王凡vu你tsrqponmlkjihgfedcba
我zy喜x王凡vu你tsrqponmlkgfedcba
 

循环累加字符串使用StringBuilder 

public class Wang {
    public static void main(String[] args) {
       StringBuilder sb1=new StringBuilder("");
       long num1=Runtime.getRuntime().freeMemory();
       long time1=System.currentTimeMillis();
       for(int i=0;i<5000;i++){
           sb1.append(i);
       }
       long num2=Runtime.getRuntime().freeMemory();
       long time2=System.currentTimeMillis();
       System.out.println("StringBuilder占用内存:"+(num2-num1));
       System.out.println("StringBuilder占用时间:"+(time2-time1));

    }
}

运行结果见下

StringBuilder占用内存:-1331712
StringBuilder占用时间:0 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值