字符串的遍历
第一种方式:
方法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(但是我寻思应该没多少人会把这些玩意在初学阶段背过吧)