Java面试题

news2025/1/12 20:44:46

1、JDK 、JRE和JVM 的区别?

  • JDK,java development kit  java开发工具包,为java程序提供开发和运行环境
  • JRE, java runtime environment  java运行环境,为java程序提供必须的运行环境
  • JVM, java virtual machine , java 虚拟机,用来编译解释java的.class文件生成机器码使程序能够被执行

JDK中包含了JRE和编译java源码所需的javac编译工具,以及java程序调试和分析的工具,而JRE只是提供给了一个运行环境,如果需要编译调试和运行java程序则需要安装JDK,如果只是运行java程序,只需要安装JRE。

一次编译、处处运行?

由于jvm对于不同的系统都做了适配有不同版本的jvm,这样使得编译后的.class文件能够在不同的系统都能够运行。

图解:JDK包含JRE和JVM,JRE包含JVM ,编译生成的.class文件会交给对应的jvm,jvm会调用lib类库进行class文件的解释,将.class文件翻译成机器码,映射到操作系统,最终使java程序能够运行。

2、final的作用

  • 修饰类:表示类不可以被继承
  • 修饰方法: 表示方法不可以被重写,但可以重载(方法名相同,形参列表不相同)
  • 修饰变量:表示变量一旦被赋初值就不能更改

1)final修饰成员变量 (分为类变量和实例成员变量)

  • 修饰静态成员变量(类变量,有static修饰的变量):只能在定义时或者静态代码块中赋值
 //定义时赋值
    final static int a;
    static {
        //2、在静态代码块中赋值
        a = 0;
    }
  • 修饰实例成员变量(无static修饰的变量):可以在非静态代码块或者定义时赋值
 //1、定义时赋值
    final int b = 0;

    final int c;
    {
        //2、在非静态代码块中赋值
        c = 1;
    }

2)final修饰局部变量时可以不赋初值,但在使用时必须给定值。

补充:

静态代码块

属于类中的代码块,它会随着类的创建而自动执行一次,仅在类的初始化之前执行一次,可用于在类的创建之前初始化一些方法。

非静态代码块(构造代码块)

属于对象中的代码块,它会随着对象的创建而执行,并且在构造器执行前执行,只有创建对象才会触发

3)final修饰基本类型和引用类型

  • 修饰基本类型,一旦赋初值,值就不能被更改
  • 修饰引用类型,对其初始化后不可以更改他的对象地址,但是可以修改他的成员变量的值
 //1、定义时赋值
    final int b = 0;

    final int c;
    {
        //2、在非静态代码块中赋值
        c = 1;
    }

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

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

相关文章

RayVentory以改进IT的分析,RayVentory原始数据之间轻松切换

使用KeyCloak进行SSO(单点登录)-使用单点登录解决方案,并直接与KeyClok交互。 特定于公司的数据丰富—使用产品所有者、价格或许可证信息等信息轻松丰富您的数据,以获得所需数据的综合视图。 用于更深入数据管理的新连接器-添加了许多新连接器&#xff0…

Vue3中 响应式 API ( readonly、shallowReadonly、toRaw、markRaw ) 详解

传送门:Vue3中 响应式 API ( reactive、ref、toRef、toRefs ) 详解 传送门:Vue3中 响应式 API( shallowReactive、shallowRef、triggerRef 、customRef )详解 1. readonly 函数 接受一个对象 (不论是响应式还是普通的) 或是一个…

深度学习visio作图技巧

目录 1.不显示跨线 2.调节连接线拐弯 3.方框与连接线反应 4.设计一个卷积块/特征图 5.设计一个特征图方块 1.不显示跨线 不显示跨线:设计→连接线,取消显示 跨线的勾选 2.调节连接线拐弯 连接线拐弯:按住shift拖动线条即可控制连接线拐…

高数(下) 第十二章:无穷级数

文章目录Ch12. 无穷级数(一) 常数项级数正项级数交错级数任意项级数4个特殊的常数项级数收敛级数的性质(针对任意项级数)常数项级数的审敛法1.正项级数审敛法(判别法)(1)比较判别法(2)比较审敛法极限形式(3)比值法(4)根值法(5)收敛的充要条件(6)绝对收敛…

Spring Boot 篇四: Spring Data JPA使用SQL Server

本文目录SQL Server Express的安装或直接DockerSQL Server JDBC DriverTCP/IP 链接端口Integrated SecuritySSL总结本篇介绍篇一至篇三中用到的JPA链接SQL Server的具体情况以及实战过程中可能遇到的问题。 SQL Server Express的安装或直接Docker 具体的下载和安装教程&#…

sanic:通过dockerfile部署

简介:长期以来,环境一直是部署的难题。如果您的项目中有冲突的配置,您将不得不花费大量时间来解决它们。幸运的是,虚拟化为我们提供了一个很好的解决思路。Docker 就是其中之一。 历史攻略: sanic框架:简…

内网渗透体系学习1

工作组 工作组(Work Group)是计算机网络的一个概念,也是最常见和最普通的资源管理 模式,就是将不同的计算机按照功能或部门分别置于不同的组。通过创建不同的 工作组,不同的计算机可以按照功能或部门归属到不同的组内,整个组织的网…

XSCTF联合招新赛-热身赛(部分WP)

由于没有多少时间答题,抽空在划水的时候做了一两道题目.比赛已经结束了24小时了。特把写的WP分享一下,欢迎各位大佬进行指点。 文章目录warm_up头头是道B45364EZphpeasy_sqlbaigeiRSAimage1image2image3image42^11warm_up 只有虔诚的嘉心糖才能成功拿到flag 地址:4…

5G核心网技术基础自学系列 | 语音业务

书籍来源:《5G核心网 赋能数字化时代》 一边学习一边整理内容,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:5G核心网技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 3.9.1 5G语音概述 除了用于机器之…

libusb系列-003-Linux下libusb源码编译

libusb系列-003-Linux下libusb源码编译 文章目录libusb系列-003-Linux下libusb源码编译摘要源码下载及解压下载源码解压下载的源码压缩包打开终端准备编译环境安装make dh-autoreconf安装 libudev-dev编译错误的教程增加执行bootstrap.sh指令再编译make安装库确认下关键字&…

C语言中的文件操作那些事儿~~

是时候该学着操作文件了什么是文件文件种类文件名为什么要使用文件文件的打开和关闭文件的顺序读写fgetc/fputcfgets/gputsfscanf/fprintffread/fwrite文件的随机读写fseekftellrewind文件读取结束的判断文件缓冲区男人过了二十岁就要学着沉稳,遇到问题不要慌&#…

【Java】异常

看似不起波澜的日复一日 会突然在某一天让人看到坚持的意义 目录 1.认识异常 1.1 异常的概念 1.2 常见的异常 2.异常的体系结构 3.异常的分类 3.1 编译时异常 3.2 运行时异常 4.异常的处理 4.1 事前防御型 4.2 事后认错型 5.事后认错型处理 5.1 异常的抛出…

第22章 软件安装 RPM/ YUM

上章节是用源代码来编译完成; 发商编译好之后直接把可执行文件发布给用户来安装也是一种方法,类似于windows下的安装; 客户端取得这个文件后,只要通过特定的指令来安装, 那么该软件文件就会依照内部的脚本来检测相依的…

C++数据结构之堆栈

主要参考资料:01.堆栈基础知识 | 算法通关手册 (itcharge.cn)01.堆栈基础知识 | 算法通关手册 (itcharge.cn) 本文主要采用C实现,而参考资料主要采用python实现,可以相互结合食用。 基础知识 定义 堆栈(Stack):简称为…

MySQL数据库学习(4)

DQL分组查询 语法: SELECT 字段列表 FROM 表名[ WHERE条件 ] GROUP BY 分组字段名 [HAVING分组后过滤条件]; 我们发现分组查询中有两个条件,这两个条件的区别是什么呢?执行时机不同: where是分组之前进行过滤,不满足where条件&a…

基于SSM的疫情管控系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

大数据Hadoop之——Apache Hudi 数据湖实战操作(Spark,Flink与Hudi整合)

文章目录一、概述二、Hudi CLI三、Spark 与 Hudi 整合使用1)Spark 测试2)Spark 与 Hudi 整合使用1、启动spark-shell2、导入park及Hudi相关包3、定义变量4、模拟生成Trip乘车数据5、将模拟数据List转换为DataFrame数据集6、将数据写入到hudi四、Flink 与…

前端ES6相关的面试题

前端ES6相关的面试题 文章目录前端ES6相关的面试题一. var let constvarletconst二 . 函数的扩展reset参数箭头函数三 . 数组的扩展四.Set和map数据结构Setmap五. Promise六. 模块化一. var let const var var存在声明提升 >先上车,后买票 var声明的变量会挂载到window下面…

Java实操避坑指南四、spring中的坑

文章目录1. 项目搭建过程1. pom 依赖2. 在没有配置数据库相关时不要引入依赖包,如spring-boot-starter-data-jpa2. spring bean 默认生成策略的正确使用1. 代码示例2. 单元测试3. 工具类 [参考](#test2)4. 报错信息5. 分析6. 使用说明2. 使用了Autowired 注解&#…

【5G RAN】5G gNB间的N2/NGAP切换(handover)那点事儿

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…