Java每日面试题(java基础)(day17)

embedded/2024/12/23 2:15:43/

目录

  • JDK/JRE/JVM三者的关系
  • JDK常用的包
  • == 和 equals 的区别是什么?
  • Java 中的几种基本数据类型了解么?
  • 什么是自动拆装箱?
  • final 关键字中有什么作用?
  • 接口和抽象类有什么区别?
  • String, StringBuffer 和 StringBuilder区别
  • String 类的常用方法有哪些?
  • Object的常用方法有哪些
  • Java创建对象有几种方式?
  • throw 和 throws 有什么区别?
  • &和&&的区别
  • final、finally、finalize有什么区别?
  • 重载和重写有什么区别?
  • 常见的Exception有哪些?
  • 什么是反射?
  • 反射常见的应用场景
  • Java 中 IO 流分为几种?
  • Files类的常用方法都有哪些?
  • 什么是AIO、BIO和NIO?

JDK/JRE/JVM三者的关系


  • Jdk【Java Development ToolKit】

    java开发 工具箱,提供了 Java 的开发环境和运行环境。

  • Jre【Java Runtime Enviromental】

    为 Java 的运行提供了所需 环境。

  • JVM【Java Virtual Machine】

    就是我们耳熟能详的 Java 虚拟机。Java 能够跨平台运行的核心在于 JVM 。

JRE = JVM + Java 核心类库
JDK = JRE + Java工具 + 编译器 + 调试器

JDK常用的包

  • java.lang:这个是系统的 基础类,比如String、Math、Integer、System和Thread,提供常用功能。
  • java.io: 这里面是所有 输入输出 有关的类,比如文件操作等。
  • java.net: 这里面是与 网络 有关的类,比如URL,URLConnection等。
  • java.util : 这个是系统 辅助类,特别是集合类Collection,List,Map等。
  • java.sql: 这个是 数据库 操作的类,Connection,Statememt,ResultSet等

== 和 equals 的区别是什么?


  • ==运算符
    • 基本类型:比较值
    • 引用类型:比较地址
  • equals()
    • 基本类型:比较值
    • 引用类型:默认使用的==比较的地址,不过一般进行重写,如Integer和String重写后比较的是值

Java 中的几种基本数据类型了解么?

Java 中有 8 种基本数据类型,分别为:

  • 6 种数字类型
    • 4 种整数型:byteshortintlong
    • 2 种浮点型:floatdouble
  • 1 种字符类型char
  • 1 种布尔型boolean

什么是自动拆装箱?


  • 装箱:将基本类型用它们对应的包装类包装起来;
  • 拆箱:将包装类型转换为基本数据类型;

final 关键字中有什么作用?

  • 修饰引用

    1. 如果引用为基本数据类型,则该引用为常量,该值无法修改;
    2. 如果引用为引用数据类型,比如对象、数组,则该对象、数组本身可以修改,但指向该对象或数组的地址的引用不能修改
    3. 如果引用是类的成员变量,则必须当场赋值,否则编译会报错。
  • 修饰方法无法被子类重写,但仍然可以被继承。

  • 修饰无法被继承

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


  • 相同点
    1. 都不能直接实例化
    2. 都可以有抽象方法
    3. 都是体现多态
  • 不同点
    1. 抽象类的子类使用 extends 来继承;接口必须使用 implements 来实现接口。
    2. 抽象类可以有 构造函数;接口不能有。
    3. 类可以实现很多个接口;但是只能继承一个抽象类。单继承多实现
    4. 接口中的方法默认使用 public 修饰;抽象类中的方法可以是任意访问修饰符。

String, StringBuffer 和 StringBuilder区别


  1. 可变性
    • String 不可变
    • StringBufferStringBuilder 可变
  2. 线程安全
    • String 不可变,因此是线程安全的
    • StringBuilder 不是线程安全的
    • StringBuffer 是线程安全的,内部使用 synchronized 进行同步

String 类的常用方法有哪些?


  • indexOf():返回指定字符的索引。
  • charAt():返回指定索引处的字符。
  • replace():字符串替换。
  • trim():去除字符串两端空白。
  • split():分割字符串,返回一个分割后的字符串数组。
  • getBytes():返回字符串的 byte 类型数组。
  • length():返回字符串长度。
  • toLowerCase():将字符串转成小写字母。
  • toUpperCase():将字符串转成大写字符。
  • substring():截取字符串。
  • equals():字符串比较

Object的常用方法有哪些


  • toString():默认输出对象地址。
  • equals():默认比较两个引用变量是否指向同一个对象(内存地址)。
  • hashCode():将与对象相关的信息映射成一个哈希值,默认的实现hashCode值是根据内存地址换算出来。
  • clone():复制对象的副本,使用的是浅拷贝。
  • getClass():返回此 Object 的运行时类,常用于java反射机制。
  • wait():使当前线程释放对象锁,进入等待状态。
  • notify():唤醒在此对象上等待的单个线程,选择是任意性的。
  • notifyAll():唤醒在此对象上等待的所有线程

Java创建对象有几种方式?


  1. new语句创建对象。
  2. 使用反射,使用Class.newInstance()创建对象。
  3. 调用对象的clone()方法。
  4. 使用反序列化

throw 和 throws 有什么区别?


  • throw 用于 手动抛出 java.lang.Throwable 类的一个例化对象
  • throws 的作用是作为 方法声明和签名的一部分,方法被抛出相应的异常以便调用者能处理。

&和&&的区别


&运算符有两种用法:(1)按位与;(2)短路与。

  • &:按位与,通过&两边的值计算结果。
  • &&短路运算,如果&&左边的表达式的值是 false,右边的表达式会被直接短路掉,不会进行运算。

注意:逻辑或运算符(|)和短路或运算符(||)的差别也是如此。

final、finally、finalize有什么区别?


final、finally和finalize是Java中的三个不同的概念。

  • final:用于声明变量、方法或类,使之不可变、不可重写或不可继承。
  • finally:是异常处理的一部分,用于确保代码块(通常用于资源清理)总是执行。
  • finalize:是Object类的一个方法,用于在对象被垃圾回收前执行清理操作,但通常不推荐使用

重载和重写有什么区别?


  • 重载

    重载发生在同一个类内部,目的是提供多种同名方法以适应不同的情况。

    • 方法名必须 相同。
    • 参数列表必须 不同(参数的数量、类型或顺序不同)。
    • 返回类型无要求。
  • 重写

    在子类中重新定义父类中的方法称为方法重写。

    • 方法名必须 相同。
    • 参数列表必须 相同。
    • 返回类型必须 相同。
    • 访问修饰符不能比父类的方法更严格(例如,父类方法为public,则子类重写的方法也应该是public)。

常见的Exception有哪些?


常见的 RuntimeException

  • ClassCastException // 类型转换异常
  • IndexOutOfBoundsException // 数组越界异常
  • NullPointerException // 空指针
  • ArrayStoreException // 数组存储异常
  • NumberFormatException // 数字格式化异常
  • ArithmeticException // 数学运算异常

常见的 CheckedException

  • NoSuchFieldException // 反射异常,没有对应的字段
  • ClassNotFoundException // 类没有找到异常
  • IOException // IO异常
  • SQLException // SQL异常

什么是反射?


反射机制指的是程序在运行时能够获取自身的信息。在java中,只要给定类的名字,那么就可以通过反射机制来获得类的所有属性和方法。

Java的反射可以:

  1. 在运行时判断任意一个 对象所属的类。
  2. 在运行时判断任意一个类 所具有的成员变量和方法。
  3. 在运行时任意调用一个对象的 方法
  4. 在运行时 构造任意一个类的对象

反射常见的应用场景

  1. 动态代理
  2. JDBC的class.forName
  3. BeanUtils中属性值的拷贝
  4. RPC框架
  5. ORM框架
  6. Spring的IOC/DI

Java 中 IO 流分为几种?


  • 按功能来分:输入流(input)、输出流(output)。
  • 按类型来分:字节流和字符流。
  • 字节流和字符流的区别是:
    1. 字节流按8位(一个字节),以字节为单位输入输出数据
    2. 字符流按 16位(两个字节),以字符为单位输入输出数据

Files类的常用方法都有哪些?


  • exists():检测文件路径是否存在。
  • createFile():创建文件。
  • createDirectory():创建文件夹。
  • delete():删除一个文件或目录。
  • copy():复制文件。
  • move():移动文件。
  • size():查看文件个数。
  • read():读取文件。
  • write():写入文件。

什么是AIO、BIO和NIO?


  • BIO (Blocking I/O)同步阻塞I/O, 线程发起IO请求后,一直阻塞,直到缓冲区数据就绪后,再进入下一步操作。

  • NIO (Non-Blocking I/O)同步非阻塞IO,线程发起IO请求后,不需要阻塞,立即返回。用户线程不原地等待IO缓冲区,可以先做一些其他操作,只需要定时轮询检查IO缓冲区数据是否就绪即可。

  • AIO ( Asynchronous I/O)异步非阻塞I/O模型。线程发起IO请求后,不需要阻塞,立即返回,也不需要定时轮询检查结果,异步IO操作之后会回调通知调用方


http://www.ppmy.cn/embedded/126028.html

相关文章

MATLAB工具库:数据统计分析工具MvCAT、MhAST等

MATLAB工具库:数据统计分析工具MvCAT、MhAST等 工具1:Multivariate Copula Analysis Toolbox (MvCAT)MATLAB中运行 工具2:Multi-hazard Scenario Analysis Toolbox (MhAST) 参考 The University of California-软件库-Software 工具1&#xf…

RK3568笔记六十四:SG90驱动测试

若该文为原创文章,转载请注明原文出处。 前面有测试过PWM驱动,现在使用两种方式来产生PWM驱动SG90,实现舵机旋转任意角度 方法一:使用硬件PWM 方法二:使用高精度定时器,GPIO模拟PWM. 一、PWM子系统框架 二、SG90控制方法 舵机的控制需要MCU产生一个周期为20ms的脉冲信号…

JavaScript的生成器与组合学习

基本介绍 生成器是 JavaScript 中的一种特殊函数,能够在执行过程中暂停,并且在需要的时候恢复执行。这与普通函数的执行方式不同,普通函数一旦开始执行,必须执行完所有语句后才会返回,而生成器可以在执行过程中多次暂…

网络攻击原理与攻击方法

目录 网络攻击原理 网络攻击方法 网络攻击原理 网络攻击由攻击者发起,使用一定的攻击工具,通过某种访问方式,达到一定的攻击效果,实现某种攻击意图。其基本原理包括: 利用漏洞:网络攻击往往依赖于目标系…

Qt下载安装避坑

这里主要是记录在线版的下载和安装情况。 下载地址 官方: https://download.qt.io/ 清华大学: https://mirrors.tuna.tsinghua.edu.cn/qt/ 在线安装包的路径 /archive/online_installers/4.8(安装包版本)/qt-online-installer-w…

nginx和gateway的关系和区别

在技术选型时,选择 Nginx 和 Spring Cloud Gateway(或简称为 Gateway)主要取决于具体应用场景和技术需求。下面是两者的一些关键差异和适用场景。 一、Nginx 概念 Nginx 是一个高性能的 Web 服务器和反向代理服务器,常被用作静…

Granafa配置基于elasticsearch数据源的折线图

Granafa可以直接配置基于elasticsearch数据源的折线图,用于展示es库中数据的最值、均值、总量等

随机掉落的项目足迹:Vue3中vite.config.ts配置代理服务器解决跨域问题

跨域问题产生的原因:浏览器同源策略 后面的通俗解释小标题下的内容是便于大家理解同源策略和跨域问题。 而同源策略和跨域问题这两个小标题下的内容虽然比较专业不容易阅读,但是还是建议大家花时间理解并记忆,因为这是前端面试中的常考点。 同源策略 同源策略(Same-0rig…