- 1.Java的语言特性:
- 2.JVM、JRE和JDK的关系
- 3.什么是跨平台?
- 4.字节码文件
- 5.Java中的类加载
- 6.Java和C++的区别
-
简单性:Java语言底层是采用C++语言实现的,相对于C++语言来说,java是简单的,在java语言中程序员不需要复杂的指针,继承方面也只有单继承,
-
面向对象:java语言和C++都是面向对象编程的语言,java中提供了封装、继承、多态等面向对象的机制
-
健壮性:在C++中无用的数据需要程序员手动释放,在Java中Java语言引入了自动垃圾回收机制(GC机制),Java程序启动了一个单独的打击回收线程,时刻检测内存的使用情况,在特定时机会回收/释放垃圾数据,这样会让内存时刻处于最好的状态。
-
多线程:java语言支持多个线程同时并发执行,同时也可以提供线程环境下的安全机制
-
可移植性/跨平台性:表示java程序只要编译一次就可以在各个 *** 作平台上就行运行。Java 代码既可以运行在 windows 的环境下,又可以运行在 Linux 的环境下,而不需要修改 Java 源程序。这是因为Java虚拟机(JVM,Java Virtual Machine)这种机制,实际上java运行的时候并不是直接运行在 *** 作系统上面的,而是在 *** 作系统上先安装一个JVM,把Java程序放到JVM当中运行,JVM屏蔽了各种 *** 作系统之间的差异,这样就完成了跨平台。但是JVM虽然搞定了跨平台,但是同时也带了一些问题,没有JVM,Java程序试运行不了的。
- JVM - Java Virtual Environment 是Java虚拟机,Java程序是需要在虚拟机上运行的,不同的平台有自己的虚拟机,因此Java可以实现跨平台
- JRE - Java Runtime Environment 是Java程序所必须的环境的集合,包括Java虚拟机和Java程序所需要的核心类库等。核心类库有java.lang包:包含了Java程序必不可少的系统类
- JDK - Java Development Kit 提供给Java开发人员使用,其中包含了Java开发工具,也包括了JRE。如果这台机只运行Java程序,则不需要安装JDK只需要安装JRE即可
平台指的是不同的 *** 作系统
跨平台是指Java源代码一次编译后,可以在不同的 *** 作系统中运行比如(window、liunx)
实现原理:只要该系统可以安装相应的虚拟机,那么该系统就可以运行Java程序
4.字节码文件Java编译后生成的.class文件就是字节码文件,他不面向任何特定的处理器,只面向虚拟机
采用字节码的好处:Java语言通过字节码的方式,从一定程度上解决了传统语言效率低的问题,同时又保留了解释型语言可移植的特点,而且字节码并不专对一种特定的机器,因此Java程序无需重新编译就可以在不同的计算机上运行。
5.Java中的类加载使用“Java”命令运行已编译的Java程序,假设编译之后的字节码文件是A.class,则在dos命令窗口中执行java A 命令,这个时候Java虚拟机就启动了。java虚拟机通过==“类加载器ClassLoader”==从硬盘中找到A.class文件并装载,字节码文件被装载到Java虚拟机之后,Java虚拟机解释器对字节码进行解释,最后解释为二进制码,然后 *** 作系统通过执行二进制指令来和硬件平台完成交互。
- Java 程序从开发到运行包括编译和运行两个阶段,这两个阶段可以在不同的 *** 作系统 中完成,例如在 windows 环境下进行编译,在 Linux 环境下运行,这是因为有 JVM 机制的存在,做到了一次编译到处运行(跨平台/可移植)。
- 编译阶段需要使用 javac.exe(安装 JDK 之后该命令就存在了)命令,运行阶段需要使 用 java.exe(安装 JRE 之后该命令就存在了)命令。
- 一个 Java 源文件可能会编译生成多个 class 文件。
- Java 源文件中的源代码如果不符合 Java 的语法机制则编译时编译器会提示错误信息, 并且无法生成 class 文件。而 class 文件才是最终要执行的程序,此时将 Java 源文件删除是不会影响 Java 程序运行的(当然,我们也不必删除 java 源文件,因为在 运行 class 文件之后,如果没有达到预期的运行效果,这个时候还需要将 Java 源代码修改,重新编译,以达到最终的运行效果)。
- 若生成的字节码文件名为 A.class,那么我们称 A为一个类的名字
- 当编译阶段完成之后,我们可以使用 JRE 中的 java.exe 命令运行程序,例如执行命令 “java A”,该命令执行后会启动类加载器,类加载器去硬盘上搜索 A.class 文件,找到该字节 码文件之后,将其加载到 JVM 当中,JVM 中的解释器会将 A.class 字节码文件解释为 *** 作系统可以执行的二进制码,然后 *** 作系统通过执行二进制码和硬件平台交互。
- 运行 Java 程序的前提是当前 *** 作系统上已经安装了对应版本的 JVM(JVM 不是单独安装的,安装 JRE 即可,不同的 *** 作系统需要安装不同版本的 JRE,不同版本的 JRE 对应不同版本的 JVM)。
- 都是面向对象的语言,都可以进行封装和继承
- Java不提供多继承,C++支持多继承,但是Java中的接口可以支持多继承
- Java有自动内存管理机制(GC),无需程序员手动释放无用内存
- Java不提供指针来访问内存,内存更加安全
a有自动内存管理机制(GC),无需程序员手动释放无用内存
- Java不提供指针来访问内存,内存更加安全
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)