String类和StringBuffer类的区别、简单易懂

public class StringBufferTest {
    public static void main(String[] args) {
        /*  以下为StringBuffer字符串缓冲池对象的一些基本知识
         *   1.由于String类的对象一经生成就无法改变,这是由于String类源代码中的byte数组是由Final修饰的,
         *   但StringBuffer内的Byte数组没有被Final修饰所以String更偏重处理字符串常量。 StringBuffer
         *   一般处理字符串变量。
         *   2.由于每次拼接需要产生新的字符串,占用方法区的字符串常量池,因此推荐使用StringBuffer来处理。
         *   3.StringBuffer()初始化容量是16,但可以对其进行优化,就是自定义一个合适的容量,减少追加时的
         *   自动扩容。这是底层调用了数组拷贝的方法。arrayCopy.
         *   4.StringBuffer与StringBuilder的区别是 Buffer是线程安全的,Builder是线程不安全的
         *
         *
         * */
        //以下为StringBuffer字符串缓冲池对象的常用方法。
        //1.append()方法  追加方法
        //StringBuffer可以将字符串变量进行多次变化,并且不用在方法去内存中占用空间。
        StringBuffer buffer = new StringBuffer(16);
        buffer.append("我是你的爱人").append("&").append(13).append(14.0D).append(true);
        //2.toString()方法
        // StringBuffer要是想输出必须通过toString方法转换成字符串,然乎才能输出
        String str1=buffer.toString();
        System.out.println(str1);
        //3.insert(插入位置,插入元素) 插入方法 与append类似 不过需要加一个位置参数
        StringBuffer buffer2=new StringBuffer("我是中国人");
        buffer2.insert(2,"一个");
        System.out.println(buffer2.toString());
        //4.delete删除某个子串 deleteCharAt删除某个字符 删除方法
        buffer2.delete(0,1);
        System.out.println(buffer2.toString());
        buffer.deleteCharAt(2);
        System.out.println(buffer.toString());
        //5.reverse()   翻转字符串 顾名思义就是把一个字符串翻转过来
        buffer2.reverse();
        System.out.println(buffer2.toString());
        //6.replace(int start,int end,String str)  字符串的替换
        buffer.replace(0,1,"我刘博展");
        System.out.println(buffer.toString());
    }
}
import com.sun.scenario.effect.impl.sw.sse.SSEBlend_SRC_OUTPeer;

public class StringTest {
    public static void main(String[] args) {
        //以下是对String常用方法的练习,共计21个常用方法
        //一、字符串的截取方法
        //1.CharAt 方法:用来截取字符串单个字符
        System.out.println("我是中国人".charAt(2));
        //2.substring方法用来截取整个子串
        System.out.println("我爱吃肉肉,你爱吃臭臭".substring(3));
        System.out.println("我爱吃肉肉,你爱吃臭臭".substring(3,7));
        //二、字符串的比较方法
        //3.equals方法
        String s1="我喜欢你";String s2="我喜欢你";
        System.out.println(s1.equals(s2));
        //4.equalsIgnoreCase()方法
        System.out.println("abCd".equalsIgnoreCase("abcd"));
        //5.compareTo()方法
        //按胜负比,一匹配成功就不比了,-1就是不匹配,0就是匹配成功,正数就是相差多少
        int temp="acd".compareTo("acdq");
        System.out.println(temp);
        int temp1="acd".compareTo("ac");
        System.out.println(temp1);
        //6.compareToIgnoreCase() 方法
        System.out.println("SAve".compareToIgnoreCase("save"));
        //三、判断是否以某个子串开头或结尾的方法
        //7.endsWith()方法 用来判断字符串是否以某个子串结尾
        System.out.println("你爱我啊我爱你".endsWith("我爱你"));
        //8.startsWith()方法 用来判断字符串是否以某个子串开头
        System.out.println("我是刘博展".startsWith("我是"));
        //四、求字符串长度的方法
        //9.length()方法 用来判断字符串的长度
        System.out.println("我是刘博展".length());
        //10.isEmpty()方法 用来判断字符串是否为空
        System.out.println("www".isEmpty());
        //五、字符串转换大小写的方法
        //11.toLowwerCase()转换为小写
        System.out.println("WWW.".toLowerCase());
        //12.toUpperCase()转换为大写
        System.out.println("qaq".toUpperCase());
        //六.清除字符串前面和后面空格的方法
        //13.trim().
        System.out.println("    我是你大哥    ".trim());
        //七.将字符串变为数组的方法
        //14.toCharArray()
        char []ch="我是java工程师".toCharArray();
        for(int i=0;i<ch.length;i++){
            System.out.print(ch[i]+" ");
        }
        //15.getBytes()将字符串变为字节数组
        byte []byte1="abcde".getBytes();
        for(int i=0;i<byte1.length;i++){
            System.out.print(byte1[i]+" ");
        }
        //八.将字符数组复制到字符串的方法
        //16.copyValueOf(char []data)
        String s3=new String(),s4=new String();
        s3=s3.copyValueOf(ch);
        System.out.println(s3);
        s4=s4.copyValueOf(ch,1,3);
        System.out.println(s4);
        //九.字符串的连接
        //17.concat()  这点其实很容易迷惑,不是String对象不能改变么?其实底层调用了StringBuffer的append方法
        System.out.println("我爱".concat("你"));
        //十.字符串的检索,用来检索子串或字符的第一次或最后一次出现位置
        //18.indexOf()从前往后、lastIndexOf()从后往前
        String ss="我的棉花糖真好吃呀棉!";
        System.out.print(ss.indexOf("棉花")+" ");
        System.out.print(ss.indexOf('真')+" ");
        System.out.print(ss.lastIndexOf("棉")+" ");
        //十一.字符串的拆分
        //19.String [] split("以什么符号拆分")方法  将字符串以什么符号拆分为字符串数组
        String date="1988%02%01";
        String []dates=date.split("%");
        for(int i=0;i<dates.length;i++){
            System.out.print(dates[i]+" ");
        }
        //十二、字符串的替换
        //20.原字符串.replace(原字符串子串,改变后的子串)方法
        String s5="http://baidu.com".replace("http://","aaa");
        System.out.println(s5);
        //十三.将其他所有数据类型都转为字符串
        //21.valueOf()方法  静态方法可直接用类名调
        System.out.println(String.valueOf(100));
        System.out.println(String.valueOf(200D));
        System.out.println(String.valueOf(100<101));
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值