首页 > 编程语言 >Java面试题总结(持续更新)

Java面试题总结(持续更新)

时间:2024-07-24 11:56:59浏览次数:16  
标签:总结 面试题 Java String 对象 StringBuffer StringBuilder final Math

1、this关键字和super关键字的区别及联系

this关键字用在本类中。

在类的内部,可以在任何方法中使用this引用当前对象。

this关键字是用来解决全局变量和局部变量之间的冲突。

this()可以调用同类中重载的构造方法,并且需要放在第一行。

super关键字用在子类中。

在子类中可以通过super调用父类中的方法和属性。

super()可以调用父类中的构造方法,并且需要放在第一行。

super()和this()不可以同时使用,并且都不能在静态方法内使用。

2、final关键字和static关键字区别

final修饰变量、方法、类

如果final修饰变量,变量就是常量,常量不可修改,定义时必须初始化

如果final修饰方法,方法就不能被子类重写

如果final修饰类,类就不能再被扩展,不能再有子类。Java类库中的String、Math就是final类。

final修饰引用类型的常量

如果常量是基本数据类型,不可以再修改。

如果常量是引用类型,不能再将其他对象赋给该引用,但可以使用该引用改变对象内部的属性。

static修饰后的变量为静态变量,本质上为全局变量,类的所有实例共享相同的静态变量。因此,通过一个对象修改静态变量的值后,通过该类的其他对象访问到的静态变量是修改后的值。当类被虚拟机加载,静态变量就初始化,既不需要创建类的对象就可以使用静态变量。

static修饰后的方法为静态方法,它们只能直接调用其他静态方法,只能直接访问静态数据,不能以任何方式引用this或super关键字。

static修饰后的代码块为静态代码块,只执行一次,而且是类加载时就执行,作用是静态初始化数据。

3、标识符的语法要求及命名规范

语法要求:

(1)以字母、数字、_或$组成

(2)不能以数字开头

(3)不能使用java的关键字和保留字

(4)区分大小写

(5)无长度限制

命名规范:

Java中的标识符通常是由多个英文单词构造,每个单词除了首字母外其他字母小写。

大驼峰

第一个单词的首字母大写。以大写字母开头,用于类名、接口名

class  Accoun {…}  //类名

class  HelloWorld{…}  //类名

interface  AccountBase {…}  //接口名

小驼峰

第一个单词的首字母是小写,其他单词的首字母大写。以小写字母或单词开头,用于变量名、方法名

String  studentName;  //变量名

String  getStudentName() {…}  //方法名

常量命名规范

常量是使用final修饰的存储单元。(最终的)

全部为大写字母表示

final  public  int  DAYS_WEEK = 7;

final  public  double  PI = 3.1415926;

4、基本数据类型所占空间和对应封装类及其默认值

基本数据类型

所占空间大小

封装类

默认值

byte

1字节

Byte

0

short

2字节

Short

0

int

4字节

Integer

0

long

8字节

Long

0

float

4字节

Float

0.0

double

8字节

Double

0.0

char

2字节

Character

boolean

1字节(也有资料说不占字节)

Boolean

false

5、常用运算符的运算顺序

运行顺序:算术运算符>位运算符>关系运算符>逻辑运算符>赋值运算符

圆括号会提升其内部操作数的优先级。为了得到所期望的结果,这通常是必需的。圆括号(不管是否冗余)不会降低程序的性能。所以,为了减少模糊性而添加圆括号,不会对程序造成负面影响。

6、访问修饰符与访问范围

private

默认

protected

public

同一个类中

相同包中的其他类

子类(不同包、相同包)

全局(所有包)

7、重载和重写的区别

位置

方法名

参数列表

返回值

访问修饰符

方法重写

子类

相同

相同

相同或子类

不能比父类更严格

方法重载

同类

相同

不同(参数个数、类型、顺序不同)

无关

无关

8、抽象类和接口区别

共同点:都有抽象方法,都不能够实例化,但是都可以有自己的声明,并能够引用子类或实现类对象

不同点:(1)抽象类可以有属性变量,接口不能有,只能是静态常量,数据成员必须初始化。

(2)抽象类可以有具体的方法,并且具体方法可以调用抽象方法,接口如果有方法则必须全部是抽象方法。

(3)抽象类必须有子类继承,扩展性弱,接口必须有实现类实现,拓展性强。

9、Object类常用的三个方法

boolean equals(Object obj) 用来比较两个对象是否相等,比较的是两个对象的内存地址,注意String类重写后比较的是两个对象的地址。

int hashCode() 获取对象的 hash 值。

String toString() 返回对象的字符串表示形式。

10、String、StringBuffer、StringBuilder三者的区别

在创建对象时,String速度最快,StringBuffer和StringBuilder速度相差不大。

在拼接字符串时StringBuilder最快,然后是StringBuffer,最后是String,因为String拼接字符串时是又新建了一个对象,开辟了一块新的内存空间存放拼接后的字符串,所以速度最慢。

String和StringBuffer是线程安全的,查看底层String类被final修饰,是不可变的,无法被修改,是线程安全的,StringBuffer加了线程同步锁所以是线程安全的。

11、ArrayList、LinkedList、Vector三者的区别

ArrayList

LinkedList

Vector

初始化容量

10

10

扩容机制

1.5倍

2倍

线程安全

不安全

不安全

安全

性能

较高

随机插入和删除性能比ArrayList好

较低

使用场景

大部分场合(频繁查找、在集合末端删除、插入)

随机插入和删除

多线程环境下需要保持数据一致性的场景

12、List和Set的区别

共同点:List和Set都扩展了Collection接口

不同点:(1)List的实现类有ArrayList和LinkedList等,Set的实现类有HashSet、LinkedHashSet和TreeSet类等。

(2)List是有序可重复的,Set是无序不可重复的。

(3)Set检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。List和数组类似,List可以动态增长,查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。

13、java 中操作字符串都有哪些类?它们之间有什么区别?

操作字符串的类有:String、StringBuffer、StringBuilder。

String 和 StringBuffer、StringBuilder 的区别在于 String 声明的是不可变的对象,每次操作都会生成新的 String 对象,然后将指针指向新的 String 对象,而 StringBuffer、StringBuilder 可以在原有对象的基础上进行操作,所以在经常改变字符串内容的情况下最好不要使用 String。

StringBuffer 和 StringBuilder 最大的区别在于,StringBuffer 是线程安全的,而 StringBuilder 是非线程安全的,但 StringBuilder 的性能却高于 StringBuffer,所以在单线程环境下推荐使用 StringBuilder,多线程环境下推荐使用 StringBuffer。

14、String str="i"与 String str=new String(“i”)一样吗?

不一样,因为内存的分配方式不一样。String str="i"的方式,java 虚拟机会将其分配到常量池中;而 String str=new String(“i”) 则会被分到堆内存中。

15、Math.round(11.5)等于多少? Math.round(-11.5)等于多少?

Math类中提供了三个与取整有关的方法:ceil、floor、round,这些方法的作用与它们的英文名称的含义相对应,例如:

ceil的英文意义是天花板,该方法就表示向上取整,Math.ceil(11.3)的结果为12,Math.ceil(-11.3)的结果是-11;

floor的英文意义是地板,该方法就表示向下取整,Math.floor(11.6)的结果为11,Math.floor(-11.6)的结果是-12;

round方法,表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11。

16、运行时异常与一般异常有何异同?

异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。

java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。

17、jsp 和 servlet 有什么区别?

jsp经编译后就变成了Servlet.(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类)

jsp更擅长表现于页面显示,servlet更擅长于逻辑控制。

Servlet中没有内置对象,Jsp中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到。

Jsp是Servlet的一种简化,使用Jsp只需要完成程序员需要输出到客户端的内容,Jsp中的Java脚本如何镶嵌到一个类中,由Jsp容器完成。而Servlet则是个完整的Java类,这个类的Service方法用于生成对客户端的响应。

18、jsp 有哪些内置对象?作用分别是什么?

JSP有9个内置对象:

request:封装客户端的请求,其中包含来自GET或POST请求的参数;

response:封装服务器对客户端的响应;

pageContext:通过该对象可以获取其他对象;

session:封装用户会话的对象;

application:封装服务器运行环境的对象;

out:输出服务器响应的输出流对象;

config:Web应用的配置对象;

page:JSP页面本身(相当于Java程序中的this);

exception:封装页面抛出异常的对象。

标签:总结,面试题,Java,String,对象,StringBuffer,StringBuilder,final,Math
From: https://blog.csdn.net/weixin_68489989/article/details/140659262

相关文章

  • 2024暑假集训总结
    2024暑假集训总结知识点清单:树状数组拓展:(1)k维前缀和(2)树状数组+倍增没码过,小慌线段树:(1)线段树不仅仅是一个维护区间和、区间最值或者类似于方差那道题,维护区间的平方等等信息,它的深层是将区间拆分为\(O(logn)\)个子区间从而将修改与查询降为\(O(logn)\)级别,因此对于线......
  • JavaScript中的new map()和new set()使用详细(new map()和new set()的区别)
    简介:newMap():在JavaScript中,newMap()用于创建一个新的Map对象。Map对象是一种键值对的集合,其中的键是唯一的,值可以重复。newSet():在JavaScript中,newSet()是用来创建一个新的Set对象的语法。Set对象是一种集合,其中的值是唯一的,没有重复的值。newSet()可以用......
  • Aspose项目实战!pdf、cells for java
    Aspose实战使用:Excel与PDF转换工具类在这篇博客中,我将分享如何使用Aspose库来实现Excel文件与PDF文件之间的转换。我会重点分析一个工具类AsposeOfficeUtil,这个类封装了多个与Excel和PDF相关的操作方法,帮助开发者高效地进行文件转换和数据处理。此外,还将提......
  • JAVA 打印菱形的程序(Program to print the Diamond Shape)
    给定一个数字n,编写一个程序来打印一个有2n行的菱形。例子://JAVACodetoprint //thediamondshapeimportjava.util.*;classGFG{     //Printsdiamondpattern  //with2nrows  staticvoidprintDiamond(intn)  {    i......
  • 基于Java+SpringBoot+Vue的精品在线试题库系统的设计与开发(源码+lw+部署文档+讲解等)
    文章目录前言项目背景介绍技术栈后端框架SpringBoot前端框架Vue数据库MySQL(MyStructuredQueryLanguage)具体实现截图详细视频演示系统测试系统测试目的系统功能测试系统测试结论代码参考数据库参考源码获取前言......
  • Day08MySQL 面试题 (五)
    MySQL面试题40、完整性约束包括哪些?数据完整性是指数据的精确(Accuracy)和可靠性(Reliability)。分为以下四类:1、实体完整性:规定表的每一行在表中是惟一的实体。2、域完整性:是指表中的列必须满足某种特定的数据类型约束,其中约束又包括取值范围、精度等规定。3、参......
  • 216java jsp SSM公司企业人事人力资源管理系统员工考勤休假申请人事变更考核标准结果
     项目技术:SSM+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:windows7/8/1......
  • 214java jsp SSM高校校园食堂订餐点餐系统(源码+文档+运行视频+讲解视频)
     项目技术:SSM+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:windows7/8/1......
  • 213java jsp SSM疫情期间高校师生外出请假管理系统(源码+文档+开题+任务书+运行视频+讲
     项目技术:SSM+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:windows7/8/1......
  • JAVA导出Excel文档水印包含中文变成乱码了(变成口了)
     在服务器执行下 fc-list:lang=zh如果为空说明没有中文字体,所以中文没法渲染,这样的话只能在项目里面自己引入字体 伪代码如下//加载外部字体文件Fontfont=null;try{InputStreamawardFontFile=Thread.currentThread().getCo......