Java面试题概述部分

Java是一门面向对象的编程语言,具备功能强大和简单易用的特性。Java有三个主要版本:JavaSE(标准版),JavaEE(企业版,现为JakartaEE)和JavaME(微型版)。JVM、JRE和JDK是Java运行和开发的核心,其中JDK包含了开发工具。Java的跨平台性由JVM实现,字节码是其关键。文章还对比了OracleJDK与OpenJDK的差异。
摘要由CSDN通过智能技术生成

Java概述

何为编程

编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并 终得到结果的过程。

为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、 和手段通过计算机能够

理解的形式告诉计算机,使得计算机能够根据人的指令一 步一步去工作,完成某种特定的任务。这种人

和计算机之间交流的过程就是编 程。

什么是Java

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了 C++里难以理解的多继承、

指针等概念,因此Java语言具有功能强大和简单易 用两个特征。Java语言作为静态面向对象编程语言的

代表,极好地实现了面向对 象理论,允许程序员以优雅的思维方式进行复杂的编程 。

jdk1.5之后的三大版本

Java SEJ2SEJava 2 Platform Standard Edition,标准版) Java SE 以前称为 J2SE。它允许开发

和部署在桌面、服务器、嵌入式环境和实时环境中使 用的 Java 应用程序。Java SE 包含了支持 Java

Web 服务开发的类,并为Java EEJava ME提供基础。

Java EEJ2EEJava 2 Platform Enterprise Edition,企业版) Java EE 以前称为 J2EE。企业版本

帮助开发和部署可移植、健壮、可伸缩且安全的服务器 端Java 应用程序。Java EE 是在 Java SE

基础上构建的,它提供 Web 服务、组件模型、 管理和通信 API,可以用来实现企业级的面向服务

体系结构(service-oriented architectureSOA)和 Web2.0应用程序。20182月,Eclipse

布正式将 JavaEE 更名 为 JakartaEE

Java MEJ2MEJava 2 Platform Micro Edition,微型版) Java ME 以前称为 J2MEJava ME

在移动设备和嵌入式设备(比如手机、PDA、电视 机顶盒和打印机)上运行的应用程序提供一个健

壮且灵活的环境。Java ME 包括灵活的用 户界面、健壮的安全模型、许多内置的网络协议以及对可

以动态下载的连网和离线应用程序 的丰富支持。基于 Java ME 规范的应用程序只需编写一次,就

可以用于许多设备,而且可 以利用每个设备的本机功能。

JVMJREJDK的关系

JVM

Java Virtual MachineJava虚拟机,Java程序需要运行在虚拟机上,不同的平 台有自己的虚拟机,因此

Java语言可以实现跨平台。

JRE

Java Runtime Environment包括Java虚拟机和Java程序所需的核心类库等。核 心类库主要是java.lang

包:包含了运行Java程序必不可少的系统类,如基本数 据类型、基本数学函数、字符串处理、线程、异

常处理类等,系统缺省加载这个包

如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。

JDK

Java Development Kit是提供给Java开发人员使用的,其中包含了Java的开发 工具,也包括了JRE。所以

安装了JDK,就无需再单独安装JRE了。其中的开发工 具:编译工具(javac.exe),打包工具(jar.exe)什么是跨平台性?原理是什么

所谓跨平台性,是指java语言编写的程序,一次编译后,可以在多个系统平台上 运行。

实现原理:Java程序是通过java虚拟机在系统平台上运行的,只要该系统可以安 装相应的java虚拟机,

该系统就可以运行java程序。

Java语言有哪些特点

简单易学(Java语言的语法与C语言和C++语言很接近)

面向对象(封装,继承,多态)

平台无关性(Java虚拟机实现平台无关性)

支持网络编程并且很方便(Java语言诞生本身就是为简化网络编程设计的)

支持多线程(多线程机制使应用程序在同一时间并行执行多项任)

健壮性(Java语言的强类型机制、异常处理、垃圾的自动收集等)

安全性

什么是字节码?采用字节码的大好处是什么

字节码Java源代码经过虚拟机编译器编译后产生的文件(即扩展为.class的文 件),它不面向任何特

定的处理器,只面向虚拟机。

采用字节码的好处:

Java语言通过字节码的方式,在一定程度上解决了传统解释型语言执行效率低的 问题,同时又保留了解

释型语言可移植的特点。所以Java程序运行时比较高效, 而且,由于字节码并不专对一种特定的机器,

因此,Java程序无须重新编译便可 在多种不同的计算机上运行。

先看下java中的编译器和解释器:

Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟机 器。这台虚拟的机器在

任何平台上都提供给编译程序一个的共同的接口。编译程 序只需要面向虚拟机,生成虚拟机能够理解的

代码,然后由解释器来将虚拟机代 码转换为特定系统的机器码执行。在Java中,这种供虚拟机理解的代

码叫做字节 码(即扩展为.class的文件),它不面向任何特定的处理器,只面向虚拟机。每 一种平台的解释器是不同的,但是实现的虚拟机是相同的。Java源程序经过编译 器编译后变成字节码,字节码由虚

拟机解释执行,虚拟机将每一条要执行的字节 码送给解释器,解释器将其翻译成特定机器上的机器码,

然后在特定的机器上运 行,这就是上面提到的Java的特点的编译与解释并存的解释。

什么是Java程序的主类?应用程序和小程序的主类有何不同?

一个程序中可以有多个类,但只能有一个类是主类。在Java应用程序中,这个主 类是指包含main()方法

的类。而在Java小程序中,这个主类是一个继承自系统 类JAppletApplet的子类。应用程序的主类不一

定要求是public类,但小程序 的主类要求必须是public类。主类是Java程序执行的入口点。

Java应用程序与小程序之间有那些差别?

简单说应用程序是从主线程启动(也就是main()方法)applet小程序没有main 方法,主要是嵌在浏览器

页面上运行(调用init()线程或者run()来启动),嵌入浏 览器这点跟flash的小游戏类似。

JavaC++的区别

我知道很多人没学过C++,但是面试官就是没事喜欢拿咱们JavaC++比呀! 没办法!!!就算没学过

C++,也要记下来!

都是面向对象的语言,都支持封装、继承和多态

Java不提供指针来直接访问内存,程序内存更加安全

Java的类是单继承的,C++支持多重继承;虽然Java的类不可以多继承,但是 接口可以多继承。

Java有自动内存管理机制,不需要程序员手动释放无用内存

Oracle JDK  OpenJDK 的对比

1. Oracle JDK版本将每三年发布一次,而OpenJDK版本每三个月发布一 次;

2. OpenJDK 是一个参考模型并且是完全开源的,而Oracle JDK OpenJDK的一个实现,并不是完全

开源的;

3. Oracle JDK  OpenJDK 更稳定。OpenJDKOracle JDK的代码几乎 相同,但Oracle JDK有更多的

类和一些错误修复。因此,如果您想开发企 业/商业软件,我建议您选择Oracle JDK,因为它经过

了彻底的测试和稳 定。某些情况下,有些人提到在使用OpenJDK 可能会遇到了许多应用程 序崩溃

的问题,但是,只需切换到Oracle JDK就可以解决问题;

4. 在响应性和JVM性能方面,Oracle JDKOpenJDK相比提供了更好的 性能;

5. Oracle JDK不会为即将发布的版本提供长期支持,用户每次都必须通过 更新到最新版本获得支持来

获取最新版本;

6. Oracle JDK根据二进制代码许可协议获得许可,而OpenJDK根据GPL v2许可获得许可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老了敲不动了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值