zoukankan      html  css  js  c++  java
  • 003-005:Java平台相关的面试题

    阳光背影.jpg

    本文首发于公众号:javaadu

    003:字节码是什么?

    在Java中,字节码存放于以.class结尾的二进制文件。

    字节码之于Java,类似于汇编语言之于C/C++。对于C/C++语言来说,不同的平台需要不同的编译器,以应对不同的操作系统和机器指令集;对于Java来说,只需要一个编译器(javac),编译形成的字节码是一种通用的代码,可以运行在任何安装了JVM的机器上,也就实现了所谓的“一次编写、到处运行”。

    使用字节码和虚拟机的语言不只有Java一种,Java是现在最出名的语言,LISP是更古老的语言(该语言主要用于人工智能和科学计算);其他使用类似于字节码的语言有Icon和Prolog

    004:比较下JDK、JVM和JRE的不同

    JVM是运行Java应用的虚拟机,主要模块有:类加载子系统、运行时数据区、即时编译(JIT)子系统、垃圾收集子系统等;

    JRE是Java运行时环境,主要包括Java SE API(基础类库和UI类库)和Java应用的部署套件。

    JDK是最大的概念,包括:JVM + JRE + Java语言 + JDK辅助工具(javac、jmap等)

    005:C++和Java之间最大的不同是什么?

    Java和C++的设计目标不同:(1)C++最初的设计目标是为了扩展C语言的能力,主要的应用场景是系统应用开发,跟C语言相比,C++增加了面向对象能力、异常处理、强大的资源管理能力、泛型编程、模板编程以及STL库等能力;(2)Java的设计目标是更加普遍,是纯粹的OOP语言、支持并发、更好的可移植性(跨平台能力),Java利用JVM实现了较高的安全性和可移植性。

    我认为,C++和Java最主要的几个不同可以列举如下(其他语言特性的不同在此不做讨论):

    C++ Java
    平台独立性 C++是平台相关性语言 Java是平台无关性语言
    指针 C++支持指针变量,因此我们可以将任何变量的地址存放在一个指针变量中 Java不支持指针变量
    语言级别 C++既可以当作是高级语言,也可以当作是机器级别的语言 Java是纯粹的高级语言
    内存管理 C++需要程序员手动管理内存的分配和释放 Java在大多数情况下不需要关心内存的分配和释放

    参考资料

    1. bytecode

    本号专注于后端技术、JVM问题排查和优化、Java面试题、个人成长和自我管理等主题,为读者提供一线开发者的工作和成长经验,期待你能在这里有所收获。javaadu

  • 相关阅读:
    Win7+Centos7双系统安装/树莓派安装Centos7
    C++学习笔记
    Ubuntu Codeblocks配置Eigen Sophus
    Java笔记
    解决Mac下AndroidStudio内容时卡顿
    解决Android RadioGroup跑到输入法上面
    Activity去掉标题不成功的解决方法
    Synergy屏幕共享键鼠 (for Mac&Ubuntu)
    Android 限制控件多次点击
    Bitmap 创建、转换、圆角、设置透明度
  • 原文地址:https://www.cnblogs.com/javaadu/p/10713935.html
Copyright © 2011-2022 走看看