String类详解

概述:

String类是在Lang包下,Lang包属于核心包,不需要导包。

在Java中,所有的双引号内容都是String这个类的对象。

所以可以通过两种途径创建对方,双引号和new关键字。

 对象存在方式:

字符串创建之后不可改变,但可以共享相同内容(常量池)。

双引号对象在字符串常量池中,只有一个相同对象存在,可以多个变量指向相同对象。

new关键字在堆内存中创建新对象,每new一次将创建一次新对象。

字符串+操作:

变量+双引号常量对象,系统底层会调用StringBuilder方法实现,完成拼接后再转为String,拼接后的对象实际在堆内存中;

String a ="abc";
String b =new String("a");
String d =b+"bc";
System.out.println(d == a);         //结果false

字符串常量对象拼接,存在常量优化机制,仍在常量池中。

String a ="abc";
String b ="a";
String c = b+"bc";
System.out.println(d == a);         //结果true

 常用方法:

equals("比较字符串"):比较字符串的内容是否相同,布尔结果;

equalsIgnoreCase ("比较字符串"):比较字符串的内容是否相同(忽略大小写),布尔结果;

charAt(索引):根据索引获取对应位置的字符,int结果;            

toCharArray():.将字符串转成字符数组,返回字符数组;

substring(索引):截取字符串,留头不留尾,返回字符串;

replace(旧值,新值):字符串的敏感词替换,返回字符串;

split("切割内容"):切割会丢失被切割的字符信息,返回字符串数组;

indexOf(字符串):查找指定字符串在此字符串中的索引,第一次出现;

indexOf(字符串,索引):指定的索引处开始查找,,第一次出现。

注意:

字符串对象创建之后不能更改

运算后产生的新字符串必须使用变量接收后才能看到效果。

方法的实现:

遍历字符串:

 实现方法1:

        String a ="123asd";
        //使用length方法获取长度,遍历每个位置
        for (int i = 0; i < a.length(); i++) {
            //caarAt方法接收并打印。
            System.out.print(a.charAt(i)+",");
        }

 实现方法2:

        String a ="123asd";
        //转为字符数组
        char[] chars = a.toCharArray();
        //数组遍历
        for (int i = 0; i < chars.length; i++) {
            System.out.print(chars[i]+",");
        }

一般推荐使用第二种方法遍历。

比较字符串内容 :

    String a1 =new String("abc") ;                  //new关键字创建的小写字母对象
    String a2 = "Abc";                              //大写字母对象
    String a3 = "abc";                              //小写字母对象
    //内容比较结果
    System.out.println(a1.equals(a2));              //false
    System.out.println(a1.equals(a3));              //true
    //忽略大小写比较的结果
    System.out.println(a1.equalsIgnoreCase(a2));    //true
    System.out.println(a1.equalsIgnoreCase(a3));    //true

字符串中字符统计:

        String a = "12345asdAS";
        //转为字符数组
        char[] chars = a.toCharArray();
        //定义统计变量
        int  bigCount =0,smallCount =0,numCount=0;
        //数组遍历
        for (int i = 0; i < chars.length; i++) {
            char c = chars[i];
            //判断该字符的数值范围可以得到类型
            //注意数字的字符取值不是0-9
            if (c >= '0' && c <= '9') {
                numCount++;
            }else if (c >= 'a' && c <= 'z') {
                smallCount++;
            }else if (c >= 'A' && c <= 'Z') {
                bigCount++;
            }
        }
        //打印结果
        System.out.println("数字为"+numCount+"个");
        System.out.println("小写字母为"+smallCount+"个");
        System.out.println("大写字母为"+bigCount+"个");

字符串截取:

        String a = "12345asdAS";
        //截取字符串,注意索引位置留头不留尾
        String a1 = a.substring(3);
        String a2 = a.substring(0, 3);
        System.out.println(a1);     //45asdAS
        System.out.println(a2);     //123

 字符串敏感词替换 :

        String a = "12345asdAS";
        //替换字符串需要使用变量接收
        String a1 = a.replace("asd", "***");
        System.out.println(a1);     //12345***AS

  字符串切割替换 :

        String a = "1,2,3,4,5";
        //切割后的字符串为数组类型
        String[] a1 = a.split(",");
        //遍历打印
        for (int i = 0; i < a1.length; i++) {
            //我们加上*方便查看
            System.out.print(a1[i]+"*");    //1*2*3*4*5*
        }
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JIE结弦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值