(自用备份)笔记 p84 字符串的遍历和字符统计案例

字符串的遍历

第一种方式:

方法toCharArray() 将一个字符串转化为char类型的数组

例如:

String a = "test";
char[] b = a.toCharArray();

则b为一个有四个元素的数组,四个位置分别为t、e、s、t。

第二种方式:

方法charAt(int index) 返回一个字符串在index索引(范围从0到长度-1)处的字符;

该方法配合循环结构一样可以对整个字符串进行遍历,这里不做演示。

循环结构循环的次数为 字符串名.length() ,它代表这个字符串的长度

注意:这里的length()是方法,数组中用到的length是数组的属性,所以这里的length()要带上括号。

两种方式各自的好处坏处:

第一种方式运行速度快,但是循环的次数是定死的,方法的复用性不高(比他短的没法用,比他长的用不了)

(那我把他转化成数组然后用数组的方式遍历一遍不就不写死了呗)

第二种方式更加灵活和适应各种场景,但是可以看出它在循环中多次调用了charAt()方法,所以它的运行效率会慢一些。

练习案例:键盘输入一个字符串,统计该字符串中大写小写字符和数字字符的个数,不考虑其他字符

例如aA1bB2cC3dD*---///

结果为 大写字母:4个 小写字母:4个 数字字符:3个

自编的示例如下(只挪来了主方法):

    public static void main(String[] args) {
        System.out.println("请输入一串字符");
        Scanner scanner = new Scanner(System.in);
        String characterString = scanner.next();
        System.out.println("你输入的字符串为"+characterString);
        char[] arrayString = characterString.toCharArray();
        int capital = 0,lowercase = 0,digit = 0;
        //三者分别为大写字母、小写字母、数字的数量
        for (int i = 0; i < arrayString.length; i++) {
            if(arrayString[i] <= '9' && arrayString[i] >= '0'){
                digit++;
            }
            if(arrayString[i] <= 'Z' && arrayString[i] >= 'A'){
                capital++;
            }
            if(arrayString[i] <= 'z' && arrayString[i] >= 'a'){
                lowercase++;
            }
        }
        System.out.println("大写字母数量为"+capital);
        System.out.println("小写字母数量为"+lowercase);
        System.out.println("数字数量为"+digit);
    }

写完之后发现如果把三个if写成一整个if-else能节省一点运行时间(满足一个之后就不会再往下走)。

回想:这里的字符使用运算符来比较实际是用它们对应的asc||码来比较,所以判断里用到的是'0'到'9',而不是0到9,如果用到了0到9来比较就会出问题,因为asc||码里0到9对应的是一些符号。(图很糊 凑合看一下 这里不重要)

 硬要用数字的话这里应该是48到57(但是我寻思应该没多少人会把这些玩意在初学阶段背过吧)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值