目录

一、遍历字符串

二、统计各种字符的次数

三、拼接字符串

四、字符串反转


一、遍历字符串

public static void StringTest03(){
        System.out.println("请输入一个字符串:");
        String str = sc.nextLine();
        for (int i = 0; i < str.length(); i++){
            System.out.println(str.charAt(i));
        }
    }

利用for循环遍历数组

利用length()方法获取字符串的长度

利用charAt(n)方法获取指定索引 n 处的的字符

二、统计各种字符的次数

public static void StringTest04(){
        System.out.println("请输入一个字符串");
        String str = sc.nextLine();
        //定义三个统计变量
        int bigCount = 0;
        int smallCount = 0;
        int numCount = 0;
        int emCount = 0;
        //遍历字符串,统计各种字符出现的次数
        for(int i = 0; i < str.length(); i++){
            if((str.charAt(i) >= 'a') && (str.charAt(i) <= 'z')){
                smallCount++;
            }else if ((str.charAt(i) >= 'A') && (str.charAt(i) <= 'z')){
                bigCount++;
            }else if ((str.charAt(i) >= '0') && (str.charAt(i) <= '9')){
                numCount++;
            }else{
                emCount++;
            }
        }
        System.out.println("小写字符: "+smallCount+"大写字符: "+bigCount+"数字: "+numCount+"空格: "+emCount);
    }

从键盘录入字符串,设置统计变量,通过循环遍历。访问字符串中的每一个字符,判断字符属于哪种类型并完成数据统计,最后输出统计结果。

三、拼接字符串

需求:定义一个方法,把int数组中的数据按照指定得格式拼接成一个字符串返回。

public class Test {
    public static void main(String[] args) {
        //定义一个整型数组
        int [] arr = {1, 2, 3};
        String Str = arrayToString(arr);
        System.out.println("由整型数组生成的字符串为: "+ Str);
    }
    /*
    实现数组拼接成字符串的方法:
    参数: int [] arr
    返回值类型: String
     */
    public static String arrayToString(int [] arr){
        String str = new String();
        str += "[";
        for (int i = 0; i < arr.length; i++){
            if(i == arr.length - 1){
                str += arr[i];
            }else{
                str += arr[i] + ", ";
            }
        }
        str += "]";
        return str;
    }
}

思路:定义一个整型数组,用静态初始化完成数组元素的初始化,在Test类内部设置一个arrayToString的方法,参数为整型数组,返回一个字符串,在方法内通过遍历数组完成自符串的拼接,此处采用 ‘+’ 来完成拼接。

进阶版

Public class Test{

    public static void main(String [] args){
        
      //定义一个整型数组
      
        int [] array = [1, 2, 3];
        
        String s = arrayToString(array);  
        System.out.println("拼接后的字符串为: " + s);

    }
    
    public static String arrayToString(int [] arr){

        //定义一个BufferBuilder型的字符串

        StringBuilder str = new StringBuilder();

        //通过for循环遍历数组
    
        for(int i = 0; i < arr.length; i++){

            str.append(arr[i]);

        }

        //定义一个String型的变量作为返回值

        String s = str.toString();

        return s;    

    }

}

思路:利用StringBuffer类创建一个可变的字符串对象,通过该类特有的方法append()完成字符串的拼接

PS:append(任意类型) 添加数据,并返回对象本身,重点在于理解返回对象本身

例如:  

StringBuilder str1 = new StringBuilder();

StringBuilder str2 = str1.append("zbc");

System.out.println(str1 == str2);

输出的结果是true,因为通过append()方法添加数据返回的是对象本身,
所以str1与str2实际上是创建了一个对象。
PS:在java中 "==" 对引用数据比较的是数据的地址,因为引用数据在
栈内存中存储的是数据的地址,数据的值存储在堆内存中。

四、字符串反转

需求:从键盘输入一个字符串,通过一个方法完成字符串的反转

import java.util.Scanner;
public class Test {
    static Scanner sc = new Scanner(System.in);
    public static void main(String[] args) {
        //从键盘录入一个字符串
        System.out.println("请输入一个字符串");
        String str1 = sc.nextLine();
        //通过定义的方法完成字符串的反转
        String str2 = reverse(str1);
        System.out.println("反转后的字符串为: " + str2);
    }
    public static String reverse(String str){
        //定义一个空的字符串
        String str2 = "";
        //通过for循环遍历传入的字符串
        for (int i = str.length(); i > 0; i--){
            str2 += str.charAt(i - 1);
        }
        return str2;
    }
}

思路:反转字符串也是利用的字符串拼接原理,只不过是逆序遍历了字符串,用charAt()方法获取指定索引的字符。

进阶版:

public static void reverseUp() {
        //提示用户输入一个字符串
        System.out.println("请输入一个字符串: ");
        String s = sc.nextLine();
        //根据字符串s,创建一个StringBuilder类的可变字符串
        StringBuilder str = new StringBuilder(s);
        //利用reverse()方法完成反转
        str.reverse();
        /*
        System.out.println("测试: " + str); 
        其实在此时可以直接输出反转后的字符串了,但为了
        达到输出String类字符串的效果,还是创建了String
        类的字符串变量,并完成数据的转换
         */
        //将反转后的可变字符串转换成String类的字符串
        s = str.toString();
        System.out.println("反转后的字符串: " + s);
    }

思路:利用StringBuilder类的reverse()方法来完成反转

java支持链式调用,所以完成字符串反转的方法可以写为:

public static String reverseUpp(String s){

    return new StringBuilder(s).reverse().toString();

}

PS:在拼接进阶版里说明

StringBuilder to String : 利用toString()方法即可

String to StringBuilder : 利用StringBuilder的构造方法

//StringBuilder to String

StringBuilder str1 = new StringBuilder("abc");

String s = str1.toString();

//String to StringBuilder

String str2 = "zbc";

StringBuilder t = new StringBuilder(str2);