Java每日一练,技术成长不间断

目录

  • 题目
    • 1.下列关于继承的哪项叙述是正确的?
    • 2.Java的跨平台特性是指它的源代码可以在多个平台运行。()
    • 3.以下 _____ 不是 Object 类的方法
    • 4.以下代码:
    • 5.下面哪个流类不属于面向字符的流()
      • 总结

题目

选自牛客网

1.下列关于继承的哪项叙述是正确的?

A.在java中类允许多继承
B.在java中一个类只能实现一个接口
C.在java中一个类不能同时继承一个类和实现一个接口
D.java的单一继承使代码更可靠

正确答案:D

正确答案是D。在Java中,类的单一继承机制确实有助于提高代码的可靠性和可维护性。单一继承意味着一个类只能直接继承一个父类,这种设计简化了类之间的继承关系,避免了多继承可能带来的复杂性和二义性问题。例如,当一个类从多个父类继承相同的方法时,如果没有明确的规则来决定优先级,可能会导致运行时错误或不可预测的行为。

Java的设计者选择单一继承作为语言的基础特性,主要是为了简化语言的语义,减少潜在的编程错误,并使类层次结构更加清晰。虽然Java不支持类的多继承,但它通过接口的机制允许类实现多个接口,以此来达到某种程度的多继承功能,即一个类可以实现多个接口,从而继承多个抽象行为。这种方式既保持了代码的简洁性,又提供了足够的灵活性来满足复杂的设计需求。

因此,选项D“Java的单一继承使代码更可靠”是正确的描述。

对于A来说,这种多重继承是通过接口实现的,而不是类。也就是说,Java允许一个类实现多个接口,这可以被视为一种“横向”的多重继承,因为一个类可以从多个接口继承行为,但这些接口之间没有直接的继承关系。

而当谈到“多继承”时,通常指的是一个类直接继承多个父类的情况,这在Java中是不被支持的。Java设计者为了避免多继承带来的复杂性和潜在问题(如钻石问题,即两个父类有共同的父类导致方法选择的二义性),选择了单一继承的模型。在单一继承模型中,每个非抽象类只能继承一个直接父类,这有助于保持代码的清晰性和可维护性。

然而,Java通过接口的机制提供了一种变通的解决方案,允许类实现多个接口,从而获得多个抽象方法的定义。接口可以继承其他接口,形成层次结构,这在一定程度上模拟了多重继承的效果,但没有直接的类到类的多继承所带来的问题。

因此,Java确实支持通过接口实现的“多重继承”,但不支持类的“多继承”。这样的设计权衡了灵活性和代码的简洁性,是Java语言设计哲学的一部分。

2.Java的跨平台特性是指它的源代码可以在多个平台运行。()

A.正确
B.错误

正确答案:B
Java的跨平台特性并不直接指源代码可以在多个平台直接运行,而是指编译后的字节码(.class文件)可以在安装了Java虚拟机(JVM)的任何平台上运行。Java源代码首先被编译成平台无关的字节码,而不是特定平台的机器代码。字节码是一种中间语言,由JVM解释执行,而JVM则为不同的操作系统和硬件平台提供了相应的实现。这样,只要目标平台上安装了兼容的JVM,Java程序就可以在该平台上运行,而无需重新编译。

Java的跨平台特性是通过“一次编写,到处运行”(Write Once, Run Anywhere,
简称WORA)的原则实现的,这使得开发者能够在不同的操作系统和硬件架构上部署和运行相同的Java程序,而无需针对每个平台进行修改或重新编译。因此,Java的跨平台特性实际上是指编译后的字节码可以在多个平台上运行,而非源代码。

综上所述,Java的跨平台特性是基于JVM的,它允许编译后的Java程序在多种平台上运行,但源代码本身并不直接在不同平台运行,而是需要先被编译成字节码。

3.以下 _____ 不是 Object 类的方法

A.clone()
B.finalize()
C.toString()
D.hasNext()

正确答案是D,hasNext()

在Java中,Object类是所有类的基类,它提供了一些基本的方法,如clone()用于对象的浅拷贝,finalize()用于垃圾回收前的资源清理(尽管不推荐使用,且在很多现代JVM实现中已被弃用),以及toString()用于返回对象的字符串表示。这些方法都是Object类的成员方法。

然而,hasNext()方法并不是Object类的一部分,而是Iterator接口中的方法。Iterator接口用于遍历集合中的元素,hasNext()方法用于检查迭代器是否还有更多的元素可以迭代。因此,hasNext()方法与Object类无关,它属于集合框架的一部分,通常在实现Iterable接口的类或使用迭代器模式的类中找到。

因此,选项D,hasNext(),不是Object类的方法。

4.以下代码:

public class Test {
private static int j = 0;

private static Boolean methodB(int k) {j += k;return true;
}public static void methodA(int i) {boolean b;b = i < 10 | methodB(4);b = i < 10 || methodB(8);}public static void main(String args[]) {methodA(0);System.out.println(j);
}

}
结果是什么?
A.The program prints”0”
B.The program prints”4”
C.The program prints”8”
D.The program prints”12”
E.The code does not complete.

正确答案:B这段代码的主要逻辑在于methodA方法中的两个布尔表达式,以及methodB方法对静态变量j的修改。我们来逐步分析:

  1. methodB方法接收一个整数参数k,将其加到静态变量j上,并返回true。每次调用methodB都会增加j的值。

  2. methodA方法中的第一个布尔表达式b = i < 10 | methodB(4);使用了按位或|操作符,但是Java中布尔运算通常使用逻辑运算符&&||。这里按位或|实际上会将布尔值转换为整数,然后进行位运算。不过,由于methodB总是返回true,在布尔上下文中会被解释为非零值,因此这个表达式总是为真,methodB(4)会被调用,使得j的值增加4。

  3. 第二个布尔表达式b = i < 10 || methodB(8);使用了逻辑或||操作符,这意味着如果i < 10为真(在i为0时确实为真),methodB(8)不会被调用,因为左侧表达式已经确定了整个表达式的真值。因此,这里methodB(8)不会被执行。

  4. 最终,在main方法中调用methodA(0)methodB(4)会被调用一次,使得j的值从0变为4。

  5. 打印语句System.out.println(j);将输出此时j的值,也就是4。

因此,正确答案是B,程序将打印"4"。

5.下面哪个流类不属于面向字符的流()

A.BufferedWriter
B.FileInputStream
C.ObjectInputStream
D.InputStreamReader

正确答案是B和C,FileInputStreamObjectInputStream

面向字符的流(即字符流)在Java中主要用于处理文本数据,它们操作的是字符,而不是字节。字符流类通常继承自ReaderWriter。在提供的选项中:

  • BufferedWriter是面向字符的流,它继承自Writer类,用于提高写入字符数据的效率。

  • FileInputStream不是面向字符的流,而是面向字节的流,它继承自InputStream类,用于读取文件中的原始字节数据。

  • ObjectInputStream也不是面向字符的流,它是面向对象的流,用于反序列化对象,即从流中读取对象。它继承自InputStream类,处理的是字节数据,但其目的是读取和重建Java对象。

  • InputStreamReader是面向字符的流,它继承自Reader类,用于将字节流转换为字符流,通常用于读取使用特定字符集编码的文本数据。

因此,FileInputStreamObjectInputStream不属于面向字符的流,而属于面向字节的流或面向对象的流。选项B和C是正确的。

总结

通过持续的实践来巩固知识和提升技术水平。加油!!!请添加图片描述

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

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

相关文章

Word中的希腊字符和常用字符对应的字符代码

问题描述&#xff1a; 每次想要论文word中&#xff0c;插入某些符号&#xff0c;找这些符号太费时间了&#xff0c;于是想着把一些常用的符号列写出来&#xff0c;方便后续查找。 通过查找下面想要插入的符号&#xff0c;选择字符代码插入即可。 symbol字体下 α \alpha α&a…

牛客JS知识题库解析(一)

目录 一、call和apply知识点 二、数组concat连接方法 三、call和apply与concat连用 四、正则表达式 五、match方法 六、数据类型 七、逗号表达式 八、toStirng()方法 九、&&和>符号的权重 总结 一、call和apply知识点 call和apply都会自动调用前面的函数&#xff0…

短链接假量过滤:让推广数据回归真实

在当今互联网技术飞速发展与普及的时代&#xff0c;数字营销已然成为企业推广的关键利器&#xff0c;而短链接在其中更是扮演着不可或缺的角色。它能把冗长、复杂的 URL 巧妙转化为简短且易记的链接&#xff0c;极大地便利了分享和传播。 就拿某公司新上市一款产品来说&#x…

数学规划模型★★★★★

该博客为个人学习清风建模的学习笔记&#xff0c;代码全部摘自清风老师&#xff0c;部分课程可以在B站&#xff1a;【强烈推荐】清风&#xff1a;数学建模算法、编程和写作培训的视频课程以及Matlab等软件教学_哔哩哔哩_bilibili 目录 1概述 1.1什么是数学规划 1.2数学规划…

Java高并发编程详解教程(对高并发更深一层的领悟和体会 电子版)

前言 第一部分主要阐述Thread的基础知识&#xff0c;详细介绍线程的API使用、线程安全、线程间数据通信以及如何保护共享资源等内容&#xff0c;它是深入学习多线程内容的基础。 在第二部分中之所以引人 ClassLoader&#xff0c;是因为 ClassLoader 与线程不无关系&#xff0…

[GYCTF2020]FlaskApp (pin码,jinja2绕过注入)

题目就是flask 下面是判断模版注入的方法 a{*comment*}b和{{7*7}}base64编码后解码都报错no&#xff0c;无法判断模版引擎 直接用下jinja2的试一试&#xff0c;把编码后的密文拿去解码&#xff0c;payload&#xff1a; {{"".__class__mro(2)__subclasses__()}} 报…

嵌入式革命:NI Linux Real-Time 和 ARM。

考虑为您的下一个应用程序采用 NI 的最新操作系统 在 NIWeek 大会上&#xff0c;美国国家仪器公司发布了一款新操作系统&#xff1a;NI Linux Real-Time。从全体会议、NIWeek 会议和媒体报道来看&#xff0c;这款新实时操作系统 (RTOS) 的发布显然是一项重大成就。无需担心这款…

优化数据处理效率,解读 EasyMR 大数据组件升级

EasyMR 作为袋鼠云基于云原生技术和 Hadoop、Hive、Spark、Flink、Hbase、Presto 等开源大数据组件构建的弹性计算引擎。此前&#xff0c;我们已就其展开了多方位、多角度的详尽介绍。而此次&#xff0c;我们成功接入了大数据组件的升级和回滚功能&#xff0c;能够借助 EasyMR …

LSTM详解总结

LSTM&#xff08;Long Short-Term Memory&#xff09;是一种用于处理和预测时间序列数据的递归神经网络&#xff08;RNN&#xff09;的改进版本。其设计初衷是为了解决普通RNN在长序列训练中出现的梯度消失和梯度爆炸问题。以下是对LSTM的详细解释&#xff0c;包括原理、公式、…

不能错过的十大人工智能开源库

作者&#xff1a;老余捞鱼 原创不易&#xff0c;转载请标明出处及原作者。 写在前面的话&#xff1a; 随着人工智能&#xff08;AI&#xff09;的不断进步&#xff0c;掌握最新的工具、框架和研究变得前所未有的重要。虽然 TensorFlow 和 PyTorch 等知名软件库占据了头…

“Assistants“ has no attribute “files“ in openAI assistants

题意&#xff1a;在 OpenAI 的助手&#xff08;assistants&#xff09;中&#xff0c;“Assistants” 没有 “files” 这个属性。 问题背景&#xff1a; assistant_file client.beta.assistants.files.create(assistant_id st.session_state.assistant_id,file_id st.sessi…

TongHttpServer 简介

1. 概述 随着网络技术的飞速发展,高并发大用户场景越来越普遍,单一应用服务节点已经不能满足并发需求,为了提高整个系统可靠性,扩展性,吞吐率,通常将多个应用服务器通过硬负载/软负载组成集群,负载均衡器根据不同负载算法将请求分发到各个应用服务器节点。 Tong…

idea项目配置本地仓库apache-maven(离线电脑)

接上一篇 idea项目配置本地仓库apache-maven步骤 按照上一篇在外网电脑从阿里云下载好驱动包之后&#xff0c;将本地仓库拷贝到无法联网的电脑中&#xff0c;安装maven&#xff0c;修改settings&#xff0c;主要修改localRepository指向的maven仓库地址&#xff0c;以及mirror里…

基于单片机控制的家电产品硬件故障诊断

摘要&#xff1a; 在现阶段家用电子产品生产制造的过程中&#xff0c;需要应用到非常多的单片机以及单片机控制技术&#xff0c;单片机凭借着自身体积小、反应快、功耗低的优势迅速抢占了家电产品的市场。并且在单片机实际的应用过程中&#xff0c;通过对单片机控制技术的掌握可…

WordPress建站教程:零基础新手小白如何B2B外贸建站

如果你想通过独立站拿询盘获取订单&#xff0c;那么必须先要有一个自己的网站&#xff0c;所以建站是你绕不过去的一件事。对于零基础的新手小白来说&#xff0c;如何从零开始搭建一个B2B外贸网站呢&#xff1f;本文将为你提供一份详细的WordPress建站教程&#xff0c;帮助你从…

UE4 Rider错误处理 Error: Project is not specified

当看到Error: Project is not specified报错&#xff0c;并且看到调试器中存在红色叉叉时&#xff0c;应该如何处理&#xff1f; 这是因为 “Project” 栏目中的原先的值失效了。 解决方法&#xff1a;在Project栏中&#xff0c;继续找到它的正确的值&#xff0c;在上图中可以…

<Rust>使用rust实现crc16_modbus校验码生成?

前言 本文是使用rust代码来实现crc16 modbus校验码的输出。 概述 crc16 modbus算法简介: 代码实现: crc16 modbus是crc校验码的其中一种计算方式,通常用于modbus类通讯的数据校验上。 其计算步骤如上面的图片所示,通常此校验算法用在工控行业比较多,如一些支持串口通讯…

(第三期)书生大模型实战营——书生大模型全链路开源开放体系

任务及教程来自书生大模型实战营https://github.com/InternLM/Tutorial

ESP32-C2 烧录

写复杂了 烧录程序需要 io8 上拉 io9下载 &#xff08;加10k电阻下拉&#xff09; 烧录口为uart0 &#xff08;烧at固件&#xff0c;输出为uart1) chip_en 加10k 1uf(o.1uf) 电容电阻&#xff0c;加个开关 烧录好后 io9县空&#xff0c;从flash启动 idf.py -p com24不知…

本田Honda EDI项目案例:非EDI标准的数据格式转换与传输

近期知行帮助东风本田Honda的供应商E公司成功实施EDI项目&#xff0c;与以往采用X12、EDIFACT等EDI标准的项目不同&#xff0c;Honda向其供应商提供API接口&#xff0c;以JSON的格式传输库存信息以及生产计划。 EDI需求概览 Honda提供公开的WSRM系统供应商API接口&#xff0c…