首页 > 编程语言 > Java基础面试题整理

Java基础面试题整理

时间:2022-11-03 20:37:04浏览次数:45  
标签:面试题 Java 对象 重写 元素 equals HashCode 整理 方法

一、何为面向对象

面向对象简单来说就是一种编程方式,也可以说是一种思维方式,面向对象会注重一件事情的参与者(对象)、以及各自需要做什么动作。而面向过程则是更注重一件事情的每一个步骤以及顺序。

因此面向过程编程比较直接,而面向对象更利于代码的复用和扩展以及后续维护。

面向对象三大特点:

1、封装

封装在于明确标识出允许外部使用的所有成员函数和数据项,而不必在乎内部的实现细节,重在使用。

经典的封装的场景Javabean。实体的属性私有,对外提供getter、setter方法,对属性的赋值或者获取逻辑只能由JavaBean本身决定,而不能由外部修改。

2)orm框架:当我们需要去操作数据库,不需要关心如何在Java与SQL之间建立连接,也不用关心SQL怎么执行,只需要引入mybatis,调用方法就可以了。

2、继承

继承基类的方法,并做出自己的改变或者扩展。比如在许多类里面存在相同的业务逻辑,那么就可以把这一段相同的业务逻辑提取出来成为一个单独的类,给别的需要使用的类继承,而不是自己再去定义。从而降低代码冗余,也方便在后续开发中对代码的维护。

3、多态

基于对象所属类的不同,外部对同一个方法的调用,实际执行逻辑不同

条件:继承、方法重写、父类引用指向子类对象。

比如:父类  变量名=new 子类

    变量名.方法名();

同时多态也存在一个弊端 无法调用子类特有的方法。

二、JDK、JRE、JVM三者区别和联系

JDK:开发环境  JRE:运行环境  JVM:Java虚拟机(实现Java跨平台的重要工具)

具体关系如图:

 

 

 

三、==和equals的区别

首先

  equals():是超类Object中的方法。

  ==:是操作符

2、

  equals():用来检测两个对象是否相等,即两个对象的内容是否相等。

  ==:用于比较引用和比较基本数据类型时具有不同的功能,具体如下:

    (1)、基础数据类型:比较的是他们的值是否相等,比如两个int类型的变量,比较的是变量的值是否一样。

    (2)、引用数据类型:比较的是引用的地址是否相同,比如说新建了两个User对象,比较的是两个User的地址是否一样。

3、

  equals():没有==运行速度快。

  ==:运行速度比equals()快,因为==只是比较引用。

四、string、stringBuffer、stringBuilder

1、string是final修饰的,不可变,每次操作会产生新的string对象。

2、stringBuffer、stringBuilder都是在原对象上操作。

3、stringBuffer:线程安全、stringBuilder:线程不安全。

4、stringBuffer的方法都是synchronized修饰的

5、性能:stringBuilder>stringBuffer>string

五、重载和重写的区别

重载:发生在同一个类中,方法名必须相同,参数类型不同、个数不同、顺序不同、方法返回值和访问修饰符可以不同

重写:发生在父子类中,方法名、参数列表相同返回值范围小于等于父类,抛出的异常范围小于等于父类,访问修饰符范围大于等于父类,如果父类方法访问修饰符为private则子类就不能重写。

六:接口和抽象类的区别

1、抽象类可以存在普通成员函数、而接口中只能存在公共的抽象(public abstract)方法

2、抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public final类型的

3、抽象类只能继承一个,接口可以实现多个。

4,接口的设计目的是对类的行为进行约束,提供一种机制,可以强制要求不同类具有相同的行为,它只约束了行为的有无,但是不对实现行为进行限制。

  而抽象类的设计目的是代码的复用,当不同的类有相同的行为,

(未完...)

七、List和Set的区别

  List、Set都继承自Collection接口;

1、List:有序、按照对象进入的顺序存储对象,可重复,允许多个Null元素,可以使用迭代器(Iterator)取出所有元素,在逐一遍历,还可以使用get(int index)获取指定下标的元素。有三个实现类:LinkedList,ArrayList,Vector。

2、Set:无序,不可重复(注意:元素虽然无放入顺序,但是元素在Set中的位置是由该元素的HashCode决定的,其位置是固定的),最多允许一个Null元素,只能通过迭代器(Iterator)取出所有元素再逐一遍历各个元素。

有两个实现类:

HashSet:底层由HashMap实现,元素的唯一性是靠所存储元素类型是否重写hashCode()和equals()方法来保证的,

LinkedHashSet:底层数据结构采用链表和哈希表共同实现,链表保证了元素的顺序与存储顺序一致,哈希表保证了元素的唯一性。线程不安全,效率高。

TreeSet:底层数据结构采用二叉树来实现,元素唯一且已经排好序;唯一性同样需要重写hashCode和equals()方法,二叉树结构保证了元素的有序性。根据构造方法不同,分为自然排序(无参构造)和比较器排序(有参构造),自然排序要求元素必须实现Compareable接口,并重写里面的compareTo()方法,元素通过比较返回的int值来判断排序序列,返回0说明两个对象相同,不需要存储;比较器排需要在TreeSet初始化是时候传入一个实现Comparator接口的比较器对象,或者采用匿名内部类的方式new一个Comparator对象,重写里面的compare()方法;

八、hashCode()和equals()

hashCode():

作用:是获取哈希码,返回的是一个int整数

equals()

作用:是判断两个对象是否相等

总结:
1.HashCode方法和equals方法都是Object类中的方法,即所有对象都有equals方法和HashCode方法;
2.两个对象通过equals比较是相等的,那么HashCode肯定相等;相反的,两个对象通过HashCode比较是相等的,那么equals不一定相等;
3.只要重写equals方法,就必须重写HashCode方法;

标签:面试题,Java,对象,重写,元素,equals,HashCode,整理,方法
From: https://www.cnblogs.com/limingzhen/p/16855733.html

相关文章

  • JavaEE#JCA
    概述jca依赖jta,也就是javax.resource-api依赖javax.transation-api。javax.resourcejavax.resource.ccijavax.resource.spijavax.resource.spi.endpointjavax.resource.......
  • 如何写一个给自己的框架写一个优雅的Java Config模块
    发博词工作时间长一点的工程师,平时的“工作生活”中肯定免不了写一些大大小小的框架和中间件。最近在看SpringSecurity的源码,由于这个框架要解决的问题比较多、复杂且零碎,......
  • JAVA中输入数字,然后再逆序输出来
    一、问题描述:就是我们现在输入一些数字,然后我们将输入的数字,倒着再输出出来。实现代码如下:importjava.util.Scanner;publicclassni_sort{publicstaticvoid......
  • java 读取 hdf5 文件数据
    importstaticjava.util.stream.Collectors.joining;importjava.io.File;importjava.lang.reflect.Array;importjava.util.ArrayList;importjava.util.Arrays;......
  • ES的java端API操作
    首先简单介绍下写这篇博文的背景,最近负责的一个聚合型的新项目要大量使用ES的检索功能,之前对es的了解还只是纯理论最多加个基于postman的索引创建操作,所以这次我得了解在ja......
  • Java 语音基础知识点 笔记
    Java语音基础知识点笔记(1)什么是变量?变量分为哪几类?String是最基本的数据类型吗?char型变量中能不能储存一个中文汉字?为什么?赋值语句“floatf=3.4;"是否正确?(2)Java中有没......
  • javascript - 练习题:浅层克隆和深层克隆
    浅层克隆问:把obj 对象的内容,克隆到ojb1 上去。 varobj={name:'abc',age:123,sex:"female"}varobj1={}分析:这个没有引用值的对象,可以使用浅层克隆......
  • IDEA用Java创建删除文件,获取文件相关信息,创建删除目录操作
     目录   一、Java创建文件的三种方式二、Java删除文件三、Java获取文件相关信息四、创建删除目录操作五、Java删除目......
  • 中介者模式——java实现
    在“虚拟聊天室”实例中增加一个新的具体聊天室类和一个新的具体会员类,要求如下:1.新的具体聊天室中发送的图片大小不得超过20M。2.新的具体聊天室中发送的文字长度不得......
  • JAVA自定义比较器(自定义规格)
    事情是政治面貌1群众2党员3团员。需求就是要把2在最前,之后是1,之后是3。对于以后再加入的类型都排在后面。也就是说既不是按照升序也不是按照降序要根据2>1>3>4>5>......