Java面向对象---API,Scanner,String,StringBuilder类

今日内容

  • 1.如果使用API文档

  • 2.String类

  • 3.StringBuilder类

一、如何使用API

    1)找到你想学习的类
        如:Random,Scanner
    2)在API文档中搜索
        步骤:显示-->索引-->搜索框中输入你要搜索的类名-->回车

    3)看包名
        a:如果在java.lang包中,不需要导包
        b:其他的包,都需要导包

    4)看类的解释
        API中的一些解释,是根据英文翻译过来的,有可能看不懂(你就试)

    5)看构造方法
        构造方法主要是给我们new 对象用的,需要看参数类型和参数个数

    6)看方法摘要
        new 完对象,你就可以调用方法
        调用方法的时候,【一定要看】
            a:方法的参数是什么类型,有几个参数
            b:方法的返回值是什么类型

二、String的API讲解

1)构造方法
    看到构造方法,你就去new 创建对象用的
    String(String original)
        根据已有的字符串去创建一个字符串对象
    String(char[] value) 
        根据已有的char[] 去创建一个字符串对象
    String(char[] value, int begin, int count) 
        根据已有的char[],创建一个字符串对象,从offset开始,取count个
    String(byte[] bytes) 
        根据已有的byte[],创建一个字符串对象。
        其他是根据ASCII值,生成对应的字符,组成字符串
    String(byte[] bytes, int begin, int count)
        根据已有的byte[],创建一个字符串对象。从offset索引开始,取length个
        其他是根据ASCII值,生成对应的字符,组成字符串

2)字符串两个方式的区别
    String s1=new String("Hello");  //在堆内存
    String s2="Hello";      //在方法区中

3)String的常用方法
  • a:判断功能

        boolean equals(Object o)
            比较两个字符串是否相等
        boolean equalsIgnoreCase(String s)
            比较两个字符串是否相等,忽略大小写
        boolean startsWith(String s)
            判断字符串以什么开头
        boolean endsWith(String s)
            判断字符串以什么结尾
        boolean contains(String s)
            判断字符串是否包含一个指定的子串
    
        练习:键盘录入一个用户名和密码,判断用户名和密码是否正确(默认密码就是"admin")
              如果正确,打印输出登录成功
              如果不正确,打印输出登录失败
    
            public class StringTest1{
                public static void main(String[] args){
                    Scanner sc=new Scanner(System.in);
                    //模拟3次登录,循环3次即可
                    for(int i=0;i<3;i++){
                        System.out.println("请输入用户名:");
                        String username=sc.nextLine();
                        System.out.println("请输入密码:");
                        String password=sc.nextLine();
                        //判断用户名和密码是否正确
                        if(username.equals("admin")&&password.equals("admin")){
                            System.out.println("登录成功");
                            break;
                        }else{
                            if(2-i==0){
                                System.out.println("登录失败,你的账号已被锁定,请联系管理员");
                            }else{
                                System.out.println("登录失败,还剩"+(2-i)+"次机会");
                            }
                        }
                    }
                }
            }
    
  • b:获取功能

        int length()
            获取字符串的长度
        char chartAt(int index)
            获取指定索引位置的字符
        int indexOf(String str)
            获取指定子串在字符串中的第一次出现索引
        int indexOf(String str, int fromIndex) 
            获取指定子串在字符串中第一次出现的索引,从指定的位置开始
    
        String substring(int start)
            截取字符串的一部分,从start位置开始
        String substring(int start,int end)
            截取字符串的一部分,从start位置(包含)开始,到end位置(不包含)结束
    
        练习2:定义任意一个字符串,打印输出每一个字符
            /*
                分析:
                    length()方法可以获取字符串的长度
                    charAt(int x)方法可以获取指定索引位置的字符
            */
            public class Test2{
                public static void main(String[] args){
                    String str="睡你XX,起来敲!!!"
                    //用变量i表示索引,从0开始,一直到最后一个
                    for(int i=0;i<str.length();i++){
                        //charAt:通过索引获取字符
                        char ch=str.charAt(i);
                        System.out.println(ch);
                    }
                }
            }
    
        练习3:统计字符串中大写字母小写字母以及数字字符出现的个数
            /*
                分析:
                    1)键盘录入一个字符串
                    2)遍历获取每一个字符
                    3)判断字符是否为大写字母,小写字母,或者数字字符
                        如果 'a'-'z'  计数器smallCount++
                        如果 'A'-'Z'  计数器bigCount++
                        如果 '0'-'9'  计数器numberCount++
            */
            public class Test2{
                public static void main(String[] args){
                    //键盘录入一个字符串
                    Scanner sc=new Scanner(System.in);
                    System.out.println("请输入一个字符串:");
                    String str=sc.nextLine();
                    //遍历获取每一个字符,并分别计数
                    int smallCount=0;
                    int bigCount=0;
                    int numberCount=0;
                    for(int i=0;i<str.length();i++){
                        char ch=str.charAt(i);
                        //判断字符是否为大写字母,小写字母,或者数字字符,并计数
                        if(ch>='a'&&ch<='z'){
                            smallCount++;
                        }else if(ch>='A'&&ch<='Z'){
                            bigCount++;
                        }else if(ch>='0'&&ch<='9'){
                            numberCount++;
                        }
                    }
                    //输出计数结果
                    Sytem.out.println("大写字母:"+bigCount+"个");
                    Sytem.out.println("小写字母:"+smallCount+"个");
                    Sytem.out.println("数字字母:"+numberCount+"个"); 
                }
            }       
    
  • c:转换功能

        byte[] getBytes()
            把字符串转换为字节数组
        char[] toCharArray()
            把字符串转换为字符数组
        String toUpperCase()
            把字符串转换为大写字母
        String toLowerCase()
            把字符串转换为小写字母
    
        练习4:键盘录入一个字符串,把字符串的首字母变为大写,其他的变为小写,输出最后的结果
        /*
            分析:
                1)键盘录入,Scanner的nextLine方法
                2)获取首字母,使用substring(0,1),并且转换为大写,使用toUpperCase()
                3)获取剩下的字符串,使用substring(1),并且转换为小写,使用toLowerCase()
                4)拼接字符串
        */
        public class Test4{
            public static void main(String[] args){
                //键盘录入,Scanner的nextLine方法
                Scanner sc=new Scanner(System.in);
                System.out.println("请输入一个字符串:");
                String str=sc.nextLine();
    
                //获取首字母,使用substring(0,1),并且转换为大写,使用toUpperCase()
                String s1=str.substring(0,1).toUpperCase()
    
                //获取剩下的字符串,使用substring(1),并且转换为小写,使用toLowerCase()
                String s2=str.substring(1).toLowerCase();
    
                //拼接字符串
                String s3=s1+s2;
                System.out.println(s3);
    
                //稍微改进一下下:
                System.out.println(str.substring(0,1).toUpperCase()+str.substring(1).toLowerCase());
            }
        }
    
  • d:其他功能

        String trim()
            去掉字符串的前后空白
        String[] split(String regex)
            切割字符串,得到一个String[]
        String replace(String oldStr,String newStr)
            使用新的字符串替换旧的字符串,得到一个新字符串
        int compareTo(String str) 
            按照字典顺序比较字符串
            看返回值:
                正数:左边比右边大
                负数:左边比右边小
                零:  左边和右边相等
    

二、String的练习

1)把数组中的元素,按照指定的格式输出
    格式:"{1,2,3,4}"
    public class Test5{
        public static void main(String[] args){
            int[] arr={1,2,3,4,5};

            String str=arrayToString(arr);

            //输出最后的结果
            System.out.println(str);
        }

        public static String arrayToString(int[] arr){
            //定义一个字符串
            String str="{";
            //遍历数组
            for(int i=0;i<arr.length;i++){
                if(i==arr.length-1){
                    str+=arr[i]+"}";
                }else{
                    str+=arr[i]+",";
                }
            }   
            return str;
        }
    }

2)把字符串反转
    //倒着遍历每一个字符,拼接成一个新的字符串
    public static String reverse(String str){
        String newStr="";

        //倒着遍历字符串
        for(int i=str.length()-1;i>=0;i--){
            //根据索引获取每一个字符,拼接成一个新字符串
            newStr+=str.charAt(i);
        }
        return newStr;
    }

三、StringBuilder和StringBuffer

概述:StringBuilder和StringBuffer称为可变的字符串(字符串缓冲区)

StringBuiler/StringBuffer和String的区别
    StringBuiler/StringBuffer:可变的
    String:固定的

StringBuilder的构造方法
    StringBuilder()
         构造一个不带任何字符的字符串生成器,其初始容量为16个字符。
         超过容量,会自动扩容
    StringBuilder(String str) 
        根据已有的字符串构造一个字符串缓冲区对象

常用方法
    StringBuilder append(任意类型)
        把任意类型的数据,添加到缓冲区末尾,返回值是该对象本身

    StringBuilder insert(int index, 任意类型)
        把任意类型的数据,插入到缓冲区的指定位置,返回值是该对象本身

    StringBuilder reverse()
        把字符串缓冲区反转

    String toString() 
        把StringBuilder转换为字符串

    String substring(int start) 
        截取字符串缓冲区的一部分,从指定的索引位置开始
    String substring(int start,int end)
        截取字符串缓冲区的一部分,从指定的位置开始,到指定的位置结束

猜你喜欢

转载自blog.csdn.net/jeremy_ke/article/details/81137222