当前位置: 首页 > article >正文

Java面试题基础篇2:10道基础面试题

目录

  • 前言
  • 11、浅拷贝和深拷贝
  • 12、区别抽象类和接口
  • 13、区别Error和Exception
  • 14、final关键字用法
  • 15、区别Java和C++
  • 16、区别final、finally、finalize
  • 17、this关键字用法
  • 18、super关键字用法
  • 19、break ,continue ,return 区别及作用
  • 20、面向对象三大特性

前言

亲爱的家人们,创作很不容易,若对您有帮助的话,请点赞收藏加关注哦,您的关注是我持续创作的动力,谢谢大家!有问题请私信或联系邮箱:fn_kobe@163.com

11、浅拷贝和深拷贝

①浅拷贝: 基础数据类型复制值,引用类型复制引用地址,修改一个对象值,另一个对象也随之改变
②深拷贝: 基础数据类型复制值,引用类型在新内存空间复制值,新老对象不共享内存,修改一个值,不影响另一个
在这里插入图片描述

12、区别抽象类和接口

抽象类只能单继承,接口实现多个。
抽象类有构造方法,接口没有构造方法。
抽象类有实例变量,接口中没有实例变量,有常量。
抽象类包含非抽象方法,接口在java7之前所有方法都是抽象的,java8之后可以包含非抽象方法。
抽象类中方法是任意修饰符,接口中java8之前都是public,java9支持private。

13、区别Error和Exception

①Error: 程序无法处理,比较严重问题,程序会立即崩溃,jvm停止运行。
②Exception: 程序本身能处理(向上抛出或者捕获)。编译时异常和运行时异常。

14、final关键字用法

①修饰类: 不能被继承。
②修饰方法: 不能被重写。
③修饰变量: 声明时给定初始值,只能读取不能修改。如果是对象引用不能改,但对象属性可修改。

15、区别Java和C++

①相同点:都是面向对象的语言,都支持封装、继承和多态。
②不同点
Java不提供指针来直接访问内存,程序内存更加安全。
Java的类是单继承的,C++支持多重继承;虽然Java的类不可以多继承,但是接口可以多继承。
Java有自动内存管理机制,不需要程序员手动释放无用内存。

16、区别final、finally、finalize

①final:修饰类、变量、方法,修饰类表示该类不能被继承、修饰方法表示该方法不能被重写、修饰变量表示该变量是一个常量不能被重新赋值。
②finally:一般作用在try-catch代码块中,在处理异常的时候,将一定要执行的代码方法finally代码块中,表示不管是否出现异常,该代码块都会执行,一般用来存放一些关闭资源的代码。
③finalize:属于Object类的一个方法,而Object类是所有类的父类,该方法一般由垃圾回收器来调用,当我们调用System.gc() 方法的时候,由垃圾回收器调用finalize(),回收垃圾,一个对象是否可回收的最后判断。

17、this关键字用法

①定义:this是自身的一个对象,代表对象本身,理解为:指向对象本身的一个指针
②3种用法
i:普通的直接引用,this相当于是指向当前对象本身。
ii:形参与成员名字重名,用this来区分。
iii:引用本类的构造函数。

18、super关键字用法

①定义:理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类。

②3种用法

i:普通的直接引用与this类似,super相当于是指向当前对象的父类的引用,用super.xxx来引用父类的成员。

ii:子类中的成员变量或方法与父类中的成员变量或方法同名时,用super进行区分

iii:引用父类构造函数

super(参数):调用父类中的某一个构造函数(构造函数中的第一条语句)。

this(参数):调用本类中另一种形式的构造函数(构造函数中的第一条语句)。

19、break ,continue ,return 区别及作用

①break :跳出总上一层循环,不再执行循环(结束当前的循环体)
②continue: 跳出本次循环,继续执行下次循环(结束正在执行的循环 进入下一个循环条件)
③return: 程序返回,不再执行下面的代码(结束当前的方法 直接返回)

20、面向对象三大特性

①抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节。

②封装 : 封装把一个对象的属性私有化,同时提供一些被外界访问的属性的方法,如果属性不想被外界访问,不必提供方法给外界访问。但是如果一个类没有提供给外界访问的方法,那么这个类也没有什么意义了。

③继承 : 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义增加新的数据或新的功能,也可用父类的功能,但不能选择性地继承父类。通过使用继承复用以前的代码。


http://www.kler.cn/a/534306.html

相关文章:

  • 【Rust自学】20.2. 最后的项目:多线程Web服务器
  • Vue前端开发-pinia之Actions插件
  • 基于springboot的体质测试数据分析及可视化设计
  • springboot+vue+uniapp的校园二手交易小程序
  • Verilog语言学习总结
  • Redis - String相关命令
  • Docker深度解析:容器与容器局域网
  • 5-Scene层级关系
  • 机器学习--python基础库之Matplotlib (2) 简单易懂!!!
  • 【centOS】安装docker环境,替换国内镜像
  • 分布式光伏监控解决方案-并网柜保护装置
  • gym-anytrading
  • 作业二.自定义数据集使用scikit-learn中的包实现线性回归方法对其进行拟合
  • 算法--最长回文子串
  • Github 2025-02-05 C开源项目日报 Top9
  • 堆(Heap)的原理与C++实现
  • Java 大视界 -- Java 大数据在智能安防中的应用与创新(73)
  • NacosRce到docker逃逸实战
  • vulnhub DC-3
  • 一文解释pytorch 中的 squeeze() 和 unsqueeze()函数(全网最详细版)
  • Docker基础以及单体实战
  • Node.js 与 PostgreSQL 集成:深入 pg 模块的应用与实践
  • 基于Ceph14对接openstack的Nova、Glance、Cinder服务为后端存储
  • [权限提升] Linux 提权 — 系统内核溢出漏洞提权
  • linux常用基础命令 最新
  • Java 微服务实用指南(一)