挑战Java面试题复习第3天,无人扶我青云志

挑战第3天

  • Java 创建对象有几种方式?
  • 有没有可能两个不相等的对象有相同的hashCode
  • 深拷贝和浅拷贝的区别
  • final有哪些用法
  • static有哪些用法
  • 3*0.1 == 0.3 返回值是什么
  • a=a+b与a+=b有什么区别
  • try catch finally,try里有 return,finally还执行么

Java 创建对象有几种方式?

  1. 使用new关键字:
  • 直接使用new关键字调用类的构造函数来创建对象。
  1. 通过反射机制:
  • 使用java.lang.Class类的newInstance()方法或者java.lang.reflect.Constructor类的newInstance()方法来创建对象。
  1. 采用clone机制:
  • 利用对象的clone()方法来复制一个已经存在的对象,从而创建一个新的对象。
  1. 通过序列化机制:
  • 通过将对象序列化到文件、内存或网络中,然后再反序列化回对象,以此来创建对象。这通常涉及到实现java.io.Serializable接口。

有没有可能两个不相等的对象有相同的hashCode

  1. 可能存在相同hashCode值:
  • 在哈希表中,不同的对象可能因为哈希算法的设计而产生相同的哈希码(hashCode),这种现象称为哈希冲突。
  1. 处理哈希冲突的方法:
  • 拉链法:
    • 每个哈希表的槽位(索引)上挂一个链表,当发生冲突时,冲突的元素会被添加到对应槽位的链表中。
  • 开放定址法:
    • 当发生冲突时,寻找哈希表中的下一个空闲位置,将冲突的元素存储在那里。这通常涉及到线性探测、二次探测或双重哈希等策略。
  • 再哈希法:
    • 使用多个不同的哈希函数,当发生冲突时,尝试使用下一个哈希函数计算新的位置,直到找到一个没有冲突的位置。

深拷贝和浅拷贝的区别

  1. 浅拷贝:
  • 只复制对象本身,不复制对象内部引用的对象。
  • 对象的非基本类型属性仍然指向原始对象中的相同引用。
  • 修改原始对象的引用属性会影响拷贝对象的相应属性。
  1. 深拷贝:
  • 复制对象及其内部引用的所有对象,创建完全独立的副本。
  • 对象的所有属性,包括基本类型和非基本类型,都被复制。
  • 修改原始对象的引用属性不会影响拷贝对象的相应属性。

final有哪些用法

  1. 修饰类:
  • 被final修饰的类不能被继承。
  1. 修饰方法:
  • 被final修饰的方法不能被重写。
  1. 修饰变量:
  • 被final修饰的变量一旦被赋值后,其值不能被改变。
  • 如果final修饰的是引用类型变量,那么该引用不可变,但引用指向的对象内容可以变。
  1. 提高运行效率:
  • 被final修饰的方法,JVM可能会尝试进行方法内联,以提高程序运行效率。
  1. 常量存储:
  • 被final修饰的常量,在编译阶段会存入常量池中。
  1. 重排序规则:
  • 在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。
  • 初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。

static有哪些用法

  1. 静态变量:
  • 被static修饰的变量称为类变量,由类的所有实例共享。
  1. 静态方法:
  • 被static修饰的方法可以不通过类的实例来调用,它们属于类本身。
  1. 静态块:
  • static块通常用于初始化静态变量,它在类加载时执行一次。
  1. 静态内部类:
  • 被static修饰的内部类可以不依赖于外部类的实例,它们是与外部类分离的。
  1. 静态导入:
  • JDK 1.5引入的特性,允许导入类的静态成员,使得在代码中可以直接使用这些静态成员而不需要类名作为前缀。
  • 使用import static语法,可以简化对静态方法和变量的引用。

3*0.1 == 0.3 返回值是什么

  1. 浮点数精度问题:
  • 浮点数在计算机中的表示可能不是完全精确的。
  1. 不等式结果:
  • 3 * 0.1 == 0.3 的返回值是 false。
  1. 原因:
  • 由于浮点数的精度限制,3 * 0.1 的结果可能不等于 0.3。

a=a+b与a+=b有什么区别

  1. 操作符区别:
  • a = a + b 会先计算 a + b 的结果,然后将结果赋值给 a。
  • a += b 是 a = a + b 的简写形式,但会进行隐式类型转换,确保结果与左侧变量类型一致。
  1. 类型转换:
  • += 操作符会自动将加法操作的结果转换为左侧变量的类型。
  • a = a + b 则不会自动进行类型转换,需要显式转换。
  1. 代码示例:
  • byte a = 127; byte b = 127; b = a + b; 会报编译错误,因为 a + b 的结果是 int 类型,不能直接赋值给 byte 类型的 b。
  • byte a = 127; byte b = 127; b += a; 是正确的,因为 += 会自动将结果转换为 byte 类型。
  1. short 类型示例:
  • short s1 = 1; s1 = s1 + 1; 会报编译错误,因为 s1 + 1 的结果是 int 类型。
  • 正确写法是 short s1 = 1; s1 += 1;,因为 += 会自动将结果转换为 short 类型。

try catch finally,try里有 return,finally还执行么

  1. finally 块的执行:
  • 不管是否发生异常,finally 块中的代码总是会被执行。
  1. finally 与 return 的关系:
  • 当 try 或 catch 块中有 return 语句时,finally 块仍然会执行。
  1. 执行顺序:
  • finally 块的执行是在 return 语句之后,但在返回值被实际返回给调用者之前。这意味着 finally 块中的代码执行完毕后,之前保存的返回值才会被返回。
  1. 返回值的确定:
  • 函数的返回值在 finally 块执行之前就已经确定,finally 块中的操作不会改变这个返回值。
  1. finally 块中的 return:
  • 通常不建议在 finally 块中使用 return,因为这会导致函数提前退出,并且返回的值不是 try 或 catch 块中指定的值。

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

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

相关文章

【Nas】X-Doc:jellyfin“该客户端与媒体不兼容,服务器未发送兼容的媒体格式”问题解决方案

【Nas】X-Doc:jellyfin“该客户端与媒体不兼容,服务器未发送兼容的媒体格式”问题解决方案 当使用Jellyfin播放视频时出现“该客户端与媒体不兼容,服务器未发送兼容的媒体格式”,这是与硬件解码和ffmpeg设置有关系,具体…

沪深A股上市公司数据报告分析

数据分析报 目录 数据分析报告 1.引言 1.1 背景介绍 1.2 报告目的 1.3 报告范围 1.4 关键术语定义 2. 数据收集与预处理 2.1 数据来源概述 2.2 数据收集过程 2.3 数据预处理步骤 3. 数据可视化 3.1分析地区对公司数量的影响 3.2分析行业分类是否影响公…

Mysql当中的各种log

一、MySQL日志文件类型 重做日志(redo log)回滚日志(undo log)二进制日志(binlog)错误日志(errorlog)慢查询日志(slow query log)一般查询日志(g…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-29

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-29 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-29目录1. Does your LLM truly unlearn? An embarrassingly simple approach to recover unlearned knowledge摘要研究背景问题…

Java 22新特性概述

Java 22于2024年3月19日发布,共有12个特性,本节就介绍其中相对重要的9个特性: JEP 447:Statements before super(...) (Preview)super(...) 之前的语句(第一次预览) JEP 454&#x…

C1.【C++ Cont】准备

目录 1.平台 2.Dev C的使用方法 1.新建项目 2.几个常用按钮 3.修改字体 3.第一个C程序:打印Hello World! 4.注 1.平台 Dev C,VS2022 2.Dev C的使用方法 1.新建项目 选择Console Application控制台应用程序,C项目 项目的后缀dev 默认下创建了一个main.cpp,cpp为c源程…

uniapp编译多端项目App、小程序,input框键盘输入后

项目场景: uniapp编译后的小程序端,app端 在一个输入框 输入消息后,点击键盘上的操作按钮之后键盘不被收起,点击其他发送按钮时,键盘也不被收起。 问题描述 在编译后的app上普通的事件绑定,tap,click在发…

pip命令行安装pytest 一直报错

其实就是切换不同镜像安装 我最终成功的是阿里云镜像 pip install --trusted-host mirrors.aliyun.com pytest 也可以用其他的 pip install -i https://pypi.org/simple pytest # 或者使用其他的镜像源 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pytest

版本管理工具切换 | svn切换到gitlab | gitblit 迁移到 gitlab

1.在能够访问SVN服务的电脑上安装 Git-2.47.0-64-bit.exe(下载地址: https://github.com/git-for-windows/git/releases/download/v2.47.0.windows.1/Git-2.47.0-64-bit.exe 如果已安装其它版本可以忽略,但是版本必须大于Git 1.6.0&#xff…

【339】基于springboot的新能源充电系统

毕 业 设 计(论 文) 题目:新能源充电系统的设计与实现 摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解…

vue中elementUI的el-select下拉框的层级太高修改设置!

项目场景: 项目中遇到一个问题,下拉框选择之后弹出一个弹出框选择数据再关闭。 问题就出在,我打开下拉框后再弹出弹出框,弹出框的 z-index 层级没有 select 的层级高,导致我弹框弹出了几个下拉框还在弹出框上面显示着…

为什么 C 语言数组是从 0 开始计数的?

C 语言等大多数编程语言的数组从 0 开始而不从 1 开始,有两个原因: 第一:地址计算更方便 C 语言从 0 开始的话,array[i] 的地址就正好是: (array i) 如果是从 1 开始的话,就是 (array i - 1) 多一次计…

`map` 是 JavaScript 数组的一个高阶函数,用于对数组中的每个元素进行操作,并返回一个新的数组

文章目录 map 方法的作用语法示例 具体到你的代码完整代码片段总结 当然可以解释一下 map 方法的作用。 map 方法的作用 map 是 JavaScript 数组的一个高阶函数,用于对数组中的每个元素进行操作,并返回一个新的数组。新数组的每个元素是原数组中对应元…

代码随想录day15 二叉树(3)

文章目录 day11 栈与队列(2)栈与队列的总结 day13 二叉树(1)day14 二叉树(2)day15 二叉树(3) day11 栈与队列(2) 逆波兰表达式求值 https://leetcode.cn/problems/evaluate-reverse-polish-notation/ 逆…

计算机毕业设计Python+大模型股票预测系统 股票推荐系统 股票可视化 股票数据分析 量化交易系统 股票爬虫 股票K线图 大数据毕业设计 AI

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! Python大模型股票预测系统 …

[山河CTF 2024] week3

一周不在家,这是补的最后一篇。后边的还有0xgame和shctf的末周。打不动了。 Crypto Approximate_n 题目分两部分,flag分两块两个RSA,第1个泄露了4个n_approxkpr的值,后边只泄露了1个。 第1部分利用以前的模板,造格…

基于SSM+VUE园艺生活植物网站JAVA|VUE|Springboot计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解

源代码数据库LW文档(1万字以上)开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统:Window操作系统 2、开发工具:IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…

C++初阶(八)--内存管理

目录 引入: 一、C中的内存布局 1.内存区域 2.示例变量存储位置说明 二、C语言中动态内存管理 三、C内存管理方式 1.new/delete操作内置类型 2.new和delete操作自定义类型 四、operator new与operator delete函数(重要点进行讲解) …

基于vue框架的的驾校预约车辆管理系统设计与实现jwoqj(程序+源码+数据库+调试部署+开发环境)系统界面在最后面

系统程序文件列表 项目功能:学员,教练员,驾校车辆,车辆信息,车辆类型,预约信息,时间段,教学课程,上报维修,维修内容,练车记录,取消信息 开题报告内容 基于Vue框架的驾校预约车辆管理系统设计与实现开题报告 一、研究背景与意义 随着驾驶培训行业的快速发展&…

mac ssh 连接 linux 服务器

生成 SSH 密钥对 打开终端: 你可以通过 Spotlight 搜索 “Terminal” 打开终端。 生成密钥对: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 手动复制公钥(可选) 如果 ssh-copy-id 命令不可用&#xff0…