首页 > 编程语言 >【后端面经-Java】Java基本概念

【后端面经-Java】Java基本概念

时间:2023-07-25 18:55:19浏览次数:37  
标签:Java 编译 端面 C++ 面向对象 面向 基本概念 指针

【后端面经-Java】Java基本概念

目录

1. 面向对象和面向过程

1.1 概念

  • 面向过程:将一个事件拆分为小步骤,每个步骤封装为一个函数,通过对函数的线性调用来实现一个大事件;
  • 面向对象:先对一个事件需要用到的实体类进行抽象,封装成类,通过对类的实例化对象进行操作,实现这个事件过程。特点是:封装、继承、多态。

1.2 优缺点对比

如下表所示:

2. C++和Java的区别

从某种意义上,Java是在C++的基础上,取其精华去其糟粕,进行改进之后得到的一门语言,因此,Java和C++都是面向对象的语言,大量的语法都是相通的,但是既然是C++2.0版本,总是会有所不同的。下面就来总结一下Java和C++的区别。

2.1 "去其糟粕"——Java同学,你对C++的这些东西有什么意见?

  • 指针
    大家学习C++的过程中,都被指针折磨过,包括什么数组指针、指针数组之类的,Java不支持指针,避免了指针越界、指针类型不匹配等问题。
  • 多重继承
    所谓多重继承,就是一个子类继承多个父类(奉先吾儿,是你吗?)。支持多重继承对于程序结构来说并不友好,因此Java不支持多重继承,但是可以通过接口来实现多重继承的效果。
  • 操作符重载
    C++的操作符重载,指的是一个操作符可以在不同的类中使用重载方式定义不同的含义,Java也不支持操作符重载,避免运算中的模糊性。
  • goto语句
    C++中的goto语句,可以跳转到任意位置,这样的话,程序的结构就会变得混乱,Java不支持goto语句。
  • 结构体联合
    C++能够使用结构体联合实现自定义的类型集合,而Java不支持结构体联合,Java中的数据类型只包括基本数据类型引用数据类型
  • 隐性类型转换
    C++在运算过程中,不同类型的数据可以进行隐性转换,而Java不支持隐性类型转换,需要进行强制类型转换。
  • 预处理器
    C++使用预处理引入一些库文件,但是Java并不支持,Java可使用import进行引入,但是import是在编译阶段进行的。
  • 缺省参数的函数定义
    C++的函数定义允许缺省参数,但是Java不允许。

2.2 改进之处————Java同学,你的这个论文,,,创新点是什么?

  • 垃圾回收机制
    C++需要程序员手动进行内存的申请和释放,而Java使用垃圾回收机制,自动进行内存的申请和释放,避免了内存泄漏的问题。
  • 完全面向对象
    C++是面向对象语言,但是承袭于C语言,依然保留着面向过程的特点,但是Java是完全面向对象的语言,没有面向过程的特点。
  • 跨平台——解释性语言
    C++是编译型语言,编译产生可执行文件,程序在不同的平台上需要重新编译;Java是解释性语言,程序在编译之后,会生成字节码文件,这些字节码文件可以在不同的平台上运行。

面试模拟

Q:面向过程和面向对象的区别是什么?
A: 面向过程指的是一个功能的实现拆分为多个小步骤,先行调用这些小步骤实现功能,逻辑简单,适用于小型项目,但是代码复用率低、维护成本高,不适合大型项目开发,而面向对象则是在功能实现上先抽象出多个类,通过对类的实例化对象进行操作实现功能,复用性高,更容易维护,但是开发较为复杂,且构建类将会占用更大的内存空间。

Q:C++和Java的区别
A:Java去除了C++中的指针、多重继承、结构体、联合、预处理等容易导致程序复杂性问题的特点,添加了自动垃圾回收机制,可靠性更高,并且Java是完全面向对象的编程语言。此外,C++是编译型语言,一次编译只能在当前平台运行,而Java则是解释性语言,编译之后产生的不是可执行文件,而是字节码,在不同平台通过JVM转换为可执行文件,具有跨平台性。

参考资料

  1. 面向过程 VS 面向对象
  2. 大神级回答---【面向对象和面向过程的区别】
  3. Java君与C、C++君的10大区别-总结
  4. C++与Java的区别

标签:Java,编译,端面,C++,面向对象,面向,基本概念,指针
From: https://www.cnblogs.com/CrazyPixel/p/17580759.html

相关文章

  • springboot+javaCV
    实现springboot+javaCV的步骤1.创建SpringBoot项目首先,我们需要创建一个基于SpringBoot的Java项目。可以通过使用SpringInitializer来创建一个基本的项目结构。在创建项目时,我们需要添加合适的依赖项,以便使用JavaCV库。2.添加JavaCV依赖在创建的SpringBoot项目中,我们需要......
  • springboot kotlin java 混用
    实现SpringBootKotlinJava混用简介在开发过程中,我们常常需要在一个项目中同时使用Kotlin和Java两种编程语言。SpringBoot是一个非常流行的Java开发框架,而Kotlin是一种在Java虚拟机上运行的现代化编程语言。本文将向你介绍如何在SpringBoot项目中使用Kotlin......
  • Java 基础 - 泛型机制详解
    著作权归@pdai所有原文链接:https://pdai.tech/md/java/basic/java-basic-x-generic.html Java泛型这个特性是从JDK1.5才开始加入的,因此为了兼容之前的版本,Java泛型的实现采取了“伪泛型”的策略,即Java在语法上支持泛型,但是在编译阶段会进行所谓的“类型擦除”(TypeErasure),将......
  • vscode如何编辑Java项目
    使用VSCode编辑Java项目VSCode是一个轻量级且功能丰富的代码编辑器,它提供了丰富的插件支持,使得编辑和调试Java项目变得更加容易。本文将介绍如何在VSCode中编辑Java项目,包括安装必要的插件、配置项目设置和调试代码。步骤1:安装Java开发环境在开始之前,你需要确保已经安装......
  • javascript中的arguments
    在JavaScript中,arguments 是在每个函数中自动可用的特殊变量。它们表示调用函数时传递给函数的值。术语“arguments ”既指传递到函数中的实际值,也指用于在函数内访问这些值的机制。 JavaScript函数可以接受任意数量的参数,这意味着调用函数时可以传递零个、一个、两个或......
  • 转载小米暑期java实习面经
    作者:哈喽哈喽呀链接:https://www.nowcoder.com/discuss/675282?type=2来源:牛客网自我介绍为什么要用注册中心?注册的原理?TTL机制?如何保证一致性Nacos注册中心注册失败了怎么处理Spring的IOC、AOPSpringBoot优点索引的分类?底层结构牛客手撕:二分查找,有重复数字就显示第一个......
  • 设计模式-职责链模式在Java中使用示例-采购审批系统
    场景采购单分级审批采购审批是分级进行的,即根据采购金额的不同由不同层次的主管人员来审批,主任可以审批5万元以下(不包括5万元)的采购单,副董事长可以审批5万元至10万元(不包括10万元)的采购单,董事长可以审批10万元至50万元(不包括50万元)的采购单,50万元及以上的采购单就需要开董事会......
  • Java培训需要学多久?新手小白值得一看
    在现代的信息技术领域中,Java开发是一项被广泛看好且薪酬水平不断提升的职业,因此在培训机构学Java已经成为了很多就业者的首选。那么,在培训机构学习Java需要多长时间呢?接下来,小编将会从影响因素为主线,分3个方面讲解。1.个人基础与天赋水平每一个从事Java编程工作的人都有不同的基......
  • Java培训课程哪个好?手把手教你挑选
    随着互联网的快速发展,Java开发已经成为了最受欢迎的技能之一,成为了很多人的职业选择。但是,在选择Java培训机构时,我们该如何去判断哪家机构最适合自己呢?下面,我将分享一些选择Java开发培训机构需要注意的点。1.考察课程设置在选择Java开发培训机构时,首先需要考虑课程设置是否全......
  • 统计小数的位数java
    统计小数的位数简介在计算机编程中,我们经常需要统计一个小数的位数。统计小数位数可以帮助我们了解一个小数的精确程度,或者在处理特定问题时提供必要的信息。本文将介绍如何使用Java编程语言来统计小数的位数,并提供相应的代码示例。方法一:将小数转换为字符串一种简单的方法是将......