Java基础知识(一)
JAVA基础知识(一)
前言
由于博主已经大三了,即将面临毕业找工作的难题~~,所以希望能够通过写一系列的java基础知识的博客来帮助自己复习,当然如果能帮助到想要学习java的小伙伴就更好了QWQ
(本文的大部分知识点都出自于SnailClimb大神,大神的github地址: https://github.com/Snailclimb/JavaGuide/blob/master/docs/java/basis/Java%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86.md#11-java-%E5%85%A5%E9%97%A8%E5%9F%BA%E7%A1%80%E6%A6%82%E5%BF%B5%E4%B8%8E%E5%B8%B8%E8%AF%86 )
提示:以下是本篇文章正文内容
一、JAVA的特点是什么?
1.简单易学
2.面向对象(封装继承多态)
3.依赖jvm而实现的平台无关性
4.可靠性
5.安全性(其中有一点是因为java未提供指针访问内存,所以相对 于c而言 程序能存更加安全)
6.支持网络内存并且便于进行网络编程。
7.相对而言效率并不是很高(代码量少并不意味着效率高!python 的效率更低!之后会单独有文章写为什么java的效率与c++低很 多)
8.多线程( C++ 语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而 Java 语言却提供了多线程支持);
9.编译与解释共存
二、关于JDK、JRE和JVM
JDK 是 Java Development Kit 缩写,即JAVA开发工具,相比于JRE而言,他包含了JRE拥有的一切,并且额外包含了JAVAC编译器和一些JAVA工具(javadoc、jdb等等),
JRE 是 Java Runtime Environment的缩写,即JAVA运行环境。它是运行已编译 Java 程序所需的所有内容的集合,包括 Java 虚拟机(JVM),Java 类库,java 命令和其他的一些基础构件。但是,它不能用于创建新程序。
一般来说,如果仅仅需要运行JAVA程序的话,只需要安装有JRE就可以了,如果需要开发JAVA程序,则需要安装JDK,当然也有例外,例如,如果要使用 JSP 部署 Web 应用程序,那么从技术上讲,您只是在应用程序服务器中运行 Java 程序。(应用程序服务器会将jsp文件转为java servlet,并且需要jdk来编译servlet)。
重点:JVM(JVM很重要,详细的会在之后的文章说):
Java 虚拟机(JVM)是运行 Java 字节码的虚拟机(又称为JAVA核心虚拟机)。Java虚拟机是java具有跨平台性(平台无关性)的核心,jvm针对不同的平台有着特定的实现,通过先将java文件编译成class文件,然后再将class文件解释成机器码这种方式,保证了在不同平台的相同输入有相同输出这一特性。
字节码:在JAVA中。JVM可以理解的代码就被称为是字节码(class文件),字节码并不面向任何处理器、操作系统,只面向虚拟机。
Java的编译解释过程图解:
为什么java是编译与解释共存?
首先,我们要先知道什么是编译型语言,什么是解释型语言?
简单地说,编译型语言即编译器一次性将源码编译成可以被机器执行的机器码,而解释型语言则是编译器将源码逐行翻译并且立即执行。
如上图解,我们可以发现,java在处理源代码时需要先将源码编译成class文件,然后再将class文件翻译成机器码并执行。而在此过程中,源码–>class类似编译型语言,class–>机器码类似解释型语言,所以java编译与解释并存。(后来java引入了JIT编译器,这个过程略有改变)
三、JAVA和C++的对比(简略)
1.二者都是面向对象的语言(封装、继承和多态)
2.相比于c++,java 的执行效率较低
3.由于java并提供指针来访问内存,所以java的程序内存相对更为安全一些
4.java拥有多线程机制,而c++并无内置的多线程机制
5.java拥有内存垃圾自动回收机制(GC),而c++没有
6.java的只支持单继承,而c++的类支持多继承(值得注意的是。java的借口可以多继承)
7.Java中没有结束符这一概念