java 每日一练 (8)

文章目录

  • 1. 单选题
  • 2. 编程题

1. 单选题

1. 下列选项中关于 java 中 super 关键字的说法正确的是 ()

A: super 关键字是在子类对象内部指代父类对象的引用.

B : super 关键字不仅可以指代子类的直接父类,还可以直接指代父类的父类.

C : 子类通过 super 关键字只能调用父类的方法,而不能调用父类的属性.

D : 子类通过 super 关键字只能调用父类的属性,而不能调用父类的方法 .


答案 : A 正确 ,我们可以通过 super 访问父类的 方法和属性 以及 父类的构造函数


B : 错误 , super 直接指向子类的父类,而不能直线子类的爷爷辈 (父类的父类)

C , D 都错 ,super 关键字 可以访问 父类的属性和 方法

2. A派生出子类B,B派生出子类C,并且在java源代码中有如下声明:

A a0=new A();  // 1
A a1=new B();  // 2 
A a2=new C();  // 3


以下哪个说法是正确的?

A : 第1行,第2行和第3行的声明都是正确的

B : 第1,2,3行都能通过编译,但第2,3行运行时出错

C : 第1,2行能通过编译,但第3行编译出错

D : 只有第1行能通过编译


答案 : 这里涉及到 继承 的知识 , B 是 A 的子类 , C 是 A 的子类 , 看 第一行 A a0 = new A (); 是没问题的 , A 通过自己的构造函数 构造 a0 对象 ,

第二行 A a1 = new B(); 这也是没问题的 , 这里涉及到了向上转型 . 父类引用引用了子类对象 关于 向上转型 我在多态的文章中说过 多态 不记得可以看看这个 .

第三行 同样也是没问题的 继承具有传递性 , B 继承了 A , C 又继承了 B , 所以 C 是具有 A 的性质 , A a3 = new C() , 同样 也会触发 向上转型 .

在这里插入图片描述


3. 以下说法错误的是()


A 数组是一个对象

B 数组不是一种原生类

C 数组的大小可以任意改变

D 在Java中,数组存储在堆中连续内存空间里


答案 :

A : 正确 数组是一个对象

B : 正确 数组不是一种原生类 而是数组是通过基本类型来定义的 , 比如 : int[] a = new int[100]; ,

C : 错误 数组一旦定义好了 就无法任意改变,没法自动扩容 , 我们想要对数组扩容需要使用 copyOf 方法


将 arr 数组扩容 2 倍

在这里插入图片描述

D : 正确 数组 是通过 关键字 new 创建出来的 , 通过 new 创建的 都是存放在 堆中的 , 数组在堆中 占用的空间是连续的.

4. Test.main() 函数执行后的输出是()


在这里插入图片描述

A : 11 17 34

B : 22 74 74

C : 6 7 7

D : 22 34 17

答案 : D

图一 :

在这里插入图片描述


图二 :

在这里插入图片描述


图三 :

在这里插入图片描述


图四 :

在这里插入图片描述


5. 关于Java的异常处理机制的叙述哪些正确?


A 如果程序发生错误及捕捉到异常情况了,才会执行finally部分

B 其他选项都不正确

C 当try区段的程序发生异常且被catch捕捉到时,才会执行catch区段的程序

D catch部分捕捉到异常情况时,才会执行finally部分


答案 :

A : finally 不管程序是否出现异常都会执行, 所以 A 错误

C : 正确

D : 与 A 一样 , D 错误

B : C 正确 ,所以 B 错误


6. 如何跳出Array的forEach循环?()

A break

B return true

C return false

D 以上都不是


答案 : 选 A , Array 可以看作 一个数组,我们相同过 forEach 遍历, 那么 就可以通过 break 来跳出 循环 , 假设我们的 跳出 Array 的 forEach 循环再 一个 方法里 ,且返回值 不是 布尔类型,那么 B 和 C 是不是就报错了 ,那么 就无法跳出循环了.


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

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

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

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

D 可以包含任意类


答案 : 关于.java 文件 是可以 包含多个类的, 但是 只能存在一个 public 规定的类 ,且这个类必须和文件名相同

在这里插入图片描述


A 错误 : 一个 .java 文件可以 包含多个 类 ,

B 错误 : .java 文件 不仅可以 又内部类 ,还可以有其他的类 ,注意 只有 一个 public 修饰的类

C 正确

D 错误 : 只能存在 一个 被 public 修饰的类


8. 如下Java语句 , 执行后, x的值是()

double x= 3.0;

int y=5;

x/=--y;

A 3

B 0.6

C 0.4

D 0.75


答案 : 这里 会先执行 --y , y 就变成 了 4 ,然后 3.0 / 4 就为 0.75


9. 下列代码运行后输出结果为()

在这里插入图片描述


A cnt=5

B cnt=2

C cnt=3

D cnt=6


答案 : A , 当前代码考察的是 静态代码块 执行顺序 , 关于静态代码块 ,代码块,构造方法的执行顺序在继承那篇文章是说过的


简单复习一下 :

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

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

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

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


简单来说 就是 静态代码块 > 代码块 > 构造方法 , 题目中的静态变量在 静态代码块之前,所以会先执行 静态变量 (定义) ,然后再进行静态代码块 最终结果 为 5


10. 以下程序的运行结果 :

在这里插入图片描述


A : 666 B : 667 C : 677 D: 676


答案 : 本题很简单 ,就考了 一个 后置++ 的使用 , 这里 第一个 print 语句 先将 6 打印 ,然后 第二个 print 语句 因为 这里是 后置 ++ ,会先使用 a 的值 ,再 ++ ,所以 第二个 print 语句打印的还是 6 , 最后 一个print 语句打印的就是 7

2. 编程题


题目一 : 两种排序方法_牛客题霸_牛客网 (nowcoder.com)

在这里插入图片描述


分析 :

在这里插入图片描述

代码 :

package T_j.T_3_15;


import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();

        String[] str = new String[n];

        for (int i = 0; i < n; i++) {
            str[i] = sc.next();
        }

        // 1、 判断是否符合长度排序
        boolean flagLength = isSortLength(str);


        // 2. 判断是否符合字典序排序

        boolean flagZidian = isSortZidian(str);

        if (flagLength && flagZidian) {
            System.out.println("both");
        } else if (flagZidian) {
            System.out.println("lexicographically");
        } else if (flagLength) {
            System.out.println("lengths");
        } else {
            System.out.println("none");
        }

    }

    public static boolean isSortZidian(String[] str) {
        for (int i = 1; i < str.length; i++) {
            String ret1 = str[i - 1];
            String ret2 = str[i];
            int j = 0;
            for (; j < ret1.length() && j < ret2.length(); j++) {
                char a = ret1.charAt(j);
                char b = ret2.charAt(j);
                // 字符 本质上是 一个 ASCII 码值 所以可以直接比较
                if (a < b) {
                    break;
                } else if (a > b) {
                    return false;
                } else {
                    // a == b 的情况
                    continue;

                }
            }
            // 判断 ret1 和 ret2 前面的字符都相同  如果 ret1 的长度 大于 ret2 的长度 ,那么 不符合要求
            if (j >= ret2.length()) {
                return false;
            }
        }

        return true;
    }

    // 判断长度
    public static boolean isSortLength(String[] str) {
        for (int i = 1; i < str.length; i++) {

            if (str[i - 1].length() >= str[i].length()) {
                return false;
            }

        }
        return true;
    }

}


其实这里 判断字典序排序 可以使用 一个方法 就可以代替我们 一个一个字符的比较 , 这个方法就是 compareTo


将上面 判断是否按照字典序排序的方法换成下面这个 , 一样可以通过.

public static boolean isSortZidian2(String[] str) {
    for (int i = 0; i < str.length - 1; i++) {
        // 用当前字符串和后一个字符比较 , 如果字典序大于后一个,
        // 说明排序混乱直接返回 false
        if (str[i].compareTo(str[i + 1]) > 0) {
            return false;
        }
    }
    return true;
}

题目二 : 求最小公倍数__牛客网 (nowcoder.com)

在这里插入图片描述


本道题 比较简单


第一种方法 : 假设是求 A 和 B 的最小公倍数 先求出最最大公约数 然后 通过 公式 : , A * B / (A 和 B 的最大公约数)


这里 求 最大公约数 就可以使用 辗转相除法 (通过 欧几里得算法得出来的)


规定 : (A,B) 表示 A 和 B 的最大公约数


(A,B) = (A * k + B , B) = (B , A) = (B * K + A , A)


简单解释一下上面 :


比如 我们想要求 10 和 6 的最大公约数 : (10 , 6) = (4 + 6 , 6) = (4,6) = (4, 4 + 2) = (4,2) = (2 +2 , 2) = (2,2) = (2 , 0 + 2) = (2,0) = 2


最终我们的 最大公约数 就是 2 .


辗转相除法 :

m = 10 , n = 6 ,

m % n = 10 % 6 = 4

m = n = 6

n = 4

m % n = 6 % 4 = 2

m = 4

n = 2

m % n = 4 % 2 = 2

m = 2

n = 2

m % n = 2 % 2 = 0

m = n = 2

n = 0

此时我们的最大公约 就求出来了 , 是不是 就与 欧几里得算法 有点像.


有了 最大公约数 , 那么最小公倍数 不就有手机行

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();
        int n = sc.nextInt();

        int mn = m * n;

        int c = m;
        while (n != 0) {
            c = m % n;
            m = n;
            n = c;
        }

        System.out.println(mn / m);
    }
}


另外 还有一种方法 : m * n 得到最大的 公倍数 , 然后 – , 找到最小的 公倍数

    public static void main(String[] args) {
        // 最小公倍数

        Scanner sc = new Scanner(System.in);

        int a = sc.nextInt();

        int b = sc.nextInt();

        int c = a * b;

        int d = c;

        while(c != a && c != b){
            c--;
            if(c % a == 0 && c % b ==0){
                d = c;
            }
        }

        System.out.println(d);
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/1287.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

API-Server的监听器Controller的List分页失效

前言 最近做项目&#xff0c;还是K8S的插件监听器&#xff08;理论上插件都是通过API-server通信&#xff09;&#xff0c;官方的不同写法居然都能出现争议&#xff0c;争议点就是对API-Server的请求的耗时&#xff0c;说是会影响API-Server。实际上通过源码分析两着有差别&am…

<script>标签在html中书写位置-课后程序(JavaScript前端开发案例教程-黑马程序员编著-第1章-课后作业)

【案例1-1】 <script>标签在html中书写位置 一、案例描述 考核知识点 <script>标签可以放在html中什么位置 练习目标 掌握<script>标签放在页面中不同位置的区别。 需求分析 将JavaScript标识放置<Head>... </Head>在头部之间&#xff0c;使之…

LInux指令之文件目录类

文章目录一、帮助指令二、文件目录类ls指令cd指令 &#xff08;切换目录&#xff09;mkdir指令&#xff08;创建目录&#xff09;rmdir指令&#xff08;删除目录&#xff09;touch指令&#xff08;创建空文件&#xff09;cp指令(拷贝文件)rm指令mv指令cat指令(查看)more指令les…

GEE:计算1990-2021年的指数最大值和最小值,并根据最大最小值对每一副影像归一化

本文记录了在GEE平台上计算影像集合中所有像素的最大值和最小值。并且根据该最大最小值对所有影像进行最大最小值归一化。以SAVI为例,记录了主要函数的使用方法和代码。 结果如图所示, 文章目录 一、计算每一副影像的最大值或者最小值,并将最值保存在 List 中二、计算 Lis…

AD域安全攻防实践(附攻防矩阵图)

以域控为基础架构&#xff0c;通过域控实现对用户和计算机资源的统一管理&#xff0c;带来便利的同时也成为了最受攻击者重点攻击的集权系统。 01、攻击篇 针对域控的攻击技术&#xff0c;在Windows通用攻击技术的基础上自成一套技术体系&#xff0c;将AD域攻防分为信息收集、权…

安装Docker

Docker分为CE和EE两大版本。CE即社区版&#xff08;免费&#xff0c;支持周期7个月&#xff09;&#xff0c;EE即企业版&#xff0c;强调安全&#xff0c;付费使用&#xff0c;支持周期 24 个月。 Docker CE 分为 stable test 和 nightly 三个更新频道。 官方网站上有各种环境…

Nacos 注册中心 - 健康检查机制源码

目录 1. 健康检查介绍 2. 客户端健康检查 2.1 临时实例的健康检查 2.2 永久实例的健康检查 3. 服务端健康检查 3.1 临时实例的健康检查 3.2 永久实例服务端健康检查 1. 健康检查介绍 当一个服务实例注册到 Nacos 中后&#xff0c;其他服务就可以从 Nacos 中查询出该服务…

LeetCode234_234. 回文链表

LeetCode234_234. 回文链表 一、描述 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,2,1] 输出&#xff1a;true示例 2&…

Day920.结构化日志业务审计日志 -SpringBoot与K8s云原生微服务实践

结构化日志&业务审计日志 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于结构化日志&业务审计日志的内容。 1、什么是结构化日志 结构化日志&#xff08;Structured Logging&#xff09;是一种将日志信息组织为结构化数据的技术。 传统的日志通常是一些文…

UE实现建筑分层抽屉展示效果

文章目录 1.实现目标2.实现过程2.1 基础设置2.2 核心函数3.参考资料1.实现目标 使用时间轴对建筑楼层的位置偏移进行控制,实现分层抽屉的动画展示效果。 2.实现过程 建筑抽屉的实现原理比较简单,即对Actor的位置进行偏移,计算并更新其世界位置即可。这里还是基于ArchVizExp…

Mybatis报BindingException:Invalid bound statement (not found)异常

一、前言 本文的mybatis是与springboot整合时出现的异常&#xff0c;若使用的不是基于springboot&#xff0c;解决思路也大体一样的。 二、从整合mybatis的三个步骤排查问题 但在这之前&#xff0c;我们先要知道整合mybatis的三个重要的工作&#xff0c;如此才能排查&#x…

SDG,ADAM,LookAhead,Lion等优化器的对比介绍

本文将介绍了最先进的深度学习优化方法&#xff0c;帮助神经网络训练得更快&#xff0c;表现得更好。有很多个不同形式的优化器&#xff0c;这里我们只找最基础、最常用、最有效和最新的来介绍。 优化器 首先&#xff0c;让我们定义优化。当我们训练我们的模型以使其表现更好…

MySQL中事务的相关问题

事务 一、事务的概述&#xff1a; 1、事务处理&#xff08;事务操作&#xff09;&#xff1a;保证所有事务都作为一个工作单元来执行&#xff0c;即使出现了故障&#xff0c;都不能改变这种执行方式。当在一个事务中执行多个操作时&#xff0c;要么所有的事务都被提交(commit…

[ROC-RK3568-PC] [Firefly-Android] 10min带你了解Camera的使用

&#x1f347; 博主主页&#xff1a; 【Systemcall小酒屋】&#x1f347; 博主追寻&#xff1a;热衷于用简单的案例讲述复杂的技术&#xff0c;“假传万卷书&#xff0c;真传一案例”&#xff0c;这是林群院士说过的一句话&#xff0c;另外“成就是最好的老师”&#xff0c;技术…

再也不想去字节跳动面试了,6年测开面试遭到这样打击.....

前几天我朋友跟我吐苦水&#xff0c;这波面试又把他打击到了&#xff0c;做了快6年软件测试员。。。为了进大厂&#xff0c;也花了很多时间和精力在面试准备上&#xff0c;也刷了很多题。但题刷多了之后有点怀疑人生&#xff0c;不知道刷的这些题在之后的工作中能不能用到&…

【Python/Opencv】图像权重加法函数:cv2.addWeighted()详解

【Python/Opencv】图像权重加法函数&#xff1a;cv2.addWeighted()详解 文章目录【Python/Opencv】图像权重加法函数&#xff1a;cv2.addWeighted()详解1. 介绍2. API3. 代码示例与效果3.1 代码3.2 效果4. 参考1. 介绍 在OpenCV图像加法cv2.add函数详解详细介绍了图像的加法运…

字符串匹配【BF、KMP算法】

文章目录:star:BF算法代码实现BF的改进思路:star:KMP算法&#x1f6a9;next数组&#x1f6a9;代码实现优化next数组最终代码⭐️BF算法 BF算法&#xff0c;即暴力(Brute Force)算法&#xff0c;是普通的模式匹配算法&#xff0c;BF算法的思想就是将主串S的第一个字符与模式串P…

三、Python 操作 MongoDB ----非 ODM

文章目录一、连接器的安装和配置二、新增文档三、查询文档四、更新文档五、删除文档一、连接器的安装和配置 pymongo&#xff1a; MongoDB 官方提供的 Python 工具包。官方文档&#xff1a; https://pymongo.readthedocs.io/en/stable/ pip安装&#xff0c;命令如下&#xff1…

JVM调优,调的是什么?目的是什么?

文章目录前言一、jvm是如何运行代码的&#xff1f;二、jvm的内存模型1 整体内存模型结构图2 堆中的年代区域划分3 对象在内存模型中是如何流转的?4 什么是FULL GC,STW? 为什么会发生FULL GC?5 要调优,首先要知道有哪些垃圾收集器及哪些算法6 调优不是盲目的,要有依据,几款内…

HttpRunner3.x(1)-框架介绍

HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架&#xff0c;只需编写维护一份 YAML/JSON 脚本&#xff0c;即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求。主要特征继承的所有强大功能requests &#xff0c;只需以人工方式获得乐趣即可处理HTTP&#xf…