当前位置: 首页 > news >正文

2024年最新Java面试宝典系列-Java基础篇-第一篇

  1. Java的基本数据类型包括

    • 整数类型:byte(1字节)、short(2字节)、int(4字节)、long(8字节,需加L或l后缀)
    • 浮点类型:float(4字节,需加F或f后缀)、double(8字节)
    • 字符类型:char(2字节,采用Unicode编码)
    • 布尔类型:boolean(表示true或false,不能用0或非0表示)
  2. 自动装箱与拆箱是什么?

    自动装箱是指基本数据类型自动转换为对应的包装类型(如int转为Integer),自动拆箱则相反。这是Java 5引入的特性,旨在简化基本数据类型与包装类型之间的转换。

  3. 分别介绍一下JDK、JRE、JVM

    JDK 是Java 开发工具包。jdk 是整个 Java 开发的核心,是我们识别java语法的基础,包含jvm。

    JRE是Java 运行时环境。它主要包含两个部分:jvm 和 Java 的一些基本类库。

    JVM 是Java虚拟机,我们最终的代码会运行在JVM上。JVM是跨平台的.

  4. ==和equals的区别

    对于基本数据类型==是比较的值,对于引用数据类型来说,==比较的是引用地址.

    equals是用于引用数据类型,通常通过重写类的equals方法来实现比较值是否相等,没有重写 equals() 方法,则默认行为是比较两个对象的引用地址是否相同,即和 == 的效果一样.

  5. 面向对象的特征有哪些

    • 抽象:忽略与当前目标无关的细节,只关注必要的部分。
    • 继承:允许新类继承现有类的属性和方法,实现代码复用。
    • 封装:将数据与操作数据的方法结合,隐藏对象的内部实现细节。
    • 多态:允许不同类的对象对同一消息作出响应,实现接口的重用。
  6. 类、对象、实例的关系是什么

    类是对象的模板,定义了对象的属性和方法;对象是类的实例,具有类的所有属性和方法;实例是对象创建时的具体形态。

  7. Java中的访问修饰符有哪些?它们的区别是什么

    • private:仅在当前类中可见。
    • default(不写时默认为default):在当前包内可见。
    • protected:在当前包内及子类(无论子类在哪个包)中可见。
    • public:在任何地方都可见。
  8. String、StringBuilder和StringBuffer的区别是什么

    • String:不可变类,每次操作都会生成新的String对象。
    • StringBuilder:可变类,线程不安全,适用于单线程环境下的字符串拼接。
    • StringBuffer:可变类,线程安全,适用于多线程环境下的字符串拼接。
  9. String a = “123” 和 String a = new String(“123”) 的区别是什么

    前者会在字符串常量池中查找是否存在"123",若存在则直接引用,不存在则创建后引用;后者一定会在堆上创建一个新的String对象,内容为"123",然后a引用这个对象。

  10. Java中的异常处理机制是怎样的

    Java中的异常处理通过try-catch-finally语句实现。try块中放置可能抛出异常的代码,catch块用于捕获并处理异常,finally块无论是否发生异常都会执行,常用于释放资源。

  11. Error和Exception的区别是什么

    • Error:表示程序运行时JVM内部错误或资源耗尽等严重问题,通常无法恢复。
    • Exception:表示程序可以捕获并处理的异常情况,可以通过try-catch语句进行捕获和处理。
  12. Java中的泛型(Generics)是如何工作的

    Java中的泛型是JDK 5引入的一个特性,它提供了编译时类型安全检测机制,允许程序员在编译时检测到非法的类型。泛型的工作原理主要体现在以下几个方面:

    • 类型参数化:在定义类、接口或方法时,可以指定一个或多个类型参数,这些类型参数在运行时会被具体的类型所替换。
    • 类型擦除:泛型信息只存在于编译时,在运行时,JVM会将泛型类型擦除为它的原始类型(如List会被擦除为List),并通过类型转换和类型转换安全检查来保证类型安全。
    • 泛型与继承:泛型与继承的关系比较复杂,通常情况下,子类不能改变父类的泛型类型参数。
  13. Java中的final关键字有哪些用法

    final是Java中的一个修饰符,它可以用来修饰类、方法和变量。final的用法主要包括:

    • 修饰类:表示该类不能被继承。
    • 修饰方法:表示该方法不能被重写。
    • 修饰变量:表示该变量的值一旦被初始化后就不能被改变(对于基本数据类型的变量,其值不可变;对于引用类型的变量,其引用不可变,但对象本身的内容可变)。
  14. Java中的静态方法(static method)和非静态方法(non-static method)有什么区别

    • 静态方法属于类,可以通过类名直接调用,不需要创建类的实例。
    • 非静态方法属于类的实例,需要通过类的对象来调用。
    • 静态方法中不能直接访问类的非静态成员(变量和方法),反之亦然。
  15. Java中的接口(Interface)和抽象类(Abstract Class)有什么区别

    • 接口是一种引用类型,是一种特殊的类,只包含抽象方法和常量,不能有实例,新版本中可以有default方法。
    • 抽象类不能被实例化,至少包含一个抽象方法,可以有非抽象方法和变量。
    • 一个类可以实现多个接口,但只能继承一个抽象类。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • matlab与VS混合编程以及错误解决
  • 【Liunx入门】Liunx换源
  • 【MATLAB学习笔记】绘图——分割绘图背景并填充不同的颜色
  • 三级_网络技术_50_综合题(报文)
  • Webpack中的自定义 loader 的简单实现
  • C#面:ASP.NET MVC 中如何用表单认证?
  • 二叉树高频题目-上-不含树型dp
  • 认知杂谈25
  • Vue3+Ts封装input组件时遇到的问题
  • C#高级进阶---关于插件开发(初版)
  • 在Ubuntu 16.04上安装MongoDB的方法
  • MySQL多表查询,找出包含全部标签的邮件,包含任意标签的邮件
  • 【Go - 特殊导入包方式 . 和 _】
  • mybatis-plus中Swagger 模式和Kotlin 模式是什么?
  • matlab 计算矩阵元素的标准差
  • [笔记] php常见简单功能及函数
  • 「面试题」如何实现一个圣杯布局?
  • 【React系列】如何构建React应用程序
  • Angular 响应式表单之下拉框
  • E-HPC支持多队列管理和自动伸缩
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • java 多线程基础, 我觉得还是有必要看看的
  • k8s如何管理Pod
  • Node 版本管理
  • PaddlePaddle-GitHub的正确打开姿势
  • React+TypeScript入门
  • Spring核心 Bean的高级装配
  • webpack+react项目初体验——记录我的webpack环境配置
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 基于web的全景—— Pannellum小试
  • 聊聊hikari连接池的leakDetectionThreshold
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • python最赚钱的4个方向,你最心动的是哪个?
  • raise 与 raise ... from 的区别
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 昨天1024程序员节,我故意写了个死循环~
  • ​水经微图Web1.5.0版即将上线
  • #Linux(帮助手册)
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (三)mysql_MYSQL(三)
  • (算法)硬币问题
  • (五)网络优化与超参数选择--九五小庞
  • (转)memcache、redis缓存
  • (转)平衡树
  • (状压dp)uva 10817 Headmaster's Headache
  • .gitignore
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .net FrameWork简介,数组,枚举