Java 基础面试

1 JDK 和 JRE 有什么区别?
   DK(Java Development Kit)是Java开发工具包的缩写,它包含了Java编译器(javac)、Java虚拟机(JVM)和其他开发工具。JDK提供了开发Java应用程序所需的所有工具和库。


JRE(Java Runtime Environment)是Java运行时环境的缩写,它包含了Java虚拟机(JVM)、类库和其他支持文件。JRE只用于运行Java程序,而不包含开发工具。

简而言之,JDK包含了JRE,同时还包含了用于开发Java程序的编译器和其他工具

2 == 和 equals 的区别是什么?
 "=="是比较运算符,用于比较两个变量的值是否相等。对于基本数据类型,比较的是它们的值;对于引用类型,比较的是它们在内存中的地址。
"equals"是Object类中定义的方法,用于判断两个对象是否相等。默认情况下,equals方法和"=="运算符功能相同,比较的是两个对象的地址。但是,可以在类中重写equals方法,根据需要自定义对象的相等条件。

3 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?
  不一定。hashCode是用于获取对象的哈希码(散列码),equals用于判断两个对象是否相等。如果两个对象的hashCode相同,那么它们在散列表中的位置可能相同,但并不意味着它们的内容相等。因此,两个对象的hashCode相同,并不一定意味着equals方法返回true。


4 final 在 java 中有什么作用?
当应用于变量时,表示该变量的值不能被修改(即常量)。
当应用于方法时,表示该方法不能被子类重写。
当应用于类时,表示该类不能被继承。

5 java 中的 Math.round(-1.5) 等于多少?
Math.round(-1.5) 的结果是 -1。Math.round() 方法用于对浮点数进行四舍五入

6 String 属于基础的数据类型吗?

String不属于基础的数据类型,它是Java中的一个类。但是,由于String在Java中使用非常广泛,因此在某些情况下可以将其看作基础的数据类型。

7 java 中操作字符串都有哪些类?它们之间有什么区别?
String:用于存储和操作字符串,是不可变的。
StringBuilder:用于高效地拼接和修改字符串,是可变的。
StringBuffer:与StringBuilder功能类似,但是线程安全,适用于多线程环境
String类是不可变的,每次对字符串进行修改都会创建一个新的字符串对象;StringBuilder和StringBuffer是可变的,可以直接在原来的对象上进行修改。

8 String str="i"与 String str=new String(“i”)一样吗?
String str = "i"" 是使用字符串字面量创建一个String对象,会在字符串常量池中查找是否存在相同内容的字符串,如果存在则直接引用,如果不存在则创建新的String对象。
String str = new String("i")" 是使用new关键字创建一个新的String对象,不会在字符串常量池中查找,而是在堆内存中创建一个新的String对象。

9 如何将字符串反转?

反转字符串的一种常见方法是使用StringBuilder或StringBuffer的reverse()方法,示例代码如下:
java
String str = "Hello World";
StringBuilder sb = new StringBuilder(str);
String reversedStr = sb.reverse().toString();
System.out.println(reversedStr);  // 输出:"dlroW olleH"

10 String 类的常用方法都有那些?

length():返回字符串的长度。
charAt(int index):返回指定位置的字符。
substring(int beginIndex, int endIndex):返回指定范围内的子字符串。
equals(Object obj):判断字符串与指定对象是否相等。
contains(CharSequence sequence):判断字符串是否包含指定的字符序列。
indexOf(String str):返回指定子字符串在字符串中首次出现的位置。
toUpperCase():将字符串转换为大写。
toLowerCase():将字符串转换为小写。
trim():去除字符串两端的空白字符。


11 抽象类必须要有抽象方法吗?
抽象类不一定要有抽象方法。抽象类是不能被实例化的,它存在的主要目的是为了被子类继承和实现。抽象方法是一种没有方法体的方法声明,只有方法签名,需要子类去实现

12 普通类和抽象类有哪些区别?
普通类可以直接实例化和使用,而抽象类不能直接实例化,只能被子类继承和实现。抽象类可以包含普通方法和成员变量,而接口只能包含常量和抽象方法。一个类只能继承一个普通类,但可以实现多个接口。

13抽象类能使用 final 修饰吗?
抽象类可以使用final修饰,但是有一定的限制。如果一个抽象类被final修饰,那么该类不能被继承。但是,抽象类的方法可以继续被子类实现和重写,即final关键字只对类有效,不影响方法的继承和重写

14 接口和抽象类有什么区别?

抽象类可以有构造方法,而接口不能有构造方法。
类只能继承一个抽象类,但是可以实现多个接口。
抽象类可以包含普通方法的实现,而接口只能包含抽象方法和默认方法(Java 8及以后版本还支持静态方法)。
接口中的字段默认是常量,而抽象类可以有普通成员变量。
接口中的方法默认是public修饰的,而抽象类可以有不同的访问修饰符

15 java 中 IO 流分为几种?

字节流(Byte Stream):用于读写字节数据,如InputStream、OutputStream等。
字符流(Character Stream):用于读写字符数据,如Reader、Writer等。
字节缓冲流(Buffered Stream):对字节流或字符流进行缓冲处理,提高读写效率。
对象流(Object Stream):用于序列化和反序列化对象,如ObjectInputStream、ObjectOutputStream等。

16 BIO、NIO、AIO 有什么区别?
BIO(Blocking IO)阻塞式IO:在IO操作时,当前线程会被阻塞,直到IO操作完成。每个连接需要独立的线程来处理,适用于连接数较小的情况。
NIO(Non-blocking IO)非阻塞式IO:使用事件驱动模型,通过Selector监听多个通道的事件,实现单线程处理多个连接。适用于连接数较多但每个连接处理时间较短的情况。
AIO(Asynchronous IO)异步IO:在IO操作时,当前线程不会被阻塞,可以继续处理其他任务。IO操作完成后,系统会通知应用程序进行处理。适用于连接数较多且每个连接处理时间较长的情况。

17 Files的常用方法都有哪些?
readAllBytes(Path path):读取文件的所有字节。
write(Path path, byte[] bytes):将字节数组写入文件。
copy(Path source, Path target, CopyOption... options):复制文件或目录。
delete(Path path):删除文件或目录。
exists(Path path):判断文件或目录是否存在。
isDirectory(Path path):判断是否为目录。
isRegularFile(Path path):判断是否为普通文件。
move(Path source, Path target, CopyOption... options):移动文件或目录。
newBufferedReader(Path path):创建一个BufferedReader以读取文件。
newBufferedWriter(Path path, OpenOption... options):创建一个BufferedWriter以写入文件
 

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

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

相关文章

[论文阅读笔记28] 对比学习在多目标跟踪中的应用

这次做一篇2D多目标跟踪中使用对比学习的一些方法. 对比学习通过以最大化正负样本特征距离, 最小化正样本特征距离的方式来实现半监督或无监督训练. 这可以给训练MOT的外观特征网络提供一些启示. 使用对比学习做MOT的鼻祖应该是QDTrack, 本篇博客对QDTrack及其后续工作做一个总…

Linux OpenEuler(欧拉系统)无公网ip实现SSH远程连接

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,…

研究生可以直接当教师吗

在教育领域,教师岗位的竞争日益激烈。许多即将毕业的研究生,尤其是教育学专业的,都怀揣着一个共同的疑问:我能不能一出校门就直接当教师? 成为教师并不只是有个学历那么简单。它需要具备扎实的教育学基础、良好的教学技…

1.3 Python高级编程-生成器

摘要: 在Python编程中,生成器是一种特殊类型的迭代器,它允许你在需要时动态生成值。生成器使用关键字yield来返回一个值,这使得它们非常适合处理大量数据或执行计算密集型任务。在本教程中,我们将介绍生成器的基础知识…

Java 接口默认方法和静态方法

Java 8 引入的新特性 默认方法:Java 8(发布于2014年3月)开始,接口中可以定义带有实现的方法,称为默认方法(Default Methods)。静态方法:同样从Java 8开始,接口还可以定义…

Matlab:解非线性方程组

1、基于问题求解非线性方程组 例: xoptimvar(x,2); %将x定义为一个二元素优化变量 eq1exp(-exp(-(x(1)x(2))))x(2)*(1x(1)^2); %创建第一个方程作为优化等式表达式 eq2x(1)*cos(x(2))x(2)*sin(x(1))1/2; %创建第二个方程作为优化等式表达式 probe…

【数据结构和算法】找到最高海拔

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 前缀和的解题模板 2.1.1 最长递增子序列长度 2.1.2 寻找数组中第 k 大的元素 2.1.3 最长公共子序列…

一台机器搭建Redis 主从复制

机器IP: 192.168.1.10主机配置: protected-mode no port 6379 pidfile /var/run/redis_6379.pid requirepass foobaredslave端配置 protected-mode no port 16379 pidfile /var/run/redis_16379.pid requirepass foobaredslaveof 192.168.1.10 6379 m…

fpga verilog rs232 发送模块实现

RS-232是一种串行通信协议,用于在计算机和其他外部设备之间进行数据传输。RS-232定义了电气特性、信号级别、机械特性和传输速率等规范,为串行通信提供了一种标准化的接口。 RS-232通常使用DB9连接器,用于传输和接收数据、控制信号以及地线连…

12月25日作业

串口发送控制命令&#xff0c;实现一些外设LED 风扇 uart4.c #include "uart4.h"void uart4_config() {//1.使能GPIOB\GPIOG\UART4外设时钟RCC->MP_AHB4ENSETR | (0x1 << 1);RCC->MP_AHB4ENSETR | (0x1 << 6);RCC->MP_APB1ENSETR | (0x1 <…

边缘计算云边端全览—边缘计算系统设计与实践【文末送书-10】

文章目录 一.边缘计算1.1边缘计算的典型应用 二.边缘计算 VS 云计算三.边缘计算系统设计与实践【文末送书-10】3.1 粉丝福利&#xff1a;文末推荐与福利免费包邮送书&#xff01; 一.边缘计算 边缘计算是指在靠近物或数据源头的一侧&#xff0c;采用网络、计算、存储、应用核心…

STM32CubeIDE在使用freertos的情况下空间占用情况

因为STM32F103C8T6芯片的存储空间太小了&#xff0c;只有64K&#xff0c;在使用STM32CubeIDE的freertos情况下空间占用情况做个简单的测试&#xff1a; 不使用程序优化&#xff1a; 空间占用情况&#xff1a; 如果使用浮点运算功能的printf&#xff1a; 这个使用空间占用更大…

Isaac Sim 仿真机器人urdf文件导入

本教程展示如何在 Omniverse Isaac Sim 中导入 urdf 一. 使用内置插件导入urdf 安装urdf 插件 方法是转到“window”->“Extensions” 搜索框中输入urdf, 并启用 通过转至Isaac Utils -> Workflows -> URDF Importer菜单来访问 urdf 扩展。 表格中的 1,2,3 对应着…

利用MATLAB设计一个(2,1,7)卷积码编译码器

1、条件&#xff1a; 输入数字信号&#xff0c;可以随机产生&#xff0c;也可手动输入 2、要求&#xff1a; &#xff08;1&#xff09;能显示编码树、网格图或状态转移图三者之一&#xff1b; &#xff08;2&#xff09;根据输入数字信号编码生成卷积码并显示&#xf…

堡垒机的演变过程

堡垒机的概念源自跳板机&#xff08;前置机&#xff09;。早在20世纪90年代末21世纪初期&#xff0c;部分中大型企业为了能对运维人员的远程登录进行集中管理&#xff0c;会在机房部署一台跳板机。跳板机其实就是一台unix/windows操作系统的服务器。并且所有运维人员都需要先远…

疯狂刷屏的“小作文”事件,看到Agent智能体成释放生产力与创新力必然

最近&#xff0c;东方甄选“连续剧”迎来了“圆满”结局。“流量密码”董宇辉新身份连跳三级&#xff0c;被任命为新东方教育科技集团董事长文化助理、兼任新东方文旅集团副总裁&#xff0c;此前&#xff0c;发布18日俞敏洪和董宇辉直播预告海报&#xff0c;董已升为东方甄选高…

Floyd(弗洛伊德)算法总结

知识概览 Floyd算法适合解决多源汇最短路问题&#xff0c;其中源点是起点&#xff0c;汇点是终点。时间复杂度是。 例题展示 题目链接 活动 - AcWing 系统讲解常用算法与数据结构&#xff0c;给出相应代码模板&#xff0c;并会布置、讲解相应的基础算法题目。https://www.acw…

Spring高手之路-Spring初了解

目录 什么是Spring Spring 框架的主要功能 Spring体系结构 核心容器&#xff08;Core Container&#xff09; 数据访问与集成&#xff08;Data Access/Integration&#xff09; Web 层&#xff08;Web Layer&#xff09; AOP 与功能扩展&#xff08;AOP and Instrumenta…

pake协议传输文件magic-wormhole

pake协议传输文件magic-wormhole 1 magic-wormhole简介其他介绍 2 安装magic-wormhole3 使用示范发送文件指定虫洞码长度 接收文件 1 magic-wormhole简介 16.7k star 强推&#xff0c;丝滑、简洁、安全的开源工具——magic-wormhole 项目地址&#xff1a;https://github.com/…