Java面试问题(一)

一.Java语言具有的哪些特点

1.Java是纯面向对象语言,能够直接反应现实生活中的对象

2.具有平台无关性,利用Java虚拟机运行字节码文件,无论是在window、Linux还是macOS等其他平台对Java程序进行编译,编译后的程序可在其他平台上运行

3.Java为解释型语言,编译器把Java代码编译成平台无关的中间代码,然后在JVM上解释运行,具有很好的移植性

4.Java具有较好的安全性和健壮性,Java提供了异常处理和垃圾回收机制,去除了C++中难以理解的指针特性

5.Java语言提供了对Web应用开发的支持

二:面向对象的三大特性

1.封装:将客观事物抽象成类,每个类可以把自身数据和方法只让可信的类和对象操作,对不可信的进行信息隐藏。

2.继承:对象的一个新类可以从现有的类中派生,派生类可以从它的基类那里继承方法和实例变量,且派生类可以修改或新增新的方法使之更适合特殊的需求

3.多态:允许不同类的对象对同一消息做出响应,不同对象调用相同的方法,即使参数也相同,最终表现行为是不一样的。

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

1.要有继承,或实现

2.要有重写

3.父类引用指向子类对象

  • 这意味着我们可以声明一个父类类型的变量,并将其初始化为子类的一个实例。这种能力使得我们可以在不改变代码其他部分的情况下,用不同的子类实例替换父类引用所引用的对象。

四:方法被重写的前提

1.在子父类之间

2.相同的方法名

3.相同的参数列表(参数数量、参数类型、参数顺序都要相同)

4.相同的返回值类型,否则是语法错误

5.子类覆盖方法的访问权限要不小于父类中被覆盖方法的访问权限,否则是语法错误

五:静态方法

使用static修饰的方法称之为静态方法,静态方法不需通过对象调用,可以直接访问,也称为类方法。

静态方法有两种方式可以对其进行访问:

  1. 直接访问:类名.方法名()
  2. 实例化后访问:对象名.方法名()

六:使用静态方法须注意:

静态方法里只能直接访问静态成员,而不能直接访问类中的非静态成员

静态方法中不能使用this、super关键字

静态方法不能被非静态方法覆盖,static不能修饰构造方法

七:final关键字

  1. final修饰类:使用final修饰的类不能被继承。
  2. final修饰变量:使用final修饰的变量(属性和局部变量)不能被重新赋值,在声明时赋值,或在构造方法中赋值,系统不会对final属性默认的赋初始值。
  3. final修饰方法:使用final修饰的方法不能在子类中被覆盖,即不能修改。

八:创建抽象类和抽象方法

  1. 修饰抽象类的修饰符有public和默认修饰符两种;

2.抽象类中可以有抽象方法,也可以有非抽象的方法;

3.抽象方法是无方法体的方法。

定义抽象类时,要在关键字class的前面添加abstract。

注意:

  1. 抽象类不能被实例化;
  2. 其包含的抽象方法必须在其子类中被实现,否则该子类只能声明为abstract;
  3. 抽象方法不能为static;
  4. 在下列情况下,一个类必须声明为抽象类:
    1. 当一个类的一个或多个方法是抽象方法时;
    2. 当类是一个抽象类的子类,并且没有实现父类的所有抽象方法,即只实现部分;
    3. 当一个类实现一个接口,并且不能为全部抽象方法都提供实现时;

九:字节序定义以及Java属于哪种字节序

字节序是指多字节数据在计算机内存中存储或网络传输时字节的存储顺序。通常由大端和小端两种方式。

小端:低位字节存放在内存的低地址端,高位字节存储在内存的高地址端

大端:高位字节存放在内存的低地址端,低位字节存放在内存的高地址端

十:JDK和JRE有什么区别

JDK:Java开发工具包,提供了Java的开发环境和运行环境

JRE:Java运行环境,提供了Java运行所需的环境

十一:Java访问修饰符

default:默认访问修饰符,在同一包内可见

private:在同一类内可见,不能修饰类

protected:对同一包中的类和所有子类可见,不能修饰类

public:对所有类可见

相关推荐
AI人工智能+电脑小能手5 分钟前
【大白话说Java面试题 第47题】【JVM篇】第7题:Young GC 和 Full GC 分别采用什么算法?
java·jvm·后端·算法·面试
lyp90h6 分钟前
Claude Code CLI System Prompt 完整分析
java·前端·prompt
xu_ws6 分钟前
redis的io多路复用和Java NIO的区别
java·redis·nio
之歆9 分钟前
DAY_23 JavaScript 函数进阶:作用域 · 提升 · 匿名函数 · IIFE · 回调 · 递归 · Object 对象建模(下)
开发语言·javascript·ecmascript
csbysj20209 分钟前
jEasyUI 合并单元格
开发语言
aXin_ya10 分钟前
微服务面试篇1
微服务·面试·架构
Ulyanov11 分钟前
《从质点到位姿:基于Python与PyVista的导弹制导控制全栈仿真》: 同台竞技——3-DOF与6-DOF模型的终极对决与误差分析
开发语言·python·算法·系统仿真·雷达电子对抗仿真
CHANG_THE_WORLD12 分钟前
二次重命名对文件批量重命名
开发语言·python
Hesionberger13 分钟前
LeetCode98:验证二叉搜索树(多解)
java·开发语言·python·算法·leetcode·职场和发展
千寻girling13 分钟前
周日那天参加的力扣周赛... —— 10号
java·javascript·c++·python·算法·leetcode·职场和发展