第一章
第一节
理解程序设计语言
计算机中运行着许多软件,每个软件都有它各自的功能,windows操作系统也是软件,简单的说操作系统是帮助我们更好的操控机器,以便完成各种工作,而制作软件的材料就是程序设计语言,它是和机器沟通的工具,例如C语言,Java语言。
理解编辑、运行
就像我与你对话,我的声带发出声音通过空气传播,你从耳朵里面听到并由大脑接收并做出动作一样,程序设计语言与机器交流也有一个相当的过程,在编辑器写好一个程序,保存为.java文件,然后交给java程序运行你编写的代码,之后Java程序与操作系统沟通,调用计算机硬件资源例如处理器,内存等执行你编写的程序。
jdk、jre和编译
我们都知道Java是跨平台语言,也就是说我们编写的可执行Java程序,无需修改就可以在windows,Linux,mac操作系统上运行,相比c语言在windows上编写后生成的.exe文件在Linux上就无法运行;既然大家都是语言为什么Java可以跨平台呢,这得益于Java虚拟机,类似于各个平台的操作系统上都开发一个中间转接程序,对于下方操作系统我都可以调用对应的资源,对于上方我都可以执行一个统一标准的.class文件,这个程序就称为java运行时环境,简称jre。那.class文件怎么生成呢,这个就是jdk的作用,全称为Java开发工具包,它就是负责把Java源代码变成.class字节码的工具,而这个过程我们就称为编译。
开发环境搭建
由上节课学习得知jre是运行,jdk是编译,那我们需要把这两个软件都安装到计算机中才能开发Java程序吗?事实上jdk既然是开发工具包它就包含一整套工具,例如编译程序,运行程序,调试程序,安装一个就可以了,但是全部安装也没错。
需要注意的是我们要让计算机知道这个.Java文件就用我们安装的jdk程序执行,这可以通过计算机环境变量来实现或者通过制定文件来实现。就像是.mp4文件要指定用视频播放器才能打开正常播放,而记事本是无法正常打开.mp4文件的。
在oracle甲骨文官网下载jdk时会面临各种文件的选择。32和64是操作系统位数,目前大多数计算机都是64位,64位系统可以运行32位程序,反之则不成立。.zip是绿色版,无需安装就可以使用,msi是Microsoft install 安装包,简单说安装时它会告诉操作系统一些事情,例如我是谁,我是干什么的等,表象上看会在开始菜单出现启动按钮,添加到更新服务等,tar.gz是Linux当中常用的压缩包,相当于绿色安装包,指定文件就可以运行,其他dmg,rpm均是对应操作系统下的安装包。
程序编写
打开记事本,将如下代码复制进去
public class Main{
public static void main(String[] args){
System.out.println(“HelloWord”);
}
}
接着保存文件为Main.txt,文件名可以任意,但首字母一定要大写,有些同学可能疑问我们不是要编写java程序代码吗?为什么是文本文件,事实上他们都是文件,我们只需简单的将文件后缀名.txt修改为.java,文本文件就变成了java源文件。
编译和运行java程序
以windows命令行程序运行为例(打开cmd为win+r键)
- 使用jdk中的javac程序将.java源文件编译为.class类文件,此命令会在.java文件所在目录下生成同名.class文件。
"D:\Program Files\Java\jdk1.8.0_321\bin\javac.exe" c:\Users\zhangsan\Desktop\Main.java
- 使用jdk或jre中的java.exe执行类文件
- 加参数-cp。
- java.exe指定的运行对象只是类文件名字,无需加后缀.class
- 类文件只需指定目录,\类文件名 会被命令行当成目录导致执行找不到类文件错误,
"D:\Program Files\Java\jdk1.8.0_321\bin\java" -cp c:\Users\zhangsan\Desktop\ Main
错误分析
- 'D:\Program’不是内部或外部命令,也不是可运行的程序或批处理文件。
这是文件名中包含空格,在执行命令时cmd会将空格前的字符解析为运行程序,只需将目录名用双引号括起就能将其解析为正常目录。
- 找不到或无法加载主类 c:\Users\zhangsan\Desktop\Main.java。
因为java执行的是类文件,这个错误是因为找不到类文件,未执行类文件。
- 找不到或无法加载主类 c:\Users\zhangsan\Desktop\Main.class。
找不到类文件而错误,这个错误是因为java中以.(点)分隔包名,会将其看成指定名为class的自定义类,显然是找不到的。
- 弹出java命令建议c:\Users\zhangsan\Desktop\Main
这个错误是因为未指定类文件名,显然是命令不全导致错误。