• java 每日一练 (5)


    java 每日一练(5)

    单选


    1.下面的程序 编译运行后,在屏幕上显示的结果是()

    在这里插入图片描述


    A: 0

    B : 2

    C: 5

    D :80


    5的二进制 : 0101

    右移 >>: 最右侧位不要了, 最左侧补符号位(正数补0, 负数补1)


    0101>> 2 , 5为 正数 左侧补0

    第一次 : 0010

    第二次 : 0001

    此时 x 就为 1

    然后 y 再 >>> 也称 无符号右移。

    无符号右移规则:最右侧位不要了, 最左侧补 0.


    此时 0001 >>> 2 第一次 0000 , 第二次 0000

    所以答案很明显就是 0

    2.以下代码结果是什么?


    在这里插入图片描述


    A 代码可以编译运行,输出“AB.AB”.

    B 代码可以编译运行,输出“A.A”。

    C 代码可以编译运行,输出“AB.B”。

    D 代码可以编译运行,输出“A.B”。


    图解 :

    在这里插入图片描述


    所以答案 很明显 C


    3.在JAVA中,假设A有构造方法A(int a),则在类A的其他构造方法中调用该构造方法和语句格式应该为()

    A this.A(x)

    B this(x)

    C super(x)

    D A(x)


    题目给了 A 是有构造方法 A(int a) ,说明是带有一个参数的构造方法, 这里我们想要通过 this 调用带有一个参数的构造方法, 直接使用 this(x) 即可 ,

    这里需要注意this() ,需要在构造方法的第一行 .


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

    这里放在 idea上就非常明显了
    
    public static void main(String[] args){
        String s;
        System.out.println("s="+s);
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7


    A 代码编程成功,并输出”s=”

    B 代码编译成功,并输出”s=null”

    C 由于String s没有初始化,代码不能编译通过。

    D 代码编译成功,但捕获到NullPointException异常


    答案 : 局部变量 s 并没有初始化,所以这里 编译期间 就会出错 。 所以选C

    放在 idea 上 , 就非常明显了, 直接爆红 了。

    在这里插入图片描述


    5.在java7中,下列不能做switch()的参数类型是?


    A int型

    B 枚举类型

    C 字符串

    D 浮点型

    答案 : D ,这里我们直接特殊记忆一下即可, 不能作为 switch() 的参数 类型有 float , double , boolean , long


    6.一个以”.java”为后缀的源文件


    A 只能包含一个类,类名必须与文件名相同

    B 只能包含与文件名相同的类以及其中的内部类

    C 只能有一个与文件名相同的public类,可以包含其他类

    D 可以包含任意类


    A : 错误 ,我们的一个.java文件可以包含很多类,并不一定需要与文件名相同 ,只有public修饰的类与文件名相同

    在这里插入图片描述


    B : 上图 A 和 B 就不是内部类, 同样也是可以包含的, 所以 B也是错误的

    C :正确

    D :错误 , 我们的 public 修饰的类只能包含一个,所以这里错误 .

    7.以下代码返回值是什么?


    在这里插入图片描述


    A true B false


    这里主要考察 异常中 finally 不管是否出现异常都会执行 , 一开始 返回 一个 true , 但是 需要执行 finally中的代码, 所以 又执行了一个 return false ,此时最终就返回了 一个 false


    答案 : B


    8. 以下()不是合法的标识符?


    A STRING

    B x3x

    C void

    D deSf


    答案 : java中标识符 是 数字 字母 下划线 美元符号$ , 这里 void 是一个关键字, 就不能使用void 来定义一个变量 ,方法等 所以选 C


    9.指出以下程序运行的结果是

    在这里插入图片描述


    A good and abc

    B good and gbc

    C test ok and abc

    D test ok and gbc


    答案 : 这里还是考引用 ,与上面的 那个 a 和 b 的差不多 .

    在这里插入图片描述

    不定项选择题

    1.下列有关JAVA异常处理的叙述中正确的是()


    A finally是为确保一段代码不管是否捕获异常都会被执行的一段代码

    B throws是用来声明一个成员方法可能抛出的各种非运行异常情况

    C final用于可以声明属性和方法,分别表示属性的不可变及方法的不可继承

    D throw是用来明确地抛出一个异常情况

    答案 :

    A 正确 如果不知道可以 取看异常相关的文章 ,

    B 正确

    在这里插入图片描述


    C : final 这里是方法的不可重写, 类才能继承 所以 C 错误


    D : 这里就明确的抛出了一个异常 。 注 : 这里随便写的.

    在这里插入图片描述

    编程题


    题目一 : 统计回文_牛客题霸_牛客网 (nowcoder.com)


    图一 :

    在这里插入图片描述

    import java.util.Scanner;
    
    // 注意类名必须为 Main, 不要有任何 package xxx 信息
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            String str1 = sc.next();
            String str2 = sc.next();
            int n = str1.length();
    
            int count = 0;
            for (int i = 0; i <= n; i++) {
                StringBuilder ret = new StringBuilder();
                ret.append(str1.substring(0, i)).append(str2).append(str1.substring(i, n));
                if (sum(ret.toString().toCharArray(), 0, ret.length() - 1)) {
                    count++;
                }
            }
            System.out.println(count);
        }
    
        public static boolean sum(char[] a, int start, int end) {
            // 单独写一个方法判断是否为回文
            while (start < end) {
                if (a[start] != a[end]) {
                    return false;
                }
                start++;
                end--;
            }
            return true;
        }
    }
    
    • 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


    最后注意一下 ,因为我们的substring(a,b) 的 截取是 左闭右开的所以最后 需要让 i = n ,才能截取完全 ,此时就相当于最后添加 字符串 b 。


    如果对 substring() 截取方法不熟悉, 这可以采用 insert() 方法 ,直接将我们的字符串插入到 字符串 中 然后再判断是否为回文 .

    注意 : insert 方法在 StringBuilder 或 StringBuffer 中, String 类里面没有的.


    所以代码如下 :

    import java.util.Scanner;
    
    // 注意类名必须为 Main, 不要有任何 package xxx 信息
    public class Main {
        public static void main(String[] args) {
            Scanner sc = new Scanner(System.in);
            String str1 = sc.next();
            String str2 = sc.next();
            int n = str1.length();
    
            int count = 0;
            for (int i = 0; i <= n; i++) {
                StringBuilder str = new StringBuilder(str1);
                str.insert(i, str2);
                if (sum(str.toString().toCharArray(), 0, str.length() - 1)) {
                    count++;
                }
    
            }
            System.out.println(count);
        }
    
        public static boolean sum(char[] a, int start, int end) {
            // 单独写一个方法判断是否为回文
            while (start < end) {
                if (a[start] != a[end]) {
                    return false;
                }
                start++;
                end--;
            }
            return true;
        }
    }
    
    • 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

    题目二 : 连续最大和_牛客题霸_牛客网 (nowcoder.com)

    图一 :

    在这里插入图片描述

    import java.util.Scanner;
    
    // 注意类名必须为 Main, 不要有任何 package xxx 信息
    public class Main {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            // 注意 hasNext 和 hasNextLine 的区别
            int n = in.nextInt();
    
            int[] arr = new int[n];
            for(int i = 0 ; i < n;i++){
                arr[i] = in.nextInt();
            }
    
            int count = arr[0];
            
            int max = arr[0];
            for(int i = 1 ;i < n ;i++){
                // 动态规划 : 状态方程 
                count = Math.max(arr[i], count+arr[i]);
                // 与之前的最大值比较,如果 大就重新赋值给 max 
                max = Math.max(count, max);
            }
            System.out.print(max);
        }
    }
    
    • 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
  • 相关阅读:
    浏览器简介
    序列化协议:Protobuf入门
    如何处理前端响应式图片?
    C6678/C6657+ZYNQ/K7/A7 FPGA+AD+北斗的软硬件设计方案
    idea 集成 git 后使用的常用命令
    【Linux】守护进程
    十二,HDR环境贴图卷积
    自动语音识别(ASR)研究综述
    PV静态创建和动态创建
    最短路径:Dijkstra和Floyd
  • 原文地址:https://blog.csdn.net/mu_tong_/article/details/128083633