String学习

1.字符串的内存知识

  •  字符串中的变量存的是内存地址

  2.字符串的一些常用操作


1.字符串的常用方法

public class Base1 {
    public static void main(String[] args) {
        String str = " asda ds ";
        //(1).length方法:获得字符串的长度,数组没有length方法
        System.out.println(str.length());//9
        System.out.println("===========");

        //(2).charAt方法:返回指定下角标(索引)处的字符值
        System.out.println(str.charAt(2));//s
        System.out.println("===========");

        //(3).indexOf方法:返回指定字符或字符串第一次出现的位置(如果找不到位置,则返回-1)
        System.out.println(str.indexOf("d"));//3
        System.out.println("===========");

        //(4).substring方法:截位(根据光标的位置,截取原有字符串,并生成新的字符串)
        String s = str.substring(2);//从第几个下标开始截取字符串
        System.out.println(str);// asda ds
        System.out.println("截取后的字符串");
        System.out.println(s);//sda ds
        System.out.println("===========");

        //(5).replace方法:将原有字符串中的指定字符或者字符串替换,并生成新的字符串
        String s2 = str.replace("as", "a");
        System.out.println("s2:"+s2);
        System.out.println("===========");

        //(6).trim方法:去除字符串前后空格
        String s3 = str.trim();
        System.out.println("s3:"+s3);
        System.out.println("===========");

        //(7).split方法:根据指定字符串或正则表达式将原有字符串分割,返回数组
        System.out.println(str);// asda ds
        String[] split = str.split("a");
        for (int i = 0; i < split.length; i++) {
            System.out.println(split[i]);
        }
        /*
        sd
         ds
        * */
        System.out.println("===========");

        //(8).startsWith方法:判断指定参数是否为原字符串前缀 .endsWith方法:判断指定参数是否为原字符串后缀
        System.out.println(str);// asda ds
        System.out.println(str.startsWith("Asd"));//false
        System.out.println(str.endsWith("ds "));//true
        System.out.println("===========");

        //(9).valueOf方法:将整数转换成字符串
        int a=7555;
        String s1 = String.valueOf(a);
        System.out.println(s1);//7555
    }
}

2.比较字符串(忽略大小写)

public class Base2 {
    public static void main(String[] args) {
        String s1 = new String("abc");
        String s2 = "Abc";
        System.out.println(s1.equals(s2));//false
        System.out.println(s1.equalsIgnoreCase(s2));//true
    }
}

3.拿到字符串中的所有元素

public class Base3 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String s = input.next();
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            System.out.print(c +" ");
        }
    }
}

4.统计字符串

public class Base4 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String str = input.next();
        int bigCount=0;
        int smallCount=0;
        int numberCount=0;
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (c>='a'&&c<='z'){
                smallCount++;
            }else if (c>='A'&& c<='Z'){
                bigCount++;
            }else if (c>='0'&&c<='9'){
                numberCount++;
            }
        }
        System.out.println("小写字母有:"+smallCount+"个");
        System.out.println("大写字母有:"+bigCount+"个");
        System.out.println("数字有:"+numberCount+"个");
    }
}

5.字符数组和字节数组

public class Base5 {
    public static void main(String []args){
        //传递一个字符数组,根据字符数组的内容再创建一个新的字符串对象
        char[] chs = {'a','b','c','d'};
        String s1 = new String(chs);
        System.out.println(s1);//abcd

        //传递一个字节数组,根据字节数组的内容再创建一个新的字符串都对象
        //应用场景:以后网络中传输的数据其实都是字节信息
        byte[] bytes = {97,98,99,100};
        String s2 = new String(bytes);//根据ascii码转换得abcd
        System.out.println(s2);//abcd
    }
}

3.StringBuilder

 作用:相当于创建的一个Sting池,可以用于拼接字符串,减少字符串在拼接时使用的内存

常用方法

public class StringBuilder_demo {
    public static void main(String[] args) {
        //1.创建对象
        StringBuilder sb = new StringBuilder("abc");

        //添加元素
        sb.append(1);
        sb.append(2.3);
        sb.append(true);
        System.out.println(sb);//abc12.3true

        //反转
        sb.reverse();//eurt3.21cba

        //获取长度
        int len  =sb.length();
        System.out.println(len);//11
        //打印
        //普及
        //因为StringBuilder是Java已经写好的类
        //java 在底层对他做了一些特殊处理
        //打印对象不是地址值而是属性值
        System.out.println(sb);

        //3.把StringBuilder变回字符串
        String str = sb.toString();
        System.out.println(str);
    }
}

StringJoiner

  • StringJoinre跟StringBuilder一样,也可以看成是一个容器,创建之后里面的内容是可变的

  • 作用:提高字符串的操作效率,代码编写简洁

 

public class StringJoinerDemo1 {
    public static void main(String[] args) {
        StringJoiner sj = new StringJoiner("---");
​
        sj.add("aaa").add("bbb").add("ccc");
​
        System.out.println(sj);//aaa---bbb---ccc
    }
}
​
public class StringJoinerDemo2 {
    public static void main(String[] args) {
        StringJoiner sj = new StringJoiner(",","[","]");
​
        sj.add("aaa").add("bbb").add("ccc");
​
        int len = sj.length();//13
        System.out.println(len);//[aaa,bbb,ccc]
​
        System.out.println(sj);//aaa---bbb---ccc
​
        String str = sj.toString();
        System.out.println(str);//[aaa,bbb,ccc]
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值