JAVA环境搭建与第一个helloworld

1.概念

JVM:Java虚拟机,.class最终运行于此;

JRE:Java运行环境,包含JVM和JAVA类库(如java.util);

JDK:Java开发工具包,包含JRE和一些工具(如javac.exe)。

JVM∈JRE∈JDK

如果不编译只运行只需JRE即可,如果要编译就要JDK。

2.安装JDK

Oracle收购了Sun,现在Java属于Oracle

去Oracle官网下载JDK:https://www.oracle.com/technetwork/java/javase/downloads/index.html

安装最新版本即可,如果安装旧版通常要注册Oracle账户。

我装的是jdk13,装完之后没有看到jre文件夹,看网上教程发现还要手动安装jre:

在jdk的目录下:

bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre

但后来重新安装一次JDK又有了,迷惑。。。

3.配置环境变量

在path中增加一个bin目录的环境变量即可

4.hello world

public class Test {
	//static表示唯一,main是唯一入口,static是特征修饰符
	public static void main(String[] args) {
			System.out.println("hello world"); //ln和没ln的区别是空行
	}
}

把文件命名为Test.java

然后编译:javac Test.java -encoding UTF-8

因为有中文注释,所以加编译选项,

然后运行:java Test

注意这里虽然运行的是.class文件,但不需要写.class

结果:

JAVA环境搭建与第一个helloworld_第1张图片

5.一个注意点

.java文件里最多只能有一个public类,并且该文件的名字必须与该public的类名保持一致,(如果没有public类的话文件名就随便)

 

为什么如果有public类,文件名就要和类名一致呢?

网上看到一种比较好的解释(https://blog.csdn.net/WaitForFree/article/details/51033457):

是为了加快编译速度。

比如在文件a.java中有类a,类b,而文件k.java中有类c,a.java想用到类c,就要先编译类c所在的java文件,但它怎么知道编译哪个文件才能得到类c呢,当然可以所有文件都找一遍但这样是很低效的,所以就规定类c(前提是public类,即可以被其他文件调用)所在的文件名必须和c的类名一致(即c),这样就方便编译器找到它从而编译它。

 

为什么c++没有这种规定呢?

因为c++还有链接期。

c++是先编译,不同的文件会生成不同的符号表,如果文件a要导入另一个外部类,就会先在符号表的对应位置填个“?”,然后在链接过程再去查找其他文件生成的符号表(直到找到为止),来填补那个“?”,所以c++会稍微耗时点。

 

 

你可能感兴趣的:(Java学习)