可变字符串: StringBuffer

不可变字符串:String

 

StringBuffer类:

public class StringBufferTest {

    public static void main(String[] args) {
        //1.创建可变字符串
        StringBuffer strBuffer = new StringBuffer();
        System.out.println(strBuffer);
        //2.拼接字符串
        strBuffer.append("少年啊!");
        System.out.println(strBuffer);
        strBuffer.append("你好帅啊!");
        //3.按照下标插入字符串
        strBuffer.insert(0, "啊哈!");
        System.out.println(strBuffer);
        //4.替换字符串
        strBuffer.replace(9, 10, "傻乎乎");
        System.out.println(strBuffer);
        //5.删除字符串
        strBuffer.delete(9, 12);
        System.out.println(strBuffer);
        //6.字符串反转
        strBuffer.reverse();
        System.out.println(strBuffer);
        /*
         * 面试题:String和StringBuffer的区别?
         * String:不可变字符串,对其做的任何替换,查找,修改等操作都是
         * 拷贝了原字符串,对拷贝的副本进行操作并返回!
         * StringBuffer:可变字符串,对其做的增删改查操作都是直接修改
         * 了原字符串!当然也可以接受返回值,是修改后的结果!
         */
        String s3 = "hahaha";
        String s4 = s3.toUpperCase();
        System.out.println(s3);
        System.out.println(s4);

        //所以! 可变字符串---->不可变字符换
        //方式1
        String s1 = new String(strBuffer);
        System.out.println(s1);
        //方式2
        String s2 = strBuffer.toString();
        System.out.println(s2);

    }
}

 

String 类:

public class text {

    public static void main(String[] args) {
        //String  是系统类!所以建文件名字需要注意!

        //1.字符创的创建
        //方式1:直接赋值
        String str1 = "hello world";
        //方式2:通过字符数组创建字符串
        char[] data = {'y', 'o', 'u'};
        String str2 = new String(data);
        System.out.println(str2);
        //方式3:通过字符数组的某一部分创建字符串
        char[] charArray = {'l', 'o', 'v', 'e'};
        String str3 = new String(charArray, 2, 1);
        //参数2:是从哪个字符开始    参数3:是截取几个(长度)
        System.out.println(str3);
        //方式4:通过字符创建另一个字符串
        String str4 = new String(str1);//注意经常用于可变转不可变字符串
        System.out.println(str4);

        //2.字符串比较
        //方式1: ==  比较的是字符串的地址
        String str5 = "haha"; //常量区
        String str6 = new String("haha");// 堆区
        System.out.println(str5 == str6); //false
        String str7 = "haha";
        System.out.println(str5 == str7); //true
        //方式2: equals 只比较值
        System.out.println(str5.equals(str6));// true
        System.out.println(str5.equals(str7));// true
        //方式3:equalsIgnoreCase 忽略大小写
        str6 = "HaHa";
        System.out.println(str5.equalsIgnoreCase(str6));

        //3.判断字符串的前缀和后缀
        //endWith: 判断字符串以..结尾
        String str8 = "变形金刚.avi";
        System.out.println(str8.endsWith("vi"));
        //startWith: 判断字符串以..开头
        String str9 = "前车之鉴,后车之师";
        System.out.println(str9.startsWith("前车"));

        //compareTo: 字符串比较,是逐个字符进行比较,返回值是ASCII值
        str8 = "ABC";
        str9 = "ABc";
        System.out.println(str8.compareTo(str9));
        //compareToIgnoreCase 忽略大小写
        System.out.println(str8.compareToIgnoreCase(str9));

        //4.字符串的长度  length
        String str10 = "you are beautiful";
        System.out.println(str10.length());
        str10 = "好好学习哇!";
        System.out.println(str10.length());

        //5.判断字符串是否为空
        String str11 = null;
        String str12 = "";
        //禁止 null调用任何对象的方法
        if(str11 != null && str11.length() != 0) {
            System.out.println(str11 + "不是空字符串");
        }else {
            System.out.println(str11 + "是空字符串");
        }
        //isEmpty()  判断是否为空 如果为空则为true
        System.out.println(str12.isEmpty());//true
        //另一种方式 判断空串
        if(str12 != null && !str12.isEmpty()) {
            System.out.println("不是空字符串");
        }else {
            System.out.println("是空字符串");
        }

        //6.字符串转换
        String str13 = "lucky dog";
        //大写toUpperCase()
        System.out.println(str13.toUpperCase());
        System.out.println(str13);//原字符串没有变换
        //小写 toLowerCase()
        str13 = "Lucky Dog";
        String lowerStr = str13.toLowerCase();
        System.out.println(lowerStr);
        System.out.println(str13);
        //字符串转数组
        char[] charArr = str13.toCharArray();
        for(int i = 0; i < charArr.length; i++) {
            System.out.println(charArr[i]);
        }
        //转其他类型
        int a = 5566;
        //方式1:拼接空字符串
        String s1 = a + "";
        System.out.println(s1);
        //方式2: String.valueOf(数据)
        String s2 = String.valueOf(a);
        //valueOf(此处基本数据类型皆可转换)
        //字符串转其他类型
        String s3 = "2020520";
        //方式1:其他数据类型.valueOf(字符串) 即可转换
        int b = Integer.valueOf(s3);
        double c = Double.valueOf(s3);
        float d = Float.valueOf(s3);
        //方式2: 其他类型.parse其他类型(字符串)
        long e = Long.parseLong(s3);
        String s4 = "true";
        boolean f = Boolean.parseBoolean(s4);
        /*int float long 等属于基本数据类型(参照C语言)
         * Integer Double Float Boolean 它们是Java中的包装类型!
         * 是为了封装一些方法而定义的类!
         */

        //7.字符串拼接
        String s5 = "you see see you! ";
        String s6 = "one day day!";
        //方式1: +
        System.out.println(s5 + s6);
        //方式2: concat
        String s7 = s5.concat(s6);
        System.out.println(s7);

        //8.字符串查找
        String s8 = "大学生活好啊!好吗?你说好就好!";
        //方式1:indexOf()正向查找,返回第一次出现的位置,找不到就返回-1
        System.out.println(s8.indexOf("好呀"));
        System.out.println(s8.lastIndexOf("好"));//最后一次出现的位置
        System.out.println(s8.indexOf("好", 5));
        //方式2:contains 是否包含  boolean类型返回值
        System.out.println(s8.contains("生活好"));

        //9.获取字符串的一部分
        String str = "矮是什么感觉?就是所有人看见我都抬不起头";
        //方式1: charAt() 通过下标  获取某个字符
        System.out.println(str.charAt(2));
        //方式2: substring()
        System.out.println(str.substring(7));
        System.out.println(str.substring(10, 15));

        //10.替换字符串
        String s9 = "瘦,走路是什么感觉?应该就是走路都得扶着电线杆";
        //方式1:replace() 就是把字符串中所有匹配到的字符串进行替换
        System.out.println(s9.replace("走路", "刮风"));
        //方式2:replaceFirst() 只替换第一个
        System.out.println(s9.replaceFirst("走路", "放屁"));

        //11.分割字符串  就是按照某一个字符 将字符串切成数组
        // \\转义字符
        String s10 = "www|cctv|com";
        String[] strArray = s10.split("\\|");
        for(int i = 0; i < strArray.length; i++) {
            System.out.println(strArray[i]);
        }
        s10 = "www.cctv|com";
        //  split(" | ")  单竖杠 是或者! 所以才需要添加\\转义
        strArray = s10.split("\\.|\\|");
        for(int i = 0; i < strArray.length; i++) {
            System.out.println(strArray[i]);
        }

        //12. 去除收尾空格 trim
        String s11 = " 哈哈";
        System.out.println(s11);
        System.out.println(s11.trim());

        //练习: "财色兼收"  截个'财'  截个'色'
        String s12 = "财色兼收";
        System.out.println(s12.charAt(0) + " " + s12.charAt(1));
        System.out.println(s12.substring(0,1) + " " + s12.substring(1, 2));

        //练习:定义一段英文字符串, 使用以上所学将这
        //一段英文改为每个单词首字母大写
        String s = "you see see you! one day day";
        String[] sArray = s.split(" ");
        String newStr = "";
        for(int i = 0; i < sArray.length; i++) {
            String firstChar = String.valueOf(sArray[i].charAt(0));
//			System.out.println(firstChar);
            String upperStr = firstChar.toUpperCase();
            System.out.println(upperStr);
            //替换
            String firstUppercase = sArray[i].replace(firstChar, upperStr);
            newStr = newStr + firstUppercase + " ";
        }
        System.out.println(newStr);


    }

}