Java中编写stringbuffer类型,计算字符串中大小写字母的个数

遇到的问题:运行结果是字符串中的大小写而不是个数
不会把string转换成stringbuffer


package com.ma.testproject.swing;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @Auther RenHuiMa
 * @Date 2022-06-08 8:47
 **/
public class CountWords {


    public static void main(String[] args) {
        InputStreamReader isr=new InputStreamReader(System.in);
        BufferedReader br=new BufferedReader(isr);
        System.out.println("请输入字符串:");
        String str="";
        try {
            str = br.readLine();
            br.close();
        } catch (IOException e) {

            e.printStackTrace();
        }
        Pattern p = Pattern.compile("[a-z]*");//小写字母
        Matcher m = p.matcher(str);
        StringBuffer lowercase = new StringBuffer();
        while(m.find()){
            lowercase.append(m.group(0));
        }

        p = Pattern.compile("[A-Z]*");//大写字母
        m = p.matcher(str);
        StringBuffer uppercase = new StringBuffer();
        while(m.find()){
            uppercase.append(m.group(0));
        }

        p = Pattern.compile("[^a-zA-Z]*");//非英文字母
        m = p.matcher(str);
        StringBuffer others = new StringBuffer();
        while(m.find()){
            others.append(m.group(0));
        }
        System.out.println("小写字母:"+lowercase.length()+"个");
        System.out.println("大写字母:"+uppercase.length()+"个");
        System.out.println("非英文字母:"+others.length()+"个");


    }

}