java每一练(3)

news2024/12/23 7:01:17

java每日一练(3)

单选部分 :

1.以下代码运行输出的是

public class Person{
    private String name = "Person";
    int age=0;
}

class Child extends Person{
    public String grade;
    public static void main(String[] args){
    Person p = new Child();
    System.out.println(p.name);
    }
}

A : 输出 : Person B :没有输出 C :编译出错 D : 运行出错

答案 C :


这里我们通过 Person p = new Child() , 此时相当于父类引用引用了子类对象, 但是我们的 name字段是被private修饰的,只能在Person内使用,所以这里会直接报错,也就是编译出错 , 通过编译器 也就非常明显了.

在这里插入图片描述


2.以下程序的输出结果为

class Base{
    public Base(String s){
        System.out.print("B");
    }
}
public class Derived extends Base{
    public Derived (String s) {
        System.out.print("D");
    }
    public static void main(String[] args){
        new Derived("C");
    }
}

A : BD

B : DB

C : C

D : 编译错误

这里考的就是继承中的 创建子类对象时会通过子类的构造方法先帮助父类进行构造, 但题目中的父类拥有带一个参数的构造方法, 所以此时就不会提供不带参数的构造方法,但因为我们的子类中没有通过super(s) 帮助父类进行构造所以此时就会报错编译错误.

放在 编译器上也能很明显的看到 :

在这里插入图片描述

3.下面关于构造方法的说法不正确的是 ()

A 构造方法也属于类的方法,可以创建对象的时候给成员变量赋值

B 构造方法不可以重载

C 构造方法没有返回值

D 构造方法一定要和类名相同

这里 B 一看就是错误的,这里我们的构造方法可以有多个, 不带参数 ,带一个参数 等,此时不就满足了我们重载的定义了吗,

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


4.在异常处理中,以下描述不正确的有


A try块不可以省略

B 可以使用多重catch块

C finally块可以省略

D catch块和finally块可以同时省略


答案 : 这里 catch 是不能省略的,本来就是通过catch来捕获我们的异常,如果它都省略了,那么咋来处理异常呢? 所以很明显直接选 D

finally :是可以省略的,如果加上了finally 那么就一定会执行 finally中的代码.


5.下列描述中,错误的是


A SQL语言又称为结构化查询语言

B java中”static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问

C 面向对象开发中,引用传递意味着传递的并不是实际的对象,而是对象的引用,因此,外部对引用对象所做的改变不会反映到所引用的对象上

D java是强类型语言,javascript是弱类型语言

E 面向对象的三大特性包括:封装,继承,多态

答案 : C , 这里外部对引用对象的改变会反映到我们的对象上 。

在这里插入图片描述


6.下列哪种说法是正确的?

A 实例方法可直接调用超类的实例方法

B 实例方法可直接调用超类的类方法

C 实例方法可直接调用本类的类方法

D 实例方法可直接调用其他类的实例方法


答案 : A : 这里我们实例方法想要调用超类(父类)的实例方法需要通过 super. 来调用,所以这里是错误的

B : 实例方法不能直接调用超类的 类方法(也就是 被 static 修饰的方法) ,这里就需要通过类名进行调用 如 :Test.sum

C :正确,我们可以在同一个类中直接调用

在这里插入图片描述


D : 我们实例方法去调用其他类的实例方法需要其他类的对象才能调用,所以D也是错的


7.请问输出的结果是:

String str1="hello";

String str2="he"+ new String("llo");

System.out.println(str1==str2);


A true

B 都不对

C null

D false


这里主要考察 字符串常量池 与 == 比较是否为一个对象, str1 就会将 hello 放入到字符串常量池中,但是 str2 中 he 拼接了 一个 llo 就会产生一个新的对象

所以 == 两边 不是同一个对象,所以 打印的 结果为 false


8.程序读入用户输入的一个值,要求创建一个自定义的异常,如果输入值大于 10 ,使用 throw 语句显式地引
发异常,异常输出信息为 ”something’swrong!” ,语句为()


A if(i>10)throw new Exception(“something’swrong!”);

B if(i>10)throw Exception e(“something’swrong!”);

C if(i>10) throw new Exception e(“something’swrong!”);

D if(i>10)throw Exception( “something’swrong!”);


这里主要考 如何抛出异常, 很明显答案 为 A


9.以下关于集合类 ArrayList 、 LinkedList 、 HashMap 描述错误的是()

A HashMap实现Map接口,它允许任何类型的键和值对象,并允许将null用作键或值

B ArrayList和LinkedList均实现了List接口

C 添加和删除元素时,ArrayList的表现更佳

D ArrayList的访问速度比LinkedList快


答案 : C : ArrayList底层是一个数组,每次增加和删除元素都需要挪动元素,时间复杂度能达到 O(N)

A : 在 Map 那章说过, HashMap 是可以 将null当作 键和值的

B : ArrayList 和 LinkedList 是实现了List接口的, 这里再初始数据结构那文,有一张图 上面就可以看到

D : 大部分情况下 ArrayList是比 LinkedList快的,因为我们的数组是执行随机访问的。


10.Java程序中的类名称必须与存放该类的文件名相同。


A 对 B 错

这里的 B 就与我们的存放该类的文件名不同,所以这里就为 B

在这里插入图片描述

编程题


题目一 :字符串中找出连续最长的数字串_牛客题霸_牛客网 (nowcoder.com)

在这里插入图片描述

本题比较简单 直接来看代码 :

   public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        int left = 0;
        int right = 0;
        int count = 0, max = 0;
        String str2 = new String();
        for (int i = 0; i < str.length(); i++) {

            if (str.charAt(i) < '0' || str.charAt(i) > '9') {
                // 此时是字母部分 :
                continue;
            }
            // 此时是数字部分
            left = i;
            while (i < str.length() && !(str.charAt(i) < '0' || str.charAt(i) > '9')) {
                i++;
                count++;
            }
            // 此时 走到了 i 为字母的地方
            count = i - left;
            right = i;
            if (count > max) {
                // 更新 数字字符串
                str2 = str.substring(left, right);
                max = count;
                count = 0;
            }
            i = i - 1;

        }
        System.out.println(str2);
    }


题目二 :数组中出现次数超过一半的数字_牛客题霸_牛客网 (nowcoder.com)

在这里插入图片描述


本题也非常简单, 我们只需要排序后 ,取中间的数即可,(树超过数组长度的一半所以,必定为中间数), 但正因为此我们需要让排序达到最优的时间复杂度就可以采用快排 :注意 这里题目说了数组中有一个数字出现的次数超过了数字长度的一半所以这里我们省略再遍历一次,去判断这个中间数是否真的出现次数大于 numbers.length / 2


最好自己实现一下我们的快排 :

  public static int MoreThanHalfNum_Solution(int[] numbers) {
        // write code here
        if (numbers == null || numbers.length == 0) {
            return -1;
        }
        quickSort(numbers, 0, numbers.length - 1);
        return numbers[numbers.length / 2];
    }


    public static void swap(int[] arr, int start, int end) {
        int tmp = arr[start];
        arr[start] = arr[end];
        arr[end] = tmp;
    }

    public static void quickSort(int[] arr, int start, int end) {
        if (start >= end) {
            return;
        }
        // 三数取中
        int mid = fidMid(arr, start, end);
        swap(arr, start, mid);
        int p = fid(arr, start, end);
        quickSort(arr, start, p - 1);
        quickSort(arr, p + 1, end);
    }

    public static int fidMid(int[] arr, int start, int end) {
        int mid = start + ((end - start) >>> 1);
        if (arr[start] < arr[end]) {
            if (arr[mid] < arr[start]) {
                return start;
            } else if (arr[end] < arr[mid]) {
                return end;
            } else {
                return mid;
            }
        } else {
            // arr[start] > arr[end]
            if (arr[mid] < arr[end]) {
                return end;
            } else if (arr[start] < arr[mid]) {
                return start;
            } else {
                return mid;
            }
        }
    }

    // 找基准
    public static int fid(int[] arr, int start, int end) {
        int tmp = arr[start];
        while (start < end) {
            while (start < end && arr[end] >= tmp) {
                end--;
            }
            arr[start] = arr[end];
            while (start < end && arr[start] <= tmp) {
                start++;
            }
            arr[end] = arr[start];
        }
        // 此时 end == start
        arr[end] = tmp;
        return end;
    }


另外一种思路 :


众数:就是出现次数超过数组长度一半的那个数字
如果两个数不相等,就消去这两个数,最坏情况下,每次消去一个众数和一个非众数,那么如果存在众数,
最后留下的数肯定是众数。

public class Solution {
    public int MoreThanHalfNum_Solution(int[] array) {
        if (array == null || array.length == 0) {
            return -1;
        }
        int result = array[0];
        int times = 1;
        for (int i = 1; i < array.length; i++) {
            if (times != 0) {
                // 向后判断  result 与 array[i] 是否相同
                if (result == array[i]) {
                    times++;
                } else {
                    // 此时不相等 ,如果 times 为 0 下次进入 if 语句就会直接走到
                    // else 更新 result 
                    times--;
                }
            } else {
                // 此时 times == 0 就需要更新 我们的 result
                result = array[i];
                times = 1;
            }
        }
        // 此时 遍历完数组 result 就是我们的中间数 另外需要判断一下
        times = 0;
        for (int i = 0; i < array.length; i++) {
            if (array[i] == result) {
                times++;
            }
        }
        return times > array.length / 2 ? result : 0;
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaWeb之Maven学习

目录Maven 简介仓库的分类Maven 坐标Maven 常用命令Maven 生命周期依赖管理删除Maven 项目导入项目最后Maven 简介 Maven的作用&#xff1a; Maven是专门用于管理和构建Java项目的工具 它的主要功能有&#xff1a; 提供了一套标准化的项目结构 提供了一套标准化的构建流程…

sqli-labs/Less-60

这一关还是一如既往的5次机会 一如既往的是以id作为注入点的 我们还是按照先前的做法第一轮先去获取一下注入类型以及决定下一轮要使用的注入方法 第二轮在进行各种爆破操作 首先输入id1 and 12判断注入类型是否属于数字型 回显如下 属于字符型 然后输入1 回显如下 说明不属于…

看世界杯效应下的中东市场,开发攻略来了

卡塔尔世界杯正如火如荼开展中&#xff0c;作为首次在中东地区举办的世界杯&#xff0c;它吸引了全世界目光的同时&#xff0c;也带来了一大波消费和需求。 先看一则新闻&#xff0c;在11月22日晚&#xff0c;沙特队在卡塔尔世界杯首战上演惊天大逆转&#xff0c;以2比1击败夺…

深入浅出DDD编程

作者 | 刘嘿嘿、离夏、立羽 导读 最近几年&#xff0c;微服务拆分大行其道&#xff0c;在业务越来越复杂的情况下&#xff0c;许多业务纷纷抛弃了传统单体架构&#xff0c;拥抱微服务。但随着微服务的拆分结束&#xff0c;大家又发现了新的问题&#xff0c;比如服务间逻辑复杂&…

计算机毕业设计之java+ssm峰值预警停车场管理系统

项目介绍 随着城市建设与经济的不断发展,城市车辆的数量也不断增涨,为解决停车问题修建停车场。基于经营、安全、管理等多角度的考虑&#xff0c;希望在目前传统的大型车库管理系统中有机地结合车牌识别技术&#xff0c;以求得日后在停车库运营时更安全、管理上更细致、经营中…

SuperMap 云原生常见问题解决办法-keycloak启动异常

有些客户在使用iManager for K8S 云套件的产品的时候&#xff0c;偶尔会遇到机器异常重启的情况&#xff0c;比如说服务器断电&#xff0c;重启后可能会出现云套件启动异常的情况&#xff0c;比如说keycloak启动不了&#xff0c;一直抛出异常导致服务无法正常使用。本篇文章就结…

MongoDB故障转移案例详细操作

MOngoDB故障转移 文章目录MOngoDB故障转移1.数据库提权操作1.1.使用命令查询主库信息1.2.给db02升级权重1.3.修改完成后进行加载配置1.4.主库执行降级操作2.恢复主库权限2.1.先给库权重降低2.2.执行降级命令2.3.恢复成功MongoDB的主从目前是我们在配置副本集的时候设置但是如果…

强化深度学习中使用Dyna-Q算法确定机器人问题中不同规划的学习和策略实战(超详细 附源码)

需要源码请点赞关注收藏后评论区留下QQ并且私信~~~ 一、模型、学习、规划简介 1&#xff1a;模型 Agent可以通过模型来预测环境并做出反应&#xff0c;这里所说的模型通常指模拟模型&#xff0c;即在给定一个状态和动作时&#xff0c;通过模型可以对下一状态和奖赏做出预测 …

学生个人网页设计作品 学生个人网页模板 简单个人主页成品 个人网页制作 HTML学生个人网站作业设计 汉语言文学设计题材网页

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

在Postman中使用 FineBI提供的接口获取数据

FineBI 通过各种样式如表格、图表等来呈现数据&#xff0c;进行统计分析。 FineBI 是 B/S 架构的纯 Java 软件。 这些数据表格或图表&#xff0c;用户在开发系统的时候也可以自己编程来实现&#xff0c;FineBI也提供了相应的接口。 在Postman中使用 FineBI提供的接口获取数据…

数据可视化软件使用

一 前言 数据可视化平台是通过三维表示技术来表达复杂的信息&#xff0c;实现海量数据的立体体现。可视化技术借鉴人脑的视觉显示能力&#xff0c;通过挖掘重要数据之间的关系&#xff0c;揭示数据中隐藏的关联和发展趋势&#xff0c;从而提高数据的使用效率。可视化平台使人们…

在这个艰难的环境下,我裸辞了

2022年&#xff0c;疫情期间&#xff0c;工作了22年的我&#xff0c;从软件研发管理的相关工作中&#xff0c;辞职创业&#xff0c;开启我的独立咨询顾问生涯。很多人不解和迷惑&#xff0c;也有朋友关切的询问我的近况&#xff0c;就差用手来摸我的额头以判断我是否发烧了。因…

[附源码]SSM计算机毕业设计江苏人才信息管理系统JAVA

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

.net----委托和事件

委托和事件委托声明实例化调用将类型安全的函数指针(方法)作为其他方法的参数进行传递&#xff0c;从而实现函数回调方法委托&#xff1a;匿名方法委托多播委托委托&#xff1a;委托的异步调用委托&#xff1a;委托的兼容性事件事件实际上是委托的一种特殊形式&#xff0c;C#使…

软考-系统架构师-计算机与网络基础知识-数据库系统基础知识

文章目录1.关系数据库基础1.1关系型数据库基础1.1.1数据库的结构与模式1.1.2实体联系E-R模型1.1.3数据的规范化1.1.4事务管理1.1.5并发控制1.1.6数据库的备份和恢复2.关系数据库设计2.1数据库设计的特点2.2数据库的设计方法2.3数据库设计的基本步骤3.分布式数据库系统3.1分布式…

simulink中比scope模块还好用的平替出图工具?

今天在捣拾scope模块比较几个数据大小&#xff0c;拉坐标线非常的不方便&#xff0c;而且对于调参时几组数据的比较非常繁琐&#xff0c;这里介绍以下simulink中自带的数据检查器(Data Inspector)&#xff0c;个人认为比scope模块方便查看出图结果&#xff0c;有帮助的童鞋们赶…

算法设计与分析 SCAU11090 最大m段乘积和最小m段和(优先做)

11090 最大m段乘积和最小m段和&#xff08;优先做&#xff09; 时间限制:1000MS 代码长度限制:10KB 提交次数:0 通过次数:0 题型: 编程题 语言: G;GCC;VC;JAVA Description 一个n位十进制整数S&#xff0c;若将S划分为m个段&#xff0c;则可以得到m个整数。 (1)这m个整数的…

有限元在游乐设施中的应用-焊缝计算

作者 | 九峰知己千杯少 一、前言 游乐设施金属结构所采用的连接方式有焊接连接、铆钉连接、普通螺栓连接和高强螺栓连接4种&#xff0c;将两块分离的金属其接头部分局部加热到熔化或半熔化状态&#xff0c;采取施加压力或不加压&#xff0c;或填充其他金属&#xff0c;利用原…

C#上位机系列(4)—示波器一新窗口的建立

本文是讲解C#.net平台的Winform框架下的第四个内容&#xff0c;手把手介绍上位机项目的创建方式以及一些写软件时常用的功能&#xff0c;讲解从零开始的每一个步骤。 本次介绍上位机中新窗口的建立方式和软件示波器的代码原理。 从此节开始&#xff0c;所有代码附后 1.新窗口…

element-plus中menu的基本知识点

在vue后台管理系统中&#xff0c;menu是经常会用到的必不可少的导航组件&#xff0c;这个组件如果是单纯的去使用&#xff0c;很简单。但是在实际开发过程中&#xff0c;与其有关的路由相结合使用&#xff0c;还是容易搞混一些东邪&#xff0c;所以想在这里记录一下。 从产品的…