J a v a Java Java的创始人是詹姆斯·高斯林 ( J a m e s G o s l i n g James\ \ Gosling James Gosling)。为什么要把这门语言叫做 J a v a Java Java呢?这里有两个较为流行的版本,其中一个版本是把开发人员的首字母拼凑出了 J a v a Java Java这个名字。另外一个比较热门的版本是, J a v a Java Java的创始人喜欢喝咖啡,这也就是为什么 J a v a Java Java的图标是一杯咖啡。而 J a v a Java Java是一座岛屿的名称,这个岛屿盛产咖啡,因此高斯林就把 J a v a Java Java作为了语言的名字。沿着这个思路出发,我们就能理解为什么 J a v a Java Java中有很多名词都与咖啡有关,比如 J a v a B e a n JavaBean JavaBean等,Bean就是咖啡豆的意思。
J a v a Java Java是一门面向对象的语言,这里与 C + + C++ C++类似。那我们为什么不去学C++而是学Java呢? J a v a Java Java相比于 C + + C++ C++而言, J a v a Java Java的学习难度较小,更为重要的一点是, J a v a Java Java的生态要比 C + + C++ C++完善的多。除此以外, J a v a Java Java语言是可以跨平台运行的,比如说我们写了一个 J a v a Java Java程序,这个程序在安卓、苹果、windows等多个平台都可以运行。 J a v a Java Java是如何实现的呢?我们在后续介绍 J a v a Java Java代码编译运行的过程时,会做详细地讲解。
J a v a Java Java代码的编译运行的过程比C语言的步骤要简单一些。
整体过程如下图所示:
想要运行 J a v a Java Java代码就需要先下载好 J D K JDK JDK,什么是 J D K JDK JDK?
J D K JDK JDK是 J a v a D e v e l o p m e n t K i t ( J a v a 开发工具包) Java\ Development\ Kit(Java开发工具包) Java Development Kit(Java开发工具包)。这个工具包中包括了 J a v a Java Java编译器、 J a v a Java Java运行工具、 J a v a Java Java文档生成工具、Java打包工具等。
当我们下载好后,我们就可以去用 J D K JDK JDK包中的工具去编译 j a v a java java代码了。我们这里用到的工具是 j a v a c javac javac。编译过后,就会生成后缀为 c l a s s class class的文件。这些文件叫做字节码文件。这些文件的内部都是用二进制编写的。
接着我们可以通过 j a v a x x x java\ \ xxx java xxx命令根据字节码文件生成可执行文件,即.exe文件。这里的xxx
是文件名(不包含后缀)。根据前面的介绍,我们知道 J a v a Java Java代码是可以跨平台运行的。那么是怎么实现这个功能的呢?其实很简单,我们只需要在二进制文件和真实环境之间添加一个虚拟环境。我们的二进制文件就在虚拟环境上运行,然后生成对应真实环境的可执行文件。相当于添加了一个转化器。
因此,我们 j a v a x x x java \ xxx java xxx命令是在 J V M JVM JVM上运行的。 J V M JVM JVM是指 J a v a V i r t u a l M a c h i n e ( J a v a 虚拟机 ) Java\ \ Virtual\ \ Machine(Java虚拟机) Java Virtual Machine(Java虚拟机)。
在 J V M JVM JVM上运行结束后,就会生成可执行文件了。
他们三者的关系可以用下图表示:
JDK是指: J a v a D e v e l o p m e n t K i t ( J a v a 开发工具包) Java\ Development\ Kit(Java开发工具包) Java Development Kit(Java开发工具包)
JRE指的是: J a v a R u n t i m e E n v i r o n m e n t ( J a v a 运行环境) Java\ Runtime\ Environment(Java运行环境) Java Runtime Environment(Java运行环境)
JVM指的是: J a v a V i r t u a l M a c h i n e ( J a v a 虚拟机) Java\ Virtual\ Machine(Java虚拟机) Java Virtual Machine(Java虚拟机)
public class HelloWorld {
public static void main(String[] args) {
System.out.println("hello world!");
}
}
我们来解释一下上面的代码,首先public
表示的是权限,class
是一个关键字,表示类
。类可以理解为C语言中的结构体,只不过C语言的结构体中只能包括变量,而类中可以包括函数,在Java中函数叫做方法
。
那么第一行代码的意思就是,创建了一个类,类的名称叫HelloWorld
,然后这个类的访问权限是public
。
接着我们看这个类里面是什么,这个类的里面有一个方法(也就是函数)。
我们从左到右看这个方法,首先是表示访问权限的关键字public
,然后是一个静态关键字static
,这个关键字在后续的文章中会进行详细地讲解,这里不做过多的叙述。然后是这个方法的返回值void
以及方法名main
。后面的括号内部是一个叫做args的字符串数组作为方法的参数。
在方法体内部是一个hello world!
的打印。这个打印方式相当于C语言中的printf
。所以我们记住即可。
与C
语言相比,我们最不能理解的是参数,为什么Java
的main函数中要传入一个字符串数组?
根据前面的介绍,我们可以知道,当我们将.java
文件转化为.class
的字节码文件的时候,使用的是javac xxx.java
命令。当我们将.class
文件在java的虚拟机上运行时,我们使用的是java xxx
命令。这里的xxx
是文件名(不包含后缀名)。我们可以在文件名的后面继续添加一些命令,而这些命令就会传递到args
数组中。
.java
文件中可以包含多个类,但是只能有一个类可以被public
修饰,同时这个被public
修饰的类的类名需要跟文件名一致。-encoding utf-8
命令。在Java中,标识符是用于标识变量、方法、类、接口和其他自定义构造的名称。它们可以是任何字母、数字、下划线(_)或美元符号($)。
标识符的命名规则如下: