因为练习是word,本文我只是写了里面的部分内容,如果想查阅完整内容或者获取word以及PDF,请

关注微信公众号 乖乖狼科技

发送口令 akcd

T1

  1. 静态代码块中不能? · 【D 】

    A. 初始化静态变量 B. 调用静态方法

    C. new对象 D. 直接调用类中实例方法(实例方法是非静态方法,非静态的无法直接调用)

注意:在静态代码块中创建的对象实例会在类加载时就创建,并且这些实例在整个应用程序生命周期中都会占用内存。

为了进行性能优化,可以采用的方法:

  1. 按需创建对象

    尽量避免在静态代码块中创建不必要的对象。如果对象只需要在某些特定条件下才需要,可以在需要的时候再创建。
  2. 使用局部变量

    如果对象只在静态代码块中使用,可以将其声明为局部变量,这样对象在静态代码块执行完毕后就会被垃圾回收器回收。
  3. 使用懒加载(Lazy Initialization)

    对于单例模式或其他需要延迟初始化的情况,可以使用懒加载技术,确保对象只在首次需要时创建。
  4. 使用静态内部类

    静态内部类可以延迟初始化对象,同时保持单例模式的线程安全性。
  5. 使用枚举实现单例

    枚举是一种线程安全且简单的方式来实现单例模式,同时避免了反射攻击的风险。
  6. 内存管理

    确保对象在不再需要时能够被垃圾回收器回收。避免对象引用泄露,特别是在长时间运行的应用程序中。

T2

5.给定表达式:3*0.1 == 0.3,运算结果为? 【 B 】

A. true B. false C.编译错误 D. null

给定表达式 3 * 0.1 == 0.3 的运算结果通常是 false,因为浮点数的精度问题会导致 3 * 0.1 的结果不是精确的 0.3

具体来说,3 * 0.1 的结果可能是 0.30000000000000004,而不是 0.3。因此,直接用 == 进行比较会返回 false

你可以通过以下代码来验证这一点:

public class FloatPrecisionTest {

    public static void main(String[] args) {
double result = 3 * 0.1;
System.out.println("Result: " + result); boolean isEqual = (result == 0.3);
System.out.println("Is the result equal to 0.3? " + isEqual);
}
}

运行这段代码,你可能会看到类似以下的输出:

Result: 0.30000000000000004
Is the result equal to 0.3? false

因此,正确答案是:

B. false

如果你需要进行非常精确的计算,特别是涉及到金融或科学计算等领域,可以考虑使用 BigDecimal 类。BigDecimal 提供了高精度的算术运算,避免了浮点数的精度问题。

以下是使用 BigDecimal 进行精确计算的一个示例:

import java.math.BigDecimal;

public class PrecisionCalculation {

    public static void main(String[] args) {
// 创建 BigDecimal 对象
BigDecimal a = new BigDecimal("3");
BigDecimal b = new BigDecimal("0.1"); // 执行乘法运算
BigDecimal result = a.multiply(b); // 输出结果
System.out.println("Result: " + result); // 比较结果是否等于 0.3
BigDecimal target = new BigDecimal("0.3");
boolean isEqual = result.compareTo(target) == 0;
System.out.println("Is the result equal to 0.3? " + isEqual);
}
}

解释:

  1. 创建 BigDecimal 对象:使用字符串构造函数 new BigDecimal("3")new BigDecimal("0.1") 来创建 BigDecimal 对象。这样可以避免从浮点数转换时引入的精度问题。
  2. 执行乘法运算:使用 multiply 方法进行乘法运算。
  3. 输出结果:打印计算结果。
  4. 比较结果:使用 compareTo 方法进行精确比较。compareTo 方法返回 0 表示两个 BigDecimal 对象相等。

运行这段代码,你会看到如下输出:

Result: 0.3
Is the result equal to 0.3? true

注意事项:

  • 构造函数:使用字符串构造函数 new BigDecimal("0.1") 而不是 new BigDecimal(0.1),因为后者会将浮点数 0.1 转换为 BigDecimal,这仍然会引入精度问题。
  • 算术运算BigDecimal 提供了多种算术运算方法,如 addsubtractmultiplydivide。需要注意的是,divide 方法可能会抛出 ArithmeticException,如果除不尽的话,可以指定舍入模式,例如 divide(BigDecimal divisor, int scale, RoundingMode roundingMode)

通过使用 BigDecimal,你可以确保计算的高精度和准确性。

T3

6.参考如下类的代码,执行A b = new B();时输出结果是? 【 B 】

class A {
public void A(){
System.out.print("A");
}
}
public class B extends A {
public B(){
System.out.print("B");
}
}

A. B B.B C.AB D.编译错误

T4

T5

9.下列关于constructor构造方法的说法正确的是? 【 C 】

A. class中的constructor不可省略

B. 一个class 只能定义一个constructor

C. constructor在一个对象被new时执行

D. constructor名称可以随便定义

关于构造方法(constructor)的说法,正确的选项是:

C. constructor在一个对象被new时执行

解释:

  • A. class中的constructor不可省略

    • 错误。如果一个类没有显式定义任何构造方法,Java 编译器会自动提供一个默认的无参构造方法。因此,构造方法是可以省略的。
  • B. 一个class只能定义一个constructor

    • 错误。一个类可以定义多个构造方法,只要这些构造方法的参数列表不同(即重载构造方法)。
  • C. constructor在一个对象被new时执行

    • 正确。构造方法是在使用 new 关键字创建对象时被调用的,用于初始化新创建的对象。
  • D. constructor名称可以随便定义

    • 错误。构造方法的名称必须与类名完全相同,并且没有返回类型(包括 void)。

示例代码:

public class MyClass {
// 构造方法
public MyClass() {
System.out.println("Default constructor");
} // 重载构造方法
public MyClass(int value) {
System.out.println("Constructor with int parameter: " + value);
} public static void main(String[] args) {
// 调用默认构造方法
MyClass obj1 = new MyClass(); // 调用带参数的构造方法
MyClass obj2 = new MyClass(10);
}
}

总结:

正确的答案是:

C. constructor在一个对象被new时执行

T6

13.定义数组错误的是? 【 B 】

A.int[] a = new int[]{1}; //匿名数组初始化(静态初始化)

B.int a = new int[1];

C.int[] a = new int[1]; // 动态初始化

D.int[] a = {1}; // 静态初始化的省略式子

数据类型[] 变量名称 = new 数据类型[长度]; // 动态初始化
数据类型[] 变量名称 = new 数据类型[]{}; // 静态初始化
数据类型[] 变量名称 = {值1,值2,值3}; // 静态初始化的省略式子

关于子类与父类之间的方法重载(overloading)和方法覆盖(overriding),正确的说法是:

A. 子类既可以重载父类的方法,又可以覆盖父类的方法

解释:

  • A. 子类既可以重载父类的方法,又可以覆盖父类的方法

    • 正确。子类可以重载(overload)父类的方法,这意味着可以在子类中定义具有不同参数列表的方法。同时,子类也可以覆盖(override)父类的方法,这意味着可以在子类中重新定义具有相同签名(方法名和参数列表)的方法。
  • B. 子类只能重载父类的方法,而不能覆盖(错误的)

    • 错误。子类不仅可以重载父类的方法,还可以覆盖父类的方法。
  • C. 子类不能定义和父类同名同形参的方法,否则,系统将不知道调用哪个方法(错误的)

    • 错误。子类可以定义和父类同名同形参的方法,这正是方法覆盖(overriding)的概念。在这种情况下,调用哪个方法取决于对象的实际类型,而不是引用类型。
  • D. 子类只能覆盖父类的方法,而不能重载(错误的)

    • 错误。子类既可以覆盖父类的方法,也可以重载父类的方法。

示例代码:

class Parent {
public void method1() {
System.out.println("Parent method1");
} public void method2(int a) {
System.out.println("Parent method2 with int parameter: " + a);
}
} class Child extends Parent {
// 覆盖父类的方法
@Override
public void method1() {
System.out.println("Child method1");
} // 重载父类的方法
public void method2(int a, String b) {
System.out.println("Child method2 with int and String parameters: " + a + ", " + b);
} // 新增方法
public void method3() {
System.out.println("Child method3");
}
} public class Main {
public static void main(String[] args) {
Child child = new Child(); child.method1(); // 输出: Child method1
child.method2(10); // 输出: Parent method2 with int parameter: 10
child.method2(10, "hello"); // 输出: Child method2 with int and String parameters: 10, hello
child.method3(); // 输出: Child method3
}
}

[双体系练习]Java基础练习题1的更多相关文章

  1. Java 基础练习题2

    按要求编写Java程序: (1)编写一个接口:InterfaceA,只含有一个方法int method(int n): (2)编写一个类:ClassA来实现接口InterfaceA,实现int met ...

  2. java基础练习题

    1变量.运算符和类型转换:1.1手动输入一个学生的成绩,对这个成绩进行一次加分,加当前成绩的20%,输出加分后成绩 Scanner scan = new Scanner(System.in); Sys ...

  3. java基础练习 字符串,控制流,日历,日期等

    1,对基本控制流程的一些练习 package org.base.practice3; import org.junit.Test; /** * Created with IntelliJ IDEA. ...

  4. Java工程师学习指南第1部分:夯实Java基础系列

    点击关注上方"Java技术江湖",设为"置顶或星标",第一时间送达技术干货. 本文整理了微信公众号[Java技术江湖]发表和转载过的Java优质文章,想看到更多 ...

  5. 6、50道JAVA基础编程练习题跟答案

    50道JAVA基础编程练习题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 程序分析 ...

  6. 50道JAVA基础编程练习题

    50道JAVA基础编程练习题 [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少? 程序分析 ...

  7. 50道JAVA基础编程练习题 - 题目

    50道JAVA基础编程练习题[1]题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? [2]题目:判断 ...

  8. 夯实Java基础系列10:深入理解Java中的异常体系

    目录 为什么要使用异常 异常基本定义 异常体系 初识异常 异常和错误 异常的处理方式 "不负责任"的throws 纠结的finally throw : JRE也使用的关键字 异常调 ...

  9. Java基础系列5:深入理解Java异常体系

    该系列博文会告诉你如何从入门到进阶,一步步地学习Java基础知识,并上手进行实战,接着了解每个Java知识点背后的实现原理,更完整地了解整个Java技术体系,形成自己的知识框架. 前言: Java的基 ...

  10. 【视频+图文】Java基础经典练习题(一)输出2-100之间的素数,及素数个数

    目录 第一题:判断2-100之间有多少个素数,并输出所有素数. 1.视频讲解: 2.思路分析: 代码讲解:以i=4为例 4.为大家准备了彩蛋: 能解决题目的代码并不是一次就可以写好的 我们需要根据我们 ...

随机推荐

  1. 称骨算命免费api接口_json数据接口示例_八字称骨测算程序php接口

    称骨算命是算命方法的一种,和生辰八字算命.紫微斗数算命异曲同工,略有不同,虽然都是用出生的时间算命,但比较而言,称骨算命将命运分的比较粗略,只是把命运分为五十一种.故对命运的考察不细致,不太准确,可以 ...

  2. python安装sklearn

    安装sklearn这个包,首先要安装三个依赖包,如图划红线的部分. 要找这三个包,我们都可以登录:https://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy 这 ...

  3. Android复习(三)清单文件中的元素——>uses-feature

    <uses-feature> Google Play 会利用应用清单中声明的 <uses-feature> 元素,从不符合应用硬件和软件功能要求的设备上过滤该应用. 通过指定应 ...

  4. 常用css列表

    常用css列表 color 设置文字的颜色,如: color:red; font-size 设置文字的大小,如:font-size:12px; font-family 设置文字的字体,如:font-f ...

  5. Angular 19 "要" 来了⚡

    前言 Angular 19 预计会在 11 月中旬发布,目前 (2024-10-27) 最新版本是 v19.0.0-next.11. 这次 v19 的改动可不小哦,新增了很多功能,甚至连 effect ...

  6. 【问题解决】java.lang.SecurityException: JCE cannot authenticate the provider BC

    问题复现 历史项目升级JDK(由1.7升级到8),进行加密/解密时出现报错java.lang.SecurityException: JCE cannot authenticate the provid ...

  7. 使用sklearn中的Adaboost分类器来实现ORL人脸分类

    使用sklearn中的Adaboost分类器来实现ORL人脸分类 前言:博主上网浏览使用Adaboost实现人脸分类时,发现并没有分类,大部分全都是关于人脸识别检测的,并没有实现对某个人的精准分类(例 ...

  8. CLIPFit:不绕弯子,直接微调比提示微调和适配器微调更好 | EMNLP'24

    来源:晓飞的算法工程笔记 公众号,转载请注明出处 论文: Vision-Language Model Fine-Tuning via Simple Parameter-Efficient Modifi ...

  9. 鸿蒙Navigation入门使用

    Navigation组件适用于模块内和跨模块的路由切换,通过组件级路由能力实现更加自然流畅的转场体验,并提供多种标题栏样式来呈现更好的标题和内容联动效果.一次开发,多端部署场景下,Navigation ...

  10. Code::Blocks C语言新手教学

    ## 简介 C语言是一种广泛应用于系统编程和底层开发的编程语言.它是一种结构化的.面向过程的语言,具有高效的性能和灵活的编程风格.在学习C语言时,通常会使用一些集成开发环境(IDE)来编写.编译和运行 ...