day07

一、API

1:打开帮助文档
2:点击显示,找到索引,看到输入框
3:你要学习什么内容,你就在框框里面输入什么内容
    举例:Random
4:看包
    java.lang包下的类在使用的时候是不需要导包的
5:看类的描述
    Random类是用于生成随机数的类
6:看构造方法
    Random():无参构造方法
        Random r = new Random();
7:看成员方法
    public int nextInt(int n):产生的是一个[0,n)范围内的随机数
        调用方法:
            看返回值类型:人家返回什么类型,你就用什么类型接收
            看方法名:名字不要写错了
            看形式参数:人家要几个参数,你就给几个,人家要什么数据类型的,你就给什么数据类型的

            int number = r.nextInt(100);
8:练习1:
    打印提示用户键盘录入
    从键盘录入任意字符串
    控制台输出”您输入的字符串为....”

 参考:
    public class APITest01 {
        public static void main(String[] args) {
            //Scanner(InputStream source)   我要用Scanner的有参构造创建对象
            Scanner sc = new Scanner(System.in);

            /*
             *  String nextLine() 此扫描器执行当前行,并返回跳过的输入信息。 
             */
            String str = sc.nextLine();
            System.out.println(str);

        }
    }

二、String类

1.构造方法

        构造方法: 1)String()
        String st = new String();

       2)String(String original)
        String str1 = new String("老王");

       3)String(char[] value)
        char[] arr = {'1','2'};
           String str2 = new String(arr);

        4)String(char[] value, int offset, int count)
       // value - 作为字符源的数组。
        // offset - 初始偏移量。
        // count - 长度。
          char[] arr = {'1','2','3','4','5'};
          new String(arr,1,3); //234

    5)String str = "abc"; 直接给出字面值常量  str(也是对象)
         int i = 10; //i 不是对象,是基本数据类型的变量

2.String的判断方法

    判断方法的结果是boolean数据类型
    /*
     * Object:是类层次结构中的根类,所有的类都直接或者间接的继承自该类。
     * 如果一个方法的形式参数是Object,那么这里我们就可以传递它的任意的子类对象。
     * 
     * String类的判断功能:
     * boolean equals(Object obj):比较字符串的内容是否相同
     * boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
     * boolean startsWith(String str):判断字符串对象是否以指定的str开头
     * boolean endsWith(String str):判断字符串对象是否以指定的str结尾
     */
    public class StringDemo {
        public static void main(String[] args) {
            //创建字符串对象
            String s1 = "hello";
            String s2 = "hello";
            String s3 = "Hello";

            //boolean equals(Object obj):比较字符串的内容是否相同
            System.out.println(s1.equals(s2));
            System.out.println(s1.equals(s3));
            System.out.println("-----------");

            //boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
            System.out.println(s1.equalsIgnoreCase(s2));
            System.out.println(s1.equalsIgnoreCase(s3));
            System.out.println("-----------");

            //boolean startsWith(String str):判断字符串对象是否以指定的str开头
            System.out.println(s1.startsWith("he"));
            System.out.println(s1.startsWith("ll"));

            //boolean endsWith(String str):判断字符串对象是否以指定的str结尾
            System.err.println(s1.endsWith("lo"));
            System.err.println(s1.endsWith("llo0"));

        }
    }

3.用户登录案例

    /*
     * 模拟登录,给三次机会,并提示还有几次。
     * 
     * 分析:
     *      A:定义两个字符串对象,用于存储已经存在的用户名和密码
     *      B:键盘录入用户名和密码
     *      C:拿键盘录入的用户名和密码和已经存在的用户名和密码进行比较
     *          如果内容相同,提示登录成功
     *          如果内容不同,提示登录失败,并提示还有几次机会
     */
    public class StringTest {
        public static void main(String[] args) {
            //定义两个字符串对象,用于存储已经存在的用户名和密码
            String username = "admin";
            String password = "admin";

            //给三次机会,用for循环实现
            for(int x=0; x<3; x++) {
                //键盘录入用户名和密码
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入用户名:");
                String name = sc.nextLine();
                System.out.println("请输入密码:");
                String pwd = sc.nextLine();

                //拿键盘录入的用户名和密码和已经存在的用户名和密码进行比较
                if(username.equals(name) && password.equals(pwd)) {
                    System.out.println("登录成功");
                    break;
                }else {
                    if((2-x) ==0) {
                        System.out.println("用户名和密码被锁定,请与管理员联系");
                    }else {
                        System.out.println("登录失败,你还有"+(2-x)+"次机会"); //2,1,0
                    }
                }
            }
        }
    }

4.String的获取功能

     * String类的获取功能:
     * int length():获取字符串的长度,其实也就是字符个数
     * char charAt(int index):获取指定索引处的字符
     * int indexOf(String str):获取str在字符串对象中第一次出现的索引
     * String substring(int start):从start开始截取字符串
     * String substring(int start,int end):从start开始,到end结束截取字符串。包括start,不包括end

5.遍历String字符串

    String s = "abcde";
    for(int x=0; x<s.length(); x++) {
        System.out.println(s.charAt(x));
    }

6.练习:统计不同字符

    /*
     * 统计一个字符串中大写字母字符,小写字母字符,数字字符出现的次数。(不考虑其他字符)
     * 
     * 分析:
     *      A:键盘录入一个字符串数据
     *      B:定义三个统计变量,初始化值都是0
     *      C:遍历字符串,得到每一个字符
     *      D:拿字符进行判断
     *          假如ch是一个字符。
     *          大写:ch>='A' && ch<='Z'
     *          小写:ch>='a' && ch<='z'
     *          数字:ch>='0' && ch<='9'
     *          其他字符
     *      E:输出结果
     */

    public class StringTest2 {
        public static void main(String[] args) {
            //键盘录入一个字符串数据
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入一个字符串数据:");
            String s = sc.nextLine();

            //定义三个统计变量,初始化值都是0
            int bigCount = 0;
            int smallCount = 0;
            int numberCount = 0;

            //遍历字符串,得到每一个字符
            for(int x=0; x<s.length(); x++) {
                char ch = s.charAt(x);
                //拿字符进行判断
                if(ch>='A' && ch<='Z') {
                    bigCount++;
                }else if(ch>='a' && ch<='z') {
                    smallCount++;
                }else if(ch>='0' && ch<='9') {
                    numberCount++;
                }else {
                    System.out.println("该字符"+ch+"非法");
                }
            }

            //输出结果
            System.out.println("大写字符:"+bigCount+"个");
            System.out.println("小写字符:"+smallCount+"个");
            System.out.println("数字字符:"+numberCount+"个");
        }
    }

7.String的转换功能

     * String类的转换功能:
     * char[] toCharArray():把字符串转换为字符数组
     * String toLowerCase():把字符串转换为小写字符串
     * String toUpperCase():把字符串转换为大写字符串

8.连点调用方法:

键盘录入一个字符串,把该字符串的首字母转成大写,其余为小写。(只考虑英文大小写字母字符)

     方法1:
     /*
     * 键盘录入一个字符串,把该字符串的首字母转成大写,其余为小写。(只考虑英文大小写字母字符)
     * 
     * 分析:
     *      A:键盘录入一个字符串
     *      B:截取首字母
     *      C:截取除了首字母以外的字符串
     *      D:B转大写+C转小写
     *      E:输出即可
     */
    public class StringTest {
        public static void main(String[] args) {
            //键盘录入一个字符串
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入一个字符串:");
            String s = sc.nextLine();

            //截取首字母
            String s1 = s.substring(0, 1);

            //截取除了首字母以外的字符串
            String s2 = s.substring(1);

            //B转大写+C转小写
            String s3 = s1.toUpperCase()+s2.toLowerCase();

            //输出即可
            System.out.println("s3:"+s3);
        }
    }


    方法2:
    /*
     * 连点调用方法
     * 
     * 键盘录入一个字符串,把该字符串的首字母转成大写,其余为小写。(只考虑英文大小写字母字符)
     * 连接字符串的方法: String concat(String str) 将指定字符串连接到此字符串的结尾。 
     */
    public class StringTest {
        public static void main(String[] args) {
            /*String s1 = "abc";
            String s2 = "123";
            String newStr = s1.concat(s2);
            System.out.println(newStr);*/

            // abcdEfgHt
            //A
            Scanner sc = new Scanner(System.in);
            String str = sc.nextLine();
            System.out.println(str.substring(0, 1).toUpperCase().concat(str.substring(1, str.length()).toLowerCase()));

        }
    }

9.String的trim方法和split方法

     * 去除字符串两端空格    
     *      String trim()
     举例: String  userName = " suwen qiang "  ----》 String newStr =   userName.trim() ----->"suwen qiang"

     * 按照指定符号分割字符串  
     *      String[] split(String str)  
            传入的字符串是正则表达式,方法的意思是按照这个传入的字符串str进行切割原有的字符串;最终得到一个字符串数组
     举例:String str = "a,b,c,d";
           String[] arrStr = str.split(","); //用,去切割
           arrStr ----> {"a","b","c","d"}
           String elementStr = arrStr[0];

10.练习:

    /*
     * 把数组中的数据按照指定个格式拼接成一个字符串
     * 举例:int[] arr = {1,2,3};  
     * 输出结果:[1, 2, 3]
     * 
     * 分析:
     * 1.定义int[] 
     * 2.定义一个方法,传入 int[]  返回一个String字符串“[1, 2, 3]”
     * 3.在方法里遍历使用字符串拼接,把拼接好的String返回出去
     * 4.主方法中调用该方法,打印返回过来的字符串
     */
    public class StringTest {
        public static void main(String[] args) {
            int[] arr = {};

            String result = getString(arr);
            System.out.println(result);

        }

        /*
         * 返回值是String
         * 参数:int[]
         */
        public static String getString(int[] arr){
            //1.定义字符串
            String str = "[";

            for (int i = 0; i < arr.length; i++) {
                if(i == arr.length-1){ //最后一个元素,不加逗号
                    str = str + arr[i];
                }else{
                    str = str + arr[i]+ ", ";
                }
            }
            str = str+"]";
            return str;
        }
    }

三、StringBuilder类

1.概述:
    String 是一个不可变的字符序列。
    String s = "abc";       
    String s = s + "def";  //s的地址更变了,s中断了与“abc”的连接,重新指向了 “abcdef”新对象; 原来的“abc” “def”就变成垃圾。

    StringBuilder: 字符串容器(可变的字符序列)。 StringBuilder就相当于一个箱子,箱子里面能不停的装字符串。 箱子的地址不变。

2.构造和方法
 * 构造方法:
 *      StringBuilder()
 * 
 * 成员方法:
 *      public int capacity():返回当前容量,理论值
 *      public int length():返回长度(字符数),实际值


3.添加方法和反转方法
/*
 * StringBuilder  append(任意类型)
 * StringBuilder reverse()  
 */
public class StringBuilderTest1 {
    public static void main(String[] args) {
        //StringBuilder 是一个能装字符串的容器
        StringBuilder sb = new StringBuilder();
        sb.append("abc");
        sb.append(123);
        sb.append(true);
        //一般打印对象打印的是地址值,String和StringBuilder StringBuffer 直接打印就能打印出来里面内容。
        System.out.println(sb);

        sb.append("12345");
        sb.reverse();
        System.out.println(sb); //54321
    }
}

4.String 和StringBuilder的相互转换    
1)String -----> StringBuilder
  通过StringBuilder的构造方法 StringBuilder(String str) ,把String作为参数传进去得到一个StringBuilder对象

 2)StringBuilder ----> String
  调用StringBuilder中的toString()方法,可以把StringBuilder ----> String
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值