java 每日一练 (10)

文章目录

1. 单选


1. 下列运算符合法的是( )


A : && B: <> C: if D : =


答案 : A , && 与运算符 , <> 指定泛型的值 , if 条件 语句 , = 赋值


2. 下面代码运行结果是 ()

在这里插入图片描述


A catch语句块 和是:43

B 编译异常

C finally语句块 和是:43

D 和是:43 finally语句块

答案 : C

在这里插入图片描述


3. 下列Java代码中的变量a、b、c分别在内存的____存储区存放。


在这里插入图片描述


A 堆区、堆区、堆区

B 堆区、栈区、堆区

C 堆区、栈区、栈区

D 堆区、堆区、栈区

E 静态区、栈区、堆区

F 静态区、栈区、栈区

答案 : C

在这里插入图片描述


4. 以下声明合法的是


A default String s

B public final static native int w( )

C abstract double d

D abstract final double hyperbolicCosine( )

答案 : B

A : default String s , default 不是一个访问权限限定符

复习一下 访问权限修饰符 :

在这里插入图片描述

  1. public : 修饰的成员变量 或者 方法,可以直接被其他类的调用者使用
  2. private : 是实现封装的关键字 ,被 private 修饰的成员变量或成员方法,不能被其他类的调用者使用
  3. default : 包访问权限 ,在类中一般不写, 这里为了对标其他访问权限才写的 , 简单来说 我们想要这个成员变量 或成员方法是 具有包访问权限 只需要 String name = “xxx” 即可
  4. proteced : 对于 类 的 子类(包含了 不同 包 和 同一个 包 ) 和 同一个包的 其他 类 来说 ,protected 修饰的字段和 方法是 可以 访问 的


B : public final static native int w() , 是正确的 注意 : 这里被 final 修饰 是不能被重写的.


C : abstrace double d, 这里 abstrace 是定义抽象类的关键字 , 这想要通过 abstrace 定义一个变量是不能的 。

关于抽象类不太熟可以看这个


D :这里想要通过 abstract 定义一个抽象方法 ,但是它加上了 一个 final , 关于我们的抽象类 被创建出来的意义就是用来继承的 ,里面的抽象方法就是用来重写的, 如果 加上了 final 就会让方法不能重写 此时就违背了 抽象方法的本意 ,那么肯定会报错.


5. 在使用super 和this关键字时,以下描述正确的是


A 在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过

B super()和this()不一定要放在构造方法内第一行

C this()和super()可以同时出现在一个构造函数中

D this()和super()可以在static环境中使用,包括static方法和static语句块


答案 : A


关于 super 和 this 不熟悉可以看这个 : 继承 Inheritance_

A :正确

B : super() 和 this() 一定需要放在 构造方法内的第一行 .

C : super() 和 this() 两个 都是放在 第一行,如果两个同时出现,就会出问题 , 所以 C 是错误的

D : super() 和 this () 不能在 static 环境下使用,被 static 修饰的 方法 或 变量 都只有一份 ,属于类本身的 ,this() 和 super() 是在 new 类

的时候使用, 即创建类的时候调用 , 如果在 static 环境下 能使有 this() 或 super () , 那么 this () 和 super 是只有一个 还是多个呢 ? 此时

就自相矛盾了.


下面代码的输出结果是什么?


在这里插入图片描述


A 3 B 123 C 1 D 12


答案 : D

在这里插入图片描述


7. 有代码片段如下:

byte b1=1,b2=2,b3,b6;

final byte b4=4,b5=6;

b6=b4+b5;

b3=(b1+b2);

System.out.println(b3+b6);


关于上面代码片段叙述正确的是()


A 输出结果:13

B 语句:b6=b4+b5编译出错

C 语句:b3=b1+b2编译出错

D 运行期抛出异常


答案 : C

在这里插入图片描述


8. 以下java程序代码,执行后的结果是()

在这里插入图片描述


A Fred

B true

C 编译错误

D 运行时抛出异常


答案 : B

在这里插入图片描述


9. 执行以下程序后的输出结果是()

在这里插入图片描述

A : A,A

B : A,B

C : B,B

D : AB,B

答案 : D

在这里插入图片描述


10. 下面所示的java代码,运行时,会产生()类型的异常

int Arry_a[] = new int[10];
System.out.println(Arry_a[10]);


A ArithmeticException

B NullPointException

C IOException

D ArrayIndexOutOfBoundsException

答案 : D , 这里很明显 是数组越界异常 , 创建了一个 10 个大小的 数组 ,最大的下标是 9 , 而 访问的 是 Array_a[10] , 肯定是越界了

2. 编程题


题目一 : 井字棋__牛客网 (nowcoder.com)

在这里插入图片描述


图 :

在这里插入图片描述

附上代码 :

import java.util.*;

public class Board {
    
    
    public boolean checkWon(int[][] board) {
    
    
        // write code here

        // 记录行
        int cnt = 0;

        // 记录列
        int cnt2 = 0;

        // 记录左对角线
        int cnt3 = 0;

        // 记录 右对角线
        int cnt4 = 0;

        for (int i = 0; i < board.length; i++) {
    
    

            for (int j = 0; j < board[i].length; j++) {
    
    

                // 1. 考虑行
                cnt += board[i][j];

                // 2. 考虑列
                cnt2 += board[j][i];

                // 3. 考虑左对角线
                if (i == j) {
    
    
                    cnt3 += board[i][j];
                }

                if (i + j == 2) {
    
    
                    cnt4 += board[i][j];
                }
            }
            // 判断是否获胜
            if (cnt == 3) {
    
    
                return true;
            }
            if (cnt2 == 3) {
    
    
                return true;
            }
            if (cnt3 == 3) {
    
    
                return true;
            }
            if (cnt4 == 3) {
    
    
                return true;
            }
        }

        // 此时说明平局
        return false;

    }
}


题目二 : 密码强度等级_牛客题霸_牛客网 (nowcoder.com)


代码 :

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    
    
public static void main(String[] args) {
    
    
        //  1. 密码长度

        Scanner sc = new Scanner(System.in);

        String str = sc.next();

        if (str.length() < 0 || str.length() > 300) {
    
    
            System.out.println("错误密码");
            return;
        }

        // 1. 判断 密码长度

        int cnt = 0;

        if (str.length() <= 4) {
    
    
            cnt += 5;
        } else if (str.length() <= 7) {
    
    
            cnt += 10;
        } else {
    
    
            // >= 8
            cnt += 25;
        }

     
        int cntSz = 0;
        int cntZf = 0;
       
   		// 大写字母
        int zmD = 0;
        // 小写字母
        int zmX = 0;
    
        // 判断密码中含有的东西 : 
        for (int i = 0; i < str.length(); i++) {
    
    
            char a = str.charAt(i);
			
            // 含有数字
            if (a >= '0' && a <= '9') {
    
    
                cntSz++;
            } else if (a >= 'a' && a <= 'z') {
    
    
                // 含有了 小写
                zmX++;              
            } else if (a >= 'A' && a <= 'Z') {
    
    
                // 含有了 大写
                zmD++;
            } else {
    
    
                // 含有字符
                cntZf++;
            }
        }

    	// 判断字母 : 
        if (zmX + cntSz + cntZf == str.length()) {
    
    
            // 此时全是小写
            cnt += 10;
        } else if (zmD + cntSz + cntZf == str.length()) {
    
    
            cnt += 10;
        } else if (zmD + cntSz + cntZf + zmX == str.length()) {
    
    
            cnt += 20;
        }

    	// 判断数字 : 
        if (cntSz == 1) {
    
    
            cnt += 10;
        } else if (cntSz > 1) {
    
    
            cnt += 20;
        }
    
    	// 判断字符
        if (cntZf == 1) {
    
    
            cnt += 10;
        } else if (cntZf > 1) {
    
    
            cnt += 25;
        }

        // 奖励
        if (cntSz != 0) {
    
    
            // 此时说明 有小写 有大写 有数字有字符
            if (zmD != 0 && zmX != 0 && cntZf != 0) {
    
    
                cnt += 5;
                // 此时有 纯大写 或 纯小写 和 字符
            } else if ((zmD == 0 || zmX == 0) && cntZf != 0) {
    
    
                cnt += 3;
            } else {
    
    
                // 此时只有数字 和 字母
                cnt += 2;
            }
        }

        if (cnt >= 90) {
    
    
            System.out.println("VERY_SECURE");
        } else if (cnt >= 80) {
    
    
            System.out.println("SECURE");
        } else if (cnt >= 70) {
    
    
            System.out.println("VERY_STRONG");
        } else if (cnt >= 60) {
    
    
            System.out.println("STRONG");
        } else if (cnt >= 50) {
    
    
            System.out.println("AVERAGE");
        } else if (cnt >= 25) {
    
    
            System.out.println("WEAK");
        } else {
    
    
            System.out.println("VERY_WEAK");
        }

    }
}

猜你喜欢

转载自blog.csdn.net/mu_tong_/article/details/129700142