• java 每日一练(6)


    java 每日一练(6)

    单选


    1.关于抽象类与最终类,下列说法错误的是?

    A 抽象类能被继承,最终类只能被实例化。

    B 抽象类和最终类都可以被声明使用

    C 抽象类中可以没有抽象方法,最终类中可以没有最终方法

    D 抽象类和最终类被继承时,方法可以被子类覆盖

    补充 : 最终类 也称为 密封类 (被 final 修饰的类 )


    A : 正确 , 抽象类 本来就是用来继承的, 最终类 是 被 final 修饰的类,是不能继承的所以, 只能被实例化.


    B : 正确

    在这里插入图片描述


    这里 A 和 B 就被声明 使用了


    C : 看 B 的图 ,最终类 就没有 被 final 修饰的方法, 抽象类也没有 抽象方法, 所以是C 是正确的。


    D : 错误, 最终类被final 修饰所以不能被继承.


    2.已知表达式int m[]={0,1,2,3,4,5,6};下面哪个表达式的值与数组下标量最大值相等?


    A m. length()

    B m. length-1

    C m. length()+1

    D m. length+1


    答案 : 明显 选 B , 注意: 数组的 length是没有() 它不是一个方法。


    3.下列哪个对访问修饰符作用范围由大到小排列是正确的?


    A private>default>protected>public

    B public>default>protected>private

    C private>protected>default>public

    D public>protected>default>private


    答案 : public > protected > default > private 所以 答案 选 D


    通过 下面这张图 加深 访问修饰限定符的印象

    在这里插入图片描述


    4. 有六个元素6,5,4,3,2,1顺序入栈,问下列哪一个不是合法的出栈序列?()


    A 5 4 3 6 2 1

    B 4 5 3 1 2 6

    C 3 4 6 5 2 1

    D 2 3 4 1 5 6


    栈的特点 :先进后出

    我们根据 栈的特点 就能很快的出答案

    在这里插入图片描述


    按照上面的方法, 我们去尝试 C 的时候 会出现 5 在 6 的上面, 当我们要出6的时候, 需要先出5 才能出 6 所以 C 就是错误的

    所以本题的 答案 C


    5.阅读下列程序,选择哪一个是正确的输出结果

    在这里插入图片描述


    A static A I’m A class static B I’m B class

    B I’m A class I’m B class static A static B

    C static A static B I’m A class I’m B class

    D I’m A class static A I’m B class static B


    答案 : 本题主要考察 代码块 , 复习文章 :(56条消息) 继承 Inheritance_


    关于 代码块的总结 :

    1、父类静态代码块优先于子类静态代码块执行,且是最早执行

    2、父类实例代码块和父类构造方法紧接着执行

    3、子类的实例代码块和子类构造方法紧接着再执行

    4、第二次实例化子类对象时,父类和子类的静态代码块都将不会再执行


    解析 : 先打印 父类的 静态代码块, 然后 打印 子类的 静态代码块 , 因为 题目中只有构造方法,所以 回显执行构造方法,子类 构造时会先帮助父类进行构造所以先执行父类的构造方法, 在执行子类的构造构造方法, 所以 答案 : C


    执行 :

    在这里插入图片描述


    6.执行下列代码的输出结果是( )


    在这里插入图片描述


    A 10

    B 20

    C 30

    D 40


    答案 : 本题 主要考察的 是 异常中 finally 有没有捕获到异常都会执行 , 我们传入一个 10 给 test 方法, 然后 b+=10 让 b等于了 20 , 并且返回了 20 , 但是因为 finally 里面的代码 不管是否出现异常都会执行, 那么 b 再次 += 10 变成了 30,最后 通过 return b , 就返回了 30 ,将原来的替换掉了。


    7.下列代码的输出结果是 ?

    在这里插入图片描述

    A true

    B false

    C null

    D 空字符串


    解析 :

    在这里插入图片描述


    所以 答案很明显 选 B

    不定项选择题

    1.在Java中下面Class的声明哪些是错误的?

    A public abstract final class Test { abstract void method(); }
    
    B public abstract class Test { abstract final void method(); }
    
    C public abstract class Test { abstract void method() { } }
    
    D public class Test { final void method() { } }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7


    A : abstract 是定义抽象类 或抽象方法的 ,既然是抽象类 就是用来被继承的, 而 关键字 final 修饰的类是不能继承的, 而被 final修饰的方法是不能重写的。 所以 abstract 与 final 是不能出现在一起的 。 所以 A 错误

    B : 同上

    C : 抽象方法 本来就是被重写的所以 不需要具体实现,这里就不能带有 {} 所以 C 错误

    在这里插入图片描述


    D : 正确

    2. 下列关于构造方法的叙述中,错误的是()


    A java语言规定构造方法名与类名必须相同

    B java语言规定构造方法没有返回值,但不同void声明

    C java语言规定构造方法不可以重载

    D java语言规定构造方法只能通过new自动调用


    A : 正确

    B : 正确

    C : 错误 ,类是可以拥有多个 构造方法的, 构造方法可以是不带参数 , 带有一个参数等, 此时就满足了重载的规则,所以是可以构成重载的.

    重载 : 方法名相同, 返回类型不做要求 ,参数类型 和参数个数不同 .


    D : 错误 , 我们的 this 或 super , 都是可以调用 构造方法的, this 调用当前类的构造方法, super 调用父类的构造方法


    3. 下面哪些赋值语句是正确的()


    A long test=012

    B float f=-412

    C int other =(int)true

    D double d=0x12345678

    E byte b=128


    A :test 被赋值了 一个 8进制 012 , 0 * 2 ^ 0 + 1 * 2 ^ 1 + 2 * 2 ^ 2 ,所以 test 其实是被赋值了一个 10。

    B : f 被赋值了 一个 -412 也是可以的

    C : 错误的 ,boolean 类型 , 不能进行强转 成一个数值类型的。

    D : 此时 d 相当于被赋值了一个 16进制 ,是可以这样写的

    E : byte 的取值范围 为 -128 到 127 , 此时 赋值超过了 最大范围的 127 .


    所以 答案 A B D

    编程题

    题目一 : 不要二_牛客题霸_牛客网 (nowcoder.com)


    图一 :

    在这里插入图片描述


    图二 :

    在这里插入图片描述


    分析完 ,代码就非常好写了 , 这里我们创建是数组默认是 0 ,然后不能放的地方设为1 ,定义一个 count 计数器 , 统计我们能够放蛋糕的地方,然后将不能放蛋糕的地方设为1 即可. 最后打印 我们的 count 。

    import java.util.Scanner;
    
    // 注意类名必须为 Main, 不要有任何 package xxx 信息
    public class Main {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            // 注意 hasNext 和 hasNextLine 的区别
            // 注意 题目是 可能是有点一点问题, 先给了 行
            // 所以 那 H 接收 ,然偶 那 W 接收列 
            // 
            int H = in.nextInt();
            int W = in.nextInt();
            
            int[][] arr = new int[H][W];
            int count = 0;
            for(int x = 0;x<H;x++){
                // 先遍历行
                for(int y = 0 ; y <W; y++){
                    // 在遍历列
                    if(arr[x][y] == 0){
                        // 此时 可以存放蛋糕
                        count++;
                        // 此时 将 不能放的置为 1
                        if(x+2 < H){
                            arr[x+2][y] = 1;
                        }
                        if(y + 2 < W){
                            arr[x][y+2] = 1;
                        }
                    }
                }
            }
            System.out.print(count);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    题目二 :把字符串转换成整数__牛客网 (nowcoder.com)

    在这里插入图片描述


    因为比较简单直接给代码 :

    import java.util.*;
    public class Solution {
        public int StrToInt(String str) {
            int a = 0;
            boolean flag = false;
            // 遍历我们的字符串 
            for(int i = 0 ; i < str.length(); i++){
                char c = str.charAt(i);
                if(c == '+' && i == 0){
                    continue;
                }
                if(c == '-' && i == 0){
                    flag = true;
                    continue;
                }
                // 此时 不是 + - ,普通的数字部分
                if(c <= '0' || c > '9'){
                    // 此时 是字母所以直接返回 0,
                    // 题目说 为0 同样需要返回 0
                    return 0;
                }
                // 将字符串 转为 数字
                a  = a * 10 + (c - '0');           
            }
            return flag ? -a : a;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
  • 相关阅读:
    【算法四】排序算法之选择排序
    python代码的几种常见加密方式
    java基础巩固20
    go慢速入门——函数
    802.1Qbb
    构建一个快速数据分析(boruta+shap+rcs)的shiny APP
    推荐:6款好用的安全审计工具!
    腾讯蓝鲸 API 网关如何借助 APISIX 实现产品升级与业务完善
    linux上安装java
    汇总遍历对象的六种方式及其区别
  • 原文地址:https://blog.csdn.net/mu_tong_/article/details/128121946