java 每日一练(6)
创始人
2024-03-03 22:44:11
0

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() { } }


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// 先遍历行for(int y = 0 ; y // 在遍历列if(arr[x][y] == 0){// 此时 可以存放蛋糕count++;// 此时 将 不能放的置为 1if(x+2 < H){arr[x+2][y] = 1;}if(y + 2 < W){arr[x][y+2] = 1;}}}}System.out.print(count);}
}

题目二 :把字符串转换成整数__牛客网 (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 同样需要返回 0return 0;}// 将字符串 转为 数字a  = a * 10 + (c - '0');           }return flag ? -a : a;}
}

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...