Java工程师常见面试题:Java基础(一)

news2024/10/7 10:24:13
1、JDK 和 JRE 有什么区别?

JDK是Java开发工具包,它包含了JRE和开发工具(如javac编译器和java程序运行工具等),主要用于Java程序的开发。而JRE是Java运行环境,它只包含了运行Java程序所必须的环境,主要用于Java程序的运行。

JDK面向的是Java开发者,提供了Java开发工具,如编译工具(javac)和打包工具(jar)等,方便开发者进行Java程序的开发和调试。而JRE面向的是Java程序的使用者,只要安装了JRE,就可以在对应的操作系统上运行Java程序。

JDK由JRE和Java开发工具组成,包含了Java语言所必须的类库和Java虚拟机(JVM),以及编译器和调试器等开发工具。而JRE只包含Java虚拟机(JVM)和Java语言所必须的类库,这些类库对于开发来说是足够的,但对于开发过程中的编译和调试并不足够。
在这里插入图片描述

2、为何要配置Java环境变量?

path环境变量的作用就是告诉系统,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到哪些目录下去寻找。而我们通常情况下配置的path变量,就是这个目录的完整路径。

简而言之,就是运行某个命令需要某些参数时,如果当前目录下找不到,则自动去环境变量中寻找。

3、== 和 equals 的区别是什么?

(1)类型与定义

==是一个操作符,用于比较两个变量的值。对于基本数据类型,它比较的是变量存储的值是否相等;对于引用类型,它比较的是两个引用是否指向内存中的同一地址(即是否是同一个对象的引用)。
equals()是Object类中的一个方法,用于比较两个对象的内容是否相等。默认情况下,它比较的是对象的内存地址(即是否是同一个对象),但该方法可以被重写以提供自定义的比较逻辑。

(2)运行速度

==:由于只是比较引用或内存地址,所以通常比equals()方法更快。

equals():由于可能需要执行更复杂的比较逻辑(尤其是在被重写的情况下),因此其运行速度可能慢于==。

(3)可重写性

==:不可重写,其行为是固定的。
equals():可以被重写以提供自定义的相等性判断逻辑。

下面程序的输出结果是什么?

public class Main {
    public static void main(String[] args) {
         
        Integer a = 1;
        Integer b = 2;
        Integer c = 3;
        Integer d = 3;
        Integer e = 321;
        Integer f = 321;
        Long g = 3L;
        Long h = 2L;
         
        System.out.println(c==d);//true
        System.out.println(e==f);//false
        System.out.println(c==(a+b));//true
        System.out.println(c.equals(a+b));//true
        System.out.println(g==(a+b));//true
        System.out.println(g.equals(a+b));//false
        System.out.println(g.equals(a+h));//true
    }
}

当 "=="运算符的两个操作数都是 包装器类型的引用,则是比较指向的是否是同一个对象,而如果其中有一个操作数是表达式(即包含算术运算)则比较的是数值(即会触发自动拆箱的过程)。另外,对于包装器类型,equals方法并不会进行类型转换。

第一个和第二个输出结果没有什么疑问。第三句由于 a+b包含了算术运算,因此会触发自动拆箱过程(会调用intValue方法),因此它们比较的是数值是否相等。而对于c.equals(a+b)会先触发自动拆箱过程,再触发自动装箱过程,也就是说a+b,会先各自调用intValue方法,得到了加法运算后的数值之后,便调用Integer.valueOf方法,再进行equals比较。同理对于后面的也是这样,不过要注意倒数第二个和最后一个输出的结果(如果数值是int类型的,装箱过程调用的是Integer.valueOf;如果是long类型的,装箱调用的Long.valueOf方法)。

4、Java中有哪些数学函数?

Java中提供了一些数学函数,位于java.lang.Math类中。这些函数包括以下几种:

基本数学函数:abs、max、min。
指数函数:exp、log、pow。
三角函数:sin、cos、tan、asin、acos、atan。
双曲函数:sinh、cosh、tanh、asinh、acosh、atanh。
随机数函数:random。

5、final 在 java 中有什么作用?

(1)用来修饰一个引用

如果引用为基本数据类型,则该引用为常量,该值无法修改;
如果引用为引用数据类型,比如对象、数组,则该对象、数组本身可以修改,但指向该对象或数组的地址的引用不能修改。
如果引用时类的成员变量,则必须当场赋值,否则编译会报错。

(2)用来修饰一个方法

当使用final修饰方法时,这个方法将成为最终方法,无法被子类重写。但是,该方法仍然可以被继承。

(3)用来修饰类

当用final修改类时,该类成为最终类,无法被继承。

比如常用的String类就是最终类。

6、使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?

当使用final关键字修饰变量时,这意味着该变量的引用地址被固定,它不能再指向另一个对象或值。然而,这并不意味着该引用所指向的对象的内容也不能改变。事实上,如果这个变量指向的是一个可变对象(如数组、集合或任何其他用户定义的可变类实例),那么对象的内容是可以修改的。

7、this 和super 关键字的作用

(1)this关键字的作用

  1. 对象内部指代自身的引用;
  2. 解决成员变量和局部变量的同名问题;
  3. 可以调用成员变量,不能调用局部变量;
  4. 可以调用成员方法。

(2)super关键字的作用

  1. 调用父类的成员变量或方法
  2. 调用父类的构造函数

8、在 Java 中,为什么不允许从静态方法中访问非静态变量?

静态变量属于类本身,在类加载的时候就会分配内存,可以通过类名直接访问;
非静态变量属于类的对象,只有在类的对象产生时,才会分配内存,通过类的实例去访问;
静态方法也属于类本身,但是此时没有类的实例,内存中没有非静态变量,所以无法调用。

9、final 与 static 的区别?

当一个变量被声明为final时,它的值在初始化后不能被改变。对于引用类型,它指的是引用不可变,即不能再指向其他对象,但对象本身的状态可能改变。当方法被声明为final时,该方法不能被子类重写。当一个类被声明为final时,该类不能被继承。

当一个变量或方法被声明为static时,它属于类而非类的实例。静态变量在内存中只有一份,无论创建多少个类的实例,所有实例共享同一个静态变量。静态方法可以直接通过类名调用,无需创建类的实例。静态代码块在类加载时执行,通常用于系统初始化。

final关键字主要用于声明常量、防止继承和阻止方法重写,而static关键字主要用于实现与类相关联的变量和方法,以及控制类的初始化过程。

10、int可以强制转换为byte吗?

可以进行强制转换,在Java中,int是32位,byte是8位,如果强制转换,int类型的高24位将会被丢弃。

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

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

相关文章

大创项目推荐 深度学习YOLOv5车辆颜色识别检测 - python opencv

文章目录 1 前言2 实现效果3 CNN卷积神经网络4 Yolov56 数据集处理及模型训练5 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习YOLOv5车辆颜色识别检测 ** 该项目较为新颖,适合作为竞赛课题方向&#xff0…

imx6ull构建根文件系统

在nfs目录下创建 rootfs 复制正点原子给的BusyBox解压。 进入MakeFile,加入如下 中文字符支持 打开文件 busybox-1.29.0/libbb/printable_string.c, 打开文件 busybox-1.29.0/libbb/unicode.c make menuconfig 不要选中 编译 完成后如下 这里我解压文…

【ARM】如何通过ARMDS的Map文件查看堆栈调用情况

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 通过ARMDS生成的Map文件,查看工程的堆栈使用情况。 2、 问题场景 在对于工程进行调试和测试的时候,工程师通常需要了解目前工程的堆栈使用情况,是否有函数或者变量占用了过多的堆…

基于HMM隐马尔可夫模型的金融数据预测算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于HMM隐马尔可夫模型的金融数据预测算法.程序实现HMM模型的训练,使用训练后的模型进行预测。 2.测试软件版本以及运行结果展示 MATLAB2022A版本运…

新手小白花几个月勇敢裸辞转行网络安全

我是 25 岁转行学网络安全的。说实在,转行就是奔着挣钱去的。希望我的经历可以给想转行的朋友带来一点启发和借鉴。 先简单介绍下个人背景,三流大学毕业,物流专业,学习能力一般,没啥特别技能,反正就很普通…

智慧园区解决方案一站式资料大全:标准规范顶层设计指南、供应商整体解决方案及售前PPT、标准白皮书、全国前50智慧园区集成商方案等全套600份,一次性打包下载

关键词:智慧园区解决方案,智慧园区整体解决方案,智慧园区建设总体方案设计,智慧园区综合管理系统,智慧产业园区解决方案,智慧产业园区规划方案,智慧园区建设规划方案,智慧工业园区建…

java正则表达式教程

什么是正则表达式: 正则表达式是一种用来描述字符串模式的语法。在 Java 中,正则表达式通常是一个字符串,它由普通字符(例如字母、数字、标点符号等)和特殊字符(称为元字符)组成。这些特殊字符可…

单链表经典算法题分析

目录 一、链表的中间节点 1.1 题目 1.2 题解 1.3 收获 二、移除链表元素 2.1 题目 2.2 题解 2.3 收获 2.4递归详解 三、反转链表 3.1 题目 3.2 题解 3.3 解释 四、合并两个有序列表 4.1 题目 4.2 题解 4.3 递归详解 声明:本文所有题目均摘自leetco…

康耐视visionpro-CogCreateLinePerpendicularTool操作操作工具详细说明

CogCreateLinePerpendicularTool]功能说明: 创建点到线的垂线 CogCreateLinePerpendicularTool操作说明: ①.打开工具栏,双击或点击扇标拖拽添加CogCreateLinePerpendicularTool ②.添加输入源:右键“链接到”或以连线拖 拽的方式…

如何使用上位机监控和控制设备

本文将介绍如何使用上位机来监控和控制设备,并探讨其中的关键步骤和注意事项。 1. 设备接口与通信设置 在使用上位机监控和控制设备之前,首先需要建立设备与上位机之间的通信连接。这通常涉及选择合适的通信接口和协议,例如串口、以太网、M…

OpenHarmony实战开发-如何使用ArkUIstack 组件实现多层级轮播图。

介绍 本示例介绍使用ArkUIstack 组件实现多层级轮播图。该场景多用于购物、资讯类应用。 效果图预览 使用说明 1.加载完成后显示轮播图可以左右滑动。 实现思路 1.通过stack和offsetx实现多层级堆叠。 Stack() {LazyForEach(this.swiperDataSource, (item: SwiperData, i…

算法思想总结:链表

一、链表的常见技巧总结 二、两数相加 . - 力扣(LeetCode) class Solution { public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {//利用t来存进位信息int t0;ListNode*newheadnew ListNode(0);//创建一个哨兵节点,方便尾插List…

【从零开始手搓12306项目】十二、项目初始化配置

idea的编码环境全都改成UTF-8 自动导入依赖 自动编译

【C语言】每日一题,快速提升(3)!

🔥博客主页🔥:【 坊钰_CSDN博客 】 欢迎各位点赞👍评论✍收藏⭐ 题目:杨辉三角 在屏幕上打印杨辉三角。 1 1 1 1 2 1 1 3 3 1 ……......... 解答: 按照题设的场景,能发现数字规律为&#xff1…

政安晨:【深度学习神经网络基础】(十)—— 反向传播网络中计算输出节点增量与计算剩余节点增量

目录 简述 二次误差函数 交叉熵误差函数 计算剩余节点增量 政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: 政安晨的机器学习笔记 希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正&#xf…

Fatal error in launcher: Unable to create process using【解决方案】

拷贝python 项目到其他电脑以后,执行pip list 命令时报如下错误: Fatal error in launcher: Unable to create process using ‘“d:\python37\python.exe” “C:\Python\Scripts\pip.exe” list’: ??? 解决方法: 先试这条: …

Adobe将Sora、Runway、Pika,集成在PR中

4月15日晚,全球多媒体巨头Adobe在官网宣布,将OpenAI的Sora、Pika 、Runway等著名第三方文生视频模型,集成在视频剪辑软件Premiere Pro中(简称“PR”)。 同时,Adob也会将自身研发的Firefly系列模型包括视频…

xxl-job使用自动注册节点,ip不对,如何解决????

很明显这时我们本机的ip和我们xxl-job自动注册的ip是不一致的,此时该如何处理呢???? 方法一:在配置文件中,将我们的ip固定写好。 ### xxl-job executor server-info xxl.job.executor.ip写你的…

计算机视觉 | 基于 ORB 特征检测器和描述符的全景图像拼接算法

Hi,大家好,我是半亩花海。本项目实现了基于 ORB 特征检测器和描述符的全景图像拼接算法,能够将两张部分重叠的图像拼接成一张无缝连接的全景图像。 文章目录 一、随机抽样一致算法二、功能实现三、代码解析四、效果展示五、完整代码 一、随机…

蓝桥杯 — — 完全日期

完全日期 友情链接:完全日期 题目: 思路: 直接从20010101枚举到20211231,然后再判断每一个数是否是一个合法的日期,如果这个日期是合法的,接着判断这个日期的每一个位置上的数字之和是否是一个完全平方数…