笔记-08-(2)

单选题

1:下面是关于String类 API 当中与判断相关的方法,哪一个可以用于忽略大小写验证码的判断(B)

A:
public boolean equals(Object anObject){ … }

B:
public boolean equalsIgnoreCase(String anotherString){ … }

C:
public boolean endsWith(String suffix){ … }

D:
public boolean startsWith(String prefix){ … }

2:下列能够正确获取字符串对象长度的操作是(C )
A:
size()

B:
length

C:
length()

D:
charAt()

3:下列方法可以将字符串中所有字母转换为小写字母格式的是(B )
A: public String toUpperCase()
B: public String toLowerCase()
C: public String replaceAll(String regex,String replacement)
D: public String substring(int start)

4:下列选项中,是StringBuilder的添加方法的是( C)
A: capacity()
B: length()
C: append()
D: reverse()

5:请看代码,结果是(A )

public static void main(String[] args){
    StringBuilder sb = new StringBuilder(); 
    sb.append("d"); 
    sb.append("e"); 
    sb.append("f"); 
    String s = sb.toString().reverse(); //重点关注这一行代码
    System.out.println(s);
}

A: fed
B: def
C: 编译报错
D: 运行报错

6:下列代码的运行结果是(C )

public static void main(String[] args) {
    String s1 = "abc";
    String s2 = "abc";
    String s3 = "ABC";
    String s4 = "a";
    String s5 = s4 + "bc";
    System.out.println(s1.equals(s2));
    System.out.println(s1.equalsIgnoreCase(s3));
    System.out.println(s2.equals(s5));
    System.out.println(s3.equalsIgnoreCase(s5));
}

A: true
false
true
true

B: true
true
false
true

C: true
true
true
true

D: true
true
true
false

7:下列代码的运行结果是(C )

public static void main(String[] args) {
    String str1 = "lovejavalove";
    String str2 = str1.substring(2, 7);
    System.out.println("str2的结果是:"+str2);
}

A: str2的结果是:ejava
B: str2的结果是:vejava
C: str2的结果是:vejav
D: str2的结果是:oveja

8:下列代码的运行结果是( C)

public static void main(String[] args) {
    String str = "ilovejavalovelife";
    int index = str.indexOf("love");
    String newStr = str.replace("love","miss");
    System.out.println("index的值是:" + index);
    System.out.println("newStr的值是:" + newStr);
}

A: index的值是:5
newStr的值是:imissjavamisslife
B: index的值是:5
newStr的值是:imissjavalovelife
C: index的值是:1
newStr的值是:imissjavamisslife
D: index的值是:1
newStr的值是:imissjavalovelife

9:下列代码片段的运行结果是(D )

public static void main(String[] args) {
    String str1 = "chengxuyuan@shengda";
    String str2 = "com-itcast-cn";
    String[] strs1 = str1.split("@");
    String[] strs2 = str2.split("-");
    System.out.println("strs1[1]结果是:" + strs1[1]);
    System.out.println("strs2[1]结果是:" + strs2[1]);
}

A: strs1[1]结果是:chengxuyuan
strs2[1]结果是:com
B: strs1[1]结果是:chengxuyuan
strs2[1]结果是:itcast
C: strs1[1]结果是:shengda
报异常:ArrayIndexOutOfBoundsException
D: strs1[1]结果是:shengda
strs2[1]结果是:itcast

多选题

10:String和StringBuilder的区别( BC)
A: String是可变的字符序列
B: String是不可变的字符序列
C: StringBuilder是可变的字符序列
D: StringBuilder是不可变的字符序列

代码题

1.训练案例1

1.1需求

假如某网站希望使用5个随机小写字母作为随机验证码,请自定义一个方法,生成这样的一个验证码并返回;

1.2思路提示

随机字母不好生成,但是随机数字是可以的,并且小写字母的ASCII码值是97–122范围之间,因此我们可以生成5个97–122范围之间的随机数,然后将这5个随机数分别转成字符,连接在一起即可作为验证码使用;

1.3效果演示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8Nx47g09-1607244594055)(assets/1599038821148.png)]

package com.shengda.zuoye;

import java.util.Random;

public class KuoZhan01 {
    public static void main(String[] args) {
        String code = getCode();
        System.out.println("5位小写字母组成的验证码是:" +code);


    }
    public static String getCode(){
        Random r = new Random();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 5; i++) {
            int suiji = r.nextInt(122-97) + 97;
            sb.append((char)suiji);
        }
        return sb.toString();
    }
}

2.训练案例2(扩展题-五星难度)

选择性做,如果读完题没有思路不建议花费过多的时间和精力。

2.1.需求

自定义一个方法,完成随机生成一个6位数的验证码,验证码中可以包含大写字母,小写字母和数字,但是必须保证至少有一个数字,且数字的位置是随机的;

2.2.要求

1:分析自定义方法,是否需要参数,是否需要返回值

2:需要自行查询StringBuilder类的API学习一两个必要的方法,完成功能;

2.3.思路提示

本题可以分成2个步骤完成,第一个步骤先生成一个6位数字符串验证码,不考虑至少一个数字的问题,第二步再解决至少一个数字的问题;

其中第一个步骤实现思路比较多,其中一种思路是提前准备好所有的合法字符,保存到一个数组中,然后随机从数组中选择6个字符出来,组成一个长度为6的字符串验证码,这个方式准备数组比较麻烦,但是也能实现;还有一种思路是直接生成6个指定范围的随机数字,然后把这6个数字强转成对应的字符即可;例如,你随机生成的数字是97–122,那么强转之后一定是一个小写字母,同理,可以生成大写字母和数字字符;

当第一个步骤完成后,可以利用StringBuilder类中的setChar方法,将指定索引位置的字符修改成指定的字符;或在第一步的时候,生成5位数的验证码,然后这一步利用StringBuilder类中的insert方法将指定的字符插入到指定索引位置,虽然这两个方法都可以完成效果,但是需要大家自行查询API学习使用;

2.4.案例效果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WcASH0tL-1607244594058)(assets/1599038979154.png)]

package com.shengda.zuoye;


import java.util.Random;

public class KuoZhan02 {
    public static void main(String[] args) {
        String c = getCode();
        System.out.println("至少包含一个数字的随机验证码是:" + c);
    }

    private static String getCode() {
        Random r = new Random();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < 6; i++) {
            int code = r.nextInt(122 - 48 + 1) + 48;
            if ((code >= 58 && code <= 64) || (code >= 91 && code <= 96)) {
                //非法字符
                i--;  //补一次循环的机会
                continue;
            }
            //代码执行到这里,就证明此时的code一定是合法的,可以拼接
            sb.append((char)code);
        }
        //6位验证码已经生成,还差保证至少一个数字
        int num = r.nextInt(57-48+1)+48;
        sb.setCharAt(r.nextInt(6),(char)num);

        return sb.toString();
    }

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值