Java基础知识面试题

本文详细探讨了Java的基础知识,涵盖面向对象的特性、基本数据类型、异常处理、字符串特性和自动装箱拆箱,以及关键字、泛型、序列化和单元测试等多个核心概念。此外,还深入分析了Java跨平台原理、线程安全问题和时间处理,为面试准备提供了全面的指导。
摘要由CSDN通过智能技术生成
主题 链接
Java基础知识 面试题
Java集合容器 面试题
Java并发编程 面试题
Java底层知识 面试题
Java常用框架 面试题
计算机网络 面试题
数据库 面试题
RabbitMQ 面试题
Redis 面试题
Elasticsearch 面试题
Zookeeper 面试题
系统设计 面试题

文章目录

面向对象

什么是面向对象?什么是面向过程?

  • 面向过程就是分析出实现需求所需要的步骤,通过函数一步一步实现这些步骤,接着依次调用即可。
  • 面向对象是把整个需求按照特点、功能划分,将这些存在共性的部分封装成对象,创建对象不是为了完成某一个步骤,而是描述某个事物在解决问题的步骤中的行为
  • 面向对象是将每一个步骤抽象为行为,便于复用和扩展

面向对象的三大基本特征是什么?

  • 封装就是隐藏对象的属性和实现细节,封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节
  • 继承机制允许创建分等级层次的类。继承就是子类继承父类的特征和行为。
  • 多态是指一个对象的相同方法在不同情形有不同表现形式。

多态存在的三个必要条件:

  • 继承
  • 重写(子类继承父类后对父类方法进行重新定义)
  • 父类引用指向子类对象

面向对象的五大基本原则是什么?

  • 单一职责原则(SRP):一个类应该有且只有一个去改变它的理由,是指一个类的功能要单一
  • 开放封闭原则(OCP):对象或实体应该对扩展开放,对修改封闭。软件实体(类,模块,函数等等)应该是可扩展的,但是不可修改。因为修改程序有可能会对原来的程序造成错误。不能修改,但是可以添加功能,尽可能的在外边添加新的类。
  • 里氏替换原则(LSP):子类应当可以替换父类并出现在父类能够出现的任何地方。
  • 依赖倒置原则(DIP):高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。抽象不应该依赖于具体实现,具体实现应该依赖于抽象。简单来说,解决耦合。一般情况下抽象的变化概率很小,让用户程序依赖于抽象,实现的细节也依赖于抽象。即使实现细节不断变动,只要抽象不变,客户程序就不需要变化。这大大降低了客户程序与实现细节的耦合度。
  • 接口隔离原则(ISP):接口端不应该依赖它不需要的接口,接口要尽量的小,实现类不必实现不需要的方法。

什么是JVM、JDK、JRE

  • JDK:Java Development Kit,是JAVA程序开发时用的开发工具包,其内部也有JRE运行环境。
  • JRE:Java Runtime Environment,是JAVA程序运行时需要的运行环境,就是只为了运行JAVA程序而不是去搞开发的话,只安装JRE就能运行已经存在的JAVA程序了。
  • JVM:Java Virtual Machine,JDK、JRE内部都包含JVM,JAVA虚拟机内部包含许多应用程序的类的解释器和类加载器等等。

为什么Java是跨平台的?

Java程序编译之后的代码不是能被硬件系统直接运行的代码,而是一种中间码——字节码。然后不同的硬件平台上安装有不同的Java虚拟机,由JVM来把字节码再翻译成所对应的硬件平台能够执行的代码。
因此对于Java编程者来说,不需要考虑硬件平台是什么。所以Java可以跨平台。
Java的平台无关性是建立在Java虚拟机的平台有关性基础之上的,是因为Java虚拟机屏蔽了底层操作系统和硬件的差异。

值传递、引用传递的区别

java中方法参数传递方式是按值传递。

  • 如果参数是基本类型,传递的是基本类型的字面量值的拷贝。
  • 如果参数是引用类型,传递的是该参量所引用的对象在堆中地址值的拷贝。

访问修饰符public、private、protected,以及不写(默认)时的区别?

在这里插入图片描述

抽象类与抽象接口

抽象类和普通类的区别:
在Java语言中使用abstract class来定义抽象类,抽象类中并不是只能有抽象方法,和普通类一样,同样可以拥有成员变量和普通的成员方法

  • 抽象方法的访问修饰符必须为public和protected;
  • 抽象类不能被实例化;
  • 如果一个类继承于抽象类,则子类必须实现父类的抽象方法,如果子类没有实现父类的抽象方法,则子类必须也一个抽象类。

抽象类和接口区别:

  • 抽象类内部可以有方法的实现细节,而接口中只能存在public abstract方法;
  • 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
  • 接口中不能含有静态代码块以及静态方法,而抽象类中可以有静态代码旷和静态方法;
  • 一个类只能继承一个抽象类,而一个类可以实现多个接口。

重写与重载的区别

  • 重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!
  • 重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。

基本数据类型

Java的基本数据类型有哪些

整型:byte, short, int, long
字符型:char
浮点型:float, double
布尔型:boolean
Java中最小的计算单元为字节,1字节=8位(bit)

各个基本数据类型的取值范围

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值