【Java面试——基础知识——Day2】

news2024/11/26 11:38:11

1.面向对象基础

1.1 面向对象和面向过程的区别

  • 面向过程编程(POP):面向过程把解决问题的过程拆成一个个方法,通过一个个方法的执行解决问题。
  • 面向对象编程(OOP):面向对象会先抽象出对象,然后用对象执行方法的方式解决问题。

相比较于 POP,OOP 开发的程序一般具有下面这些优点:

  • 易维护:由于良好的结构和封装性,OOP 程序通常更容易维护。
  • 易复用:通过继承和多态,OOP 设计使得代码更具复用性,方便扩展功能。
  • 易扩展:模块化设计使得系统扩展变得更加容易和灵活。

POP 的编程方式通常更为简单和直接,适合处理一些较简单的任务。

1.2 创建一个对象用什么运算符?对象实体与对象引用有何不同?

new 运算符,new 创建对象实例(对象实例在堆内存中),对象引用指向对象实例(对象引用存放在栈内存中)。

1.3 对象的相等和引用相等的区别

对象的相等一般比较的是内存中存放的内容是否相等。
引用相等一般比较的是他们指向的内存地址是否相等。

String str1 = "hello";
String str2 = new String("hello");
String str3 = "hello";
// 使用 == 比较字符串的引用相等
System.out.println(str1 == str2);
System.out.println(str1 == str3);
// 使用 equals 方法比较字符串的相等
System.out.println(str1.equals(str2));
System.out.println(str1.equals(str3));

输出结果:
由于Java存在一个字符串常量池,所以str1和str3指向的是常量池中的同一个对象

false//比较的是是否指向同一对象
true//比较的是是否指向同一对象
true//比较的是内存中的内容
true//比较的是内存中的内容

1.4 如果一个类没有声明构造方法,该程序能正确执行吗?

可以。每个类在声明时会默认自带一个无参构造函数,但当我们自定义了一个构造函数后,该无参构造函数会消失,需要自己显示进行声明。

1.5 构造方法有哪些特点?是否可被 override?

构造方法具有以下特点:

  • 名称与类名相同:构造方法的名称必须与类名完全一致。
  • 没有返回值:构造方法没有返回类型,且不能使用 void 声明。

构造方法不能被重写(override),但可以被重载(overload)。因此,一个类中可以有多个构造方法,这些构造方法可以具有不同的参数列表,以提供不同的对象初始化方式。

1.6 面向对象三大特征

  • 封装
    • 封装是指把一个对象的状态信息(也就是属性)隐藏在对象内部,不允许外部对象直接访问对象的内部信息。但是可以提供一些可以被外界访问的方法来操作属性。
  • 继承
    • 不同类型的对象,相互之间经常有一定数量的共同点。继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。通过使用继承,可以快速地创建新的类,可以提高代码的重用,程序的可维护性,节省大量创建新类的时间 ,提高我们的开发效率。
    • 特点:
      • 子类拥有父类对象所有的属性和方法(包括私有属性和私有方法),但是父类中的私有属性和方法子类是无法访问,只是拥有。
      • 子类可以拥有自己属性和方法,即子类可以对父类进行扩展。
      • 子类可以用自己的方式实现父类的方法。
  • 多态
    • 顾名思义,表示一个对象具有多种的状态,具体表现为父类的引用指向子类的实例。
    • 多态的特点:
      • 对象类型和引用类型之间具有继承(类)/实现(接口)的关系;
      • 引用类型变量发出的方法调用的到底是哪个类中的方法,必须在程序运行期间才能确定;
      • 多态不能调用“只在子类存在但在父类不存在”的方法;
      • 如果子类重写了父类的方法,真正执行的是子类重写的方法,如果子类没有重写父类的方法,执行的是父类的方法。

1.7 接口和抽象类有什么共同点和区别?

接口和抽象类的共同点

  • 实例化:接口和抽象类都不能直接实例化,只能被实现(接口)或继承(抽象类)后才能创建具体的对象。
  • 抽象方法:接口和抽象类都可以包含抽象方法。抽象方法没有方法体,必须在子类或实现类中实现。

接口和抽象类的区别

  • 设计目的
    • 接口主要用于对类的行为进行约束,你实现了某个接口就具有了对应的行为。
    • 抽象类主要用于代码复用,强调的是所属关系。
  • 继承和实现
    • 一个类只能继承一个类(包括抽象类),因为 Java 不支持多继承。
    • 一个类可以实现多个接口,一个接口也可以继承多个其他接口。
  • 成员变量
    • 接口中的成员变量只能是 public static final 类型的,不能被修改且必须有初始值。
    • 抽象类的成员变量可以有任何修饰符(private, protected, public),可以在子类中被重新定义或赋值。
  • 方法
    • 自 Java 8 起,可以在接口中定义 default(默认) 方法和 static (静态)方法。 自 Java 9 起,接口可以包含 private 方法。
    • 抽象类可以包含抽象方法和非抽象方法。抽象方法没有方法体,必须在子类中实现。非抽象方法有具体实现,可以直接在抽象类中使用或在子类中重写。

1.9 深拷贝和浅拷贝区别,什么是引用拷贝?

  • 浅拷贝:浅拷贝会在堆上创建一个新的对象(区别于引用拷贝的一点),不过,如果原对象内部的属性是引用类型的话,浅拷贝会直接复制内部对象的引用地址,也就是说拷贝对象和原对象共用同一个内部对象。
  • 深拷贝:深拷贝会完全复制整个对象,包括这个对象所包含的内部对象。
  • 引用拷贝: 简单来说,引用拷贝就是两个不同的引用指向同一个对象。
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2210492.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Jetbrains Fleet1.41 发布:新特性杀疯了

决定我们自身的不是过去的经历 而是我们自己赋予经历的意义 因为过去的经历 是否影响他 如何影响他 完全由他自己决定 有时候 克服恐惧最好的办法 就是把恐惧说出来 前几日 jetbrains fleet1.41 正式发布了,这次的发布可谓是真的诚意满满,包含了多个开发者非常喜欢的小…

Bootstrap 4 多媒体对象

Bootstrap 4 多媒体对象 引言 Bootstrap 4 是目前最受欢迎的前端框架之一,它提供了一套丰富的工具和组件,帮助开发者快速构建响应式和移动设备优先的网页。在本文中,我们将重点探讨 Bootstrap 4 中的多媒体对象(Media Object)组件,这是一种用于构建复杂和灵活布局的强大…

Java:数据结构-LinkedList和链表(2)

一 LinkedList LinkedList的方法的实现 1.头插法 public class MyLinkedList implements IList{static class ListNode{public int val;public ListNode next;public ListNode prev;public ListNode(int val){this.valval;}}public ListNode head;public ListNode last;Overr…

基于stm32的HAL库的串口实现不定长数据收发(三)(接收中断)

串口实现不定长数据收发(接收中断) 1头文件 #include "uart1.h" #include "string.h" #include "stdio.h" #include "sys.h"#define UART1_RX_BUF_SIZE 128 //接收 #define UART1_TX_BUF_SIZE 64 //发送 发送…

量化选股:原理与实战指南(一)

🌟作者简介:热爱数据分析,学习Python、Stata、SPSS等统计语言的小高同学~🍊个人主页:小高要坚强的博客🍓当前专栏:《Python之量化交易》🍎本文内容:量化选股:原理与实战指南(一)🌸作者“三要”格言:要坚强、要努力、要学习 目录 引言 一、量化选股的基本概…

docker入门(二)之容器命令及私有仓库的部署(本地和harbor)

容器命令: 1.启动容器 接下来演示在docker下运行一个ubuntu系统,从中学习各容器命令。 --name"容器新名字" 为容器指定一个名称(不指定的话会随机分配一个名字)。 -d: 后台运行容器并返回容器ID,也就启动守护式容器(后台运行) -…

【Golang】关于Go语言中的定时器原理与实战应用

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

【计算机网络 - 基础问题】每日 3 题(三十八)

✍个人博客:https://blog.csdn.net/Newin2020?typeblog 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞…

ROS2 “通信方式” 参数服务器

为什么加“通信方式”引号,因为我觉得他就不算通信,最多最多就是一个动态加载参数方式 所以ros通信方式就三种,topic service action 别犟,犟就是你对! 常用的 param参数方法如下: # declare_parameter…

基于Java的旅游网站管理系统—计算机毕业设计源码39235

摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对旅游网站等问题,对旅游网站进行…

项目计划书,项目经理日常文档,项目管理计划,项目总体实施计划,总体测试计划,总体运维计划,总体开发计划(word原件获取)

项目开发计划包括项目描述、项目组织、成本预算、人力资源估算、设备资源计划、沟通计划、采购计划、风险计划、项目过程定义及项目的进度安排和里程碑、质量计划、数据管理计划、度量和分析计划、监控计划和培训计划等。 软件资料清单列表部分文档: 工作安排任务书…

Shuffle Net系列详解 (4) Shuffle Net V2实践部分讲解 for pytorch版本

Shuffle Net 系列 实践部分1.文件划分2.Block(差异文件)3.Network(差异文件)3.总结 实践部分 在看代码之前先叠加一个甲,本文并未跑出来这个实验结果。实验条件有限,论文中采用的ImageNet dataset 数据集有些太大了。后续会出一个简化版本的代码进行实践…

探索Spring Cloud Config:构建高可用的配置中心

目录 认识Spring Cloud ConfigConfig Server读取配置文件步骤1:(1)创建config-server项目(2)在config-server中开启Config Server功能(3)在config-server配置文件进行相关配置(4&…

深入理解 Transformer:构建先进 NLP 模型的关键技术

目录 一、Transformer 为何如此重要?二、Transformer 的核心组成部分1. 注意力机制2. 位置编码3. 前馈神经网络 三、Transformer 的训练方法1. 无监督预训练2. 有监督微调 四、Transformer 的应用场景五、总结与展望 在自然语言处理(NLP)的领…

【JAVA-数据结构】二叉树

这篇是二叉树相关内容。 1. 树型结构 1.1 概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。朝把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶下的。它具有以…

外卖点餐系统小程序的设计

管理员账户功能包括:系统首页,个人中心,外卖员管理,餐厅管理,用户管理,菜品分类管理,菜品信息管理,外卖订单管理,订单配送管理 微信端账号功能包括:系统首页…

Java项目实战II基于Java+Spring Boot+MySQL的智能物流管理系统 (源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着电子商…

人、机不同的学习机理

在人机协同的过程中,断点(或称为障碍点)是指可能导致人机合作效率下降、决策失误或任务失败的关键环节。以下是一些常见的断点及其影响:人类和机器之间的信息传递不畅,可能导致误解或遗漏关键信息,技术术语…

YOLO11改进|注意力机制篇|引入三重注意力机制Triplet Attention

目录 一、【Triplet Attention】注意力机制1.1【Triplet Attention】注意力介绍1.2【Triplet Attention】核心代码 二、添加【Triplet Attention】注意力机制2.1STEP12.2STEP22.3STEP32.4STEP4 三、yaml文件与运行3.1yaml文件3.2运行成功截图 一、【Triplet Attention】注意力机…

ARM嵌入式学习--第二天

-指令流水线 -基础知识 1.流水线技术通过多个功能部件并行工作来缩短程序执行时间,提高处理器的效率和吞吐率 2.增加流水线级数,可以简化流水线的各级逻辑,进一步提高了处理器的性能 3.以三级流水线分析: pc代表程序计数器&#x…