IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java后端高频面试知识点汇总(1):Java基础 -> 正文阅读

[Java知识库]Java后端高频面试知识点汇总(1):Java基础

目录

一、final关键字

二、static关键字

static关键字主要有以下4种用法:

1.修饰成员变量和成员方法

2.静态代码块

3.静态内部类

4.静态导包

存在继承的情况下,初始化顺序为:

三、Java访问修饰符的范围?

分类 :

四、Java面向对象的三大特性

多态格式:就是用父类的引用指向子类的对象,接口的引用指向子类的对象

4.1 Java实现多态有 3 个必要条件:继承、重写和向上转型。

4.2 多态时访问成员的特点:

4.3 使用多态的好处和弊端?

4.4?解决多态的弊端?

引用类型转换:

注意:

instanceof关键字:

if(变量名 instanceof 数据类型){ }

五、重载和重写的区别

?多态本质上分为两种:

5.1 构造器是否可以被重写,是否可以被重载?

六、抽象类和接口的对比

相同点:

不同点:

七、Java创建对象的5种方式?

八、JVM、JRE和JDK的关系是什么?

九、值传递和引用传递的区别的什么?为什么说Java中只有值传递??

十、?&和&&的区别


一、final关键字

final: 不可改变。可以用于修饰类、方法和变量。

  • 类:被修饰的类,不能被继承。
  • 方法:被修饰的方法,不能被重写。
  • 变量:被修饰的变量,就只能赋值一次,不能被重新赋值。
  1. 基本类型 基本类型的局部变量,被final修饰后,只能赋值一次,不能再更改。
  2. 引用类型 引用类型的局部变量,被final修饰后,只能指向一个对象,地址不能再更改。

二、static关键字

static关键字主要有以下4种用法:

1.修饰成员变量和成员方法

  • 被 static 修饰的成员属于类,不属于单个这个类的某个对象,被类中所有对象共享,通过类名调用。{类名.静态成员变量,类名.方法名(实参)}
  • 被 static 声明的成员变量属于静态成员变量,静态变量存放在 Java 内存区域的方法区。

2.静态代码块

  • 静态代码块定义在类中方法外, 静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法)。 该类不管创建多少对象,静态代码块只执行一次。

3.静态内部类

  • static修饰类的话只能修饰内部类。静态内部类与非静态内部类之间存在一个最大的区别: 非静态内部类在编译完成之后会隐含地保存着一个引用,该引用是指向创建它的外围类,但是静态内部类却没有。没有这个引用就意味着:1. 它的创建是不需要依赖外围类的创建。2. 它不能使用任何外围类的非static成员变量和方法。

4.静态导包

  • 用来导入类中的静态资源,1.5之后的新特性。 可以指定导入某个类中的指定静态资源,并且不需要使用类名调用类中的静态成员,可以直接使用类中静态成员变量和成员方法。

存在继承的情况下,初始化顺序为:

  1. 父类(静态变量、静态代码块)
  2. 子类(静态变量、静态代码块)
  3. 父类(非静态代码块)
  4. 父类(构造函数)
  5. 子类(非静态代码块)
  6. 子类(构造函数)

三、Java访问修饰符的范围?

分类 :

  • private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
  • default (即缺省,什么也不写,不使用任何关键字): 在同一包内可见,不使用任何修饰符。 使用对象:类、接口、变量、方法。
  • protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类 (外部类)。
  • public : 对所有类可见。使用对象:类、接口、变量、方法

四、Java面向对象的三大特性

  • 封装:封装把一个对象的属性私有化,不允许外部对象直接访问这些私有属性。同时提供一些可以被外界访问的属性的方法。
  • 继承:继承是子类继承父类的非私有属性和方法。子类可以对父类的方法进行重写,也可以进行扩展,拥有自己的属性和方法。一个子类只能拥有一个父类,但是可以通过实现多个接口来达到多重继承的目的。
  • 多态:它是指在父类中定义的属性和方法被子类继承之后,可以具有不同的数据类型或表现出不同的行为。在Java语言中,多态主要有两种表现形式,方法的重载和重写。

多态格式:就是用父类的引用指向子类的对象,接口的引用指向子类的对象

4.1 Java实现多态有 3 个必要条件:继承、重写和向上转型。

  • 继承:在多态中必须存在有继承关系的子类和父类。
  • 重写:子类对父类中某些方法进行重新定义,在调用这些方法时就会调用子类的方法。
  • 向上转型:在多态中需要将子类的引用赋给父类对象,只有这样该引用才既能可以调用父类的方 法,又能调用子类的方法。

4.2 多态时访问成员的特点:

  • 成员变量:编译看父类,运行看父类(编译看左边,运行看左边)
  • 成员方法: 非静态方法:编译看父类,运行看子类(编译看左边,运行看右边)
  • 静态方法: 编译看父类,运行看父类(编译看左边,运行看左边)

结论:除了非静态方法是编译看父类,运行看子类,其余都是看父类

4.3 使用多态的好处和弊端?

  • 好处: 解耦,提高代码的复用性
  • 弊端:无法访问子类独有的方法或者成员变量,因为多态成员访问的特点是,编译看父类

4.4?解决多态的弊端?

向上转型与向下转型------instanceof关键字

引用类型转换:

  • 向上转型:子类类型向父类类型向上转换的过程,这个过程是默认\自动的。
  • 向下转型:父类类型向子类类型向下转换的过程,这个过程是强制\手动的。

格式: 子类类型 对象名 = (子类类型)父类类型的变量

注意:

  1. 向下转型的时候:右边父类类型的变量一定要指向要转型的子类类型的对象
  2. 不管是向上转型还是向下转型,一定满足父子类关系或者实现关系

instanceof关键字:

if(变量名 instanceof 数据类型){ }

如果变量属于该数据类型,返回true。 如果变量不属于该数据类型,返回false。

五、重载和重写的区别

?多态本质上分为两种:

  • 重载(编译时多态)

  • 重写(运行时多态)

重载(overloading):发生在同一个类中,方法名相同、参数列表不同(参数类型不同、个数不同、顺序不同),返回类型可以相同也可以不同。每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。最常用的地方就是构造器的重载。

重写(Override):发生在父子类中,方法名、参数列表必须相同,返回值小于等于父类,抛出的异常小于等于父类,访问修饰符大于等于父类.即外壳不变,核心重写!

5.1 构造器是否可以被重写,是否可以被重载?

答:构造器不能被重写,可以被重载。

静态方法不能被重写,可以被重载。 静态方法可以被继承。

静态方法是类在加载时就被加载到内存中的方法,在整个运行过程中保持不变,因而不能重写。

但非静态方法是在对象实例化时才单独申请内存空间,为每一个实例分配独立的运行内存,因而可以重写。

在Java中,如果父类中含有一个静态方法,且在子类中也含有一个返回类型、方法名、参数列表均与之相同的静态方法,那么该子类实际上只是将父类中的该同名方法进行了隐藏,而非重写。

换句话说,父类和子类中含有的其实是两个没有关系的方法,它们的行为也并不具有多态性。

六、抽象类和接口的对比

相同点:

  • 接口和抽象类都不能实例化
  • 都位于继承的顶端,用于被其他实现或继承
  • 都包含抽象方法,其子类都必须重写这些抽象方法

不同点:

?备注:Java8中接口中引入默认方法和静态方法,以此来减少抽象类和接口之间的差异。

七、Java创建对象的5种方式?

  1. 使用new关键字
  2. 使用Class类的newInstance方法
  3. 使用Constructor类的newInstance方法
  4. 使用clone方法
  5. 使用反序列化

八、JVM、JRE和JDK的关系是什么?

  • JDK:(java Development Kit)Java 开发工具包,提供了 Java 的开发及运行环境。JDK 是 Java 开发的核心,集成了 JRE 以及一些其它的工具,比如编译 Java 源码的编译器 javac 等。
  • JRE:(java Runtime Environment )Java 运行环境的简称,为 Java 的运行提供了所需的环境。它主要包括了 java虚拟机和一些 Java 所需的核心类库。
  • Jvm:(java Virtual Machine)JVM是Java虚拟机,Java程序需要运行在虚拟机上,不同的平台有自己的虚拟机,因此Java语言可以实现跨平台。

JDK包含JRE,JRE包含JVM。

九、值传递和引用传递的区别的什么?为什么说Java中只有值传递??

  • 值传递:是指在调用函数时将实际参数拷贝一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。
  • 引用传递:是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。

基本类型作为参数被传递时肯定是值传递;引用类型作为参数被传递时也是值传递,只不过“值”为对应的引用。

十、?&和&&的区别

  • &运算符有两种用法:(1)按位与;(2)逻辑与。
  • &&运算符是短路与运算。逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端 的布尔值都是true 整个表达式的值才是 true。&&之所以称为短路运算,是因为如果&&左边的表 达式的值是 false,右边的表达式会被直接短路掉,不会进行运算。

注意:逻辑或运算符(|)和短路或运算符(||)的差别也是如此

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-19 01:00:55  更:2022-02-19 01:02:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:49:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码