Java基础入门
开始之前
学习一门计算机语言的要点
- 学习语言的语法
- 学习语言的编程规范
- 注意错误提示
- 语法错误:出现多个错误时,特别要留意第一个错误
- 逻辑错误:程序的设计错误
- 注意错误提示
- 多读程序范例
- 多动手实践
对Windows环境的了解
-
在Windows资源管理器中显示文件后缀的问题
-
通常情况下,在Windows中文件的后缀名是隐藏的,我们在编辑java程序的时候,需要补充源文件的后缀**.java**,而有些文本编辑程序,如:记事本,在保存文本文件的时候会自动增加一个后缀**.txt** ,那么我们在保存java源程序文件的时候,原本我们想保存为如:HelloWorld.java,但系统却将之保存为:HelloWorld.java.txt 。而系统默认对文件名的后缀是不显示的,那么我们看到的文件名为HelloWorld.java ,而实际上的文件名为:HelloWorld.java.txt ,这就导致我们在编译源代码的时候,java编译器找不到我们指定的源代码文件。
-
解决方案:
- 由于Windows的版本不同,方式不太一样,但是都要找到下面的这个对话框,将方框内的勾去掉,然后“确定”,即可。

-
-
Windows控制台窗口的打开
- 我们经常需要执行jdk的命令,而这些命令需要在Windows的控制台中执行,这时,我们需要打开控制台。
- 打开控制台需要执行Windows的外部命令:cmd。因为Windows不同版本,执行外部命令的方式不同,这里就不再展示了。
- 窗口中的C:\Users\admin>为命令行提示符,该提示符反映了我们现在的工作磁盘为C盘(也经常称为:当前盘为C盘,这里“ 当前 ”, 表示正在 “使用的”意思),我们的工作目录(也称为:当前目录,所谓“ 目录 ”即是通常我们所说的“文件夹”) 为C盘中的“\Users\admin”。
- 控制台中的字号是可以修改的,方法是在控制台的标题上右击,选择“属性”,在弹出的对话框中选择“字体”选项卡,在该选项卡上可进行字体大小的选择,当然也可以进行其他属性的设置。

- 若需要复制、粘贴窗口中的文字,可以在窗口中单击鼠标右键,呼出快捷菜单,选择“标记”,然后可以在窗口中拖动鼠标的左键进行文本的选择,选择完成以后,点击鼠标右键,或者按
ctrl+c,可以将选择的文本复制到剪贴板中。在粘贴的时候,可以单击鼠标右键,在快捷菜单中选择“粘贴”,或者按ctrl+V,即可实现粘贴。 - 注意:为了减少内存的消耗,我们建议大家只打开一个控制台窗口。
-
Windows控制台中的常用操作命令及概念
- 工作磁盘的切换:
- 在Windows中的磁盘是由盘符所标识的,盘符的编号从
A:到Z:,其中A、B这两个盘符为软盘保留的,从C开始是其他磁盘(包括U盘、硬盘、光盘等)的开始编号; - 我们经常需要将工作磁盘,也就是当前盘转至某个磁盘,这时的命令为在命令行上输入盘符,再敲入回车即可。比如:我们要切换到D盘作为当前盘,我们在命令行上输入D:,然后输入回车,这时D盘就成为当前盘。
- 在Windows中的磁盘是由盘符所标识的,盘符的编号从
- 路径
- 所谓路径,反映的是目录的层次结构,它分为绝对路径和相对路径, 如图所示的目录结构

- 绝对路径:图中的当前目录为b1,它和b2 均为a的下级目录,它有一个子目录c1 ,当前盘为E盘,这里如果要表示c1,用绝对路径可以写作:“ \a\b1\c1 ”,它表示从根目录出发到达 c1的层次关系,这里的第一个反斜线表示E盘的根目录,其他的反斜线表示目录之间的层次关系;
- 相对路径:考虑上面的示例,当前目录仍然为b1,则用相对路径表示c1,可以写作:“ .\c1 ”,它表示从当前目录出发到达 c1 的层次关系,这个写法中开始的那个“. ”,表示当前目录,前面的“.** ”可以省略。当前目录的上级目录**(也称为父目录 )用“.. ”表示;
- 考虑:当前目录仍然为b1 ,如何写出b2的相对路径?
- 所谓路径,反映的是目录的层次结构,它分为绝对路径和相对路径, 如图所示的目录结构
- 工作目录的切换
- cd命令
- 在命令行上输入cd回车 ,会显示当前盘和当前目录
- cd命令后面可以加上路径,表示把当前目录切换到路径所指示的目录,如上图,从b1 切换到c1 可以执行“ cd c1 ”,cd 和路径 之间记得至少一个空格
- 考虑 :如何用绝对路径或者相对路径从b1 切换到b2?
- cd命令
- 查看目录中的内容
- 我们经常在控制台中查看某个目录下的内容,这是我们用“dir ”这个命令,不加参数的dir 命令,它显示的是当前目录下的内容;
- 如果需要显示指定的某个目录下的内容,则在dir 后面加上路径(相对 或者绝对路径 ),记得dir 和路径 之间至少要有一个空格
- 工作磁盘的切换:
JDK的下载与安装配置
所谓JDK,是Java SE Development Kit的缩写,程序员在做Java程序开发的时候需要该开发工具的支持;
所谓JRE,是Java Runtime Environment的缩写,如果一个Java程序需要运行,则需要JRE的支持,如果你的计算机只是用来运行Java程序,不需要下载JDK,只需要JRE即可。
首先,打开浏览器,在地址栏中输入:http://www.oracle.com/technetwork/java/javase/downloads/index.html (opens new window),在该网页中下载最新版本的JDK,具体下载与安装过程不再赘述。
安装完成以后,需要设置系统的path,设置path的目的是为了让操作系统找到JDK中所提供的工具命令。JDK的工具命令在Java的安装目录下的bin 目录下。每当对path进行重新设置以后,如果Windows中已经启动了控制台,重新设置的结果对该已启动的控制台无效,必须关闭该控制台,并重新打开控制台,方可;
- path环境变量是系统环境变量中的一种,它用于保存一系列的系统查找路径,每个路径之间以分号分隔。在命令行窗口运行一个可执行文件时,操作系统首先会在当前目录下查找该文件,如果不存在会继续在path环境变量中定义的路径项目中去寻找这个文件,如果仍未找到,系统会报错。如图:

- classpath环境变量也用于保存一系列路径,它和path环境变量的查看与配置的方式完全相同。但它同path的区别在于, path是用于查找windows系统中可执行文件(如: .exe、.bat等文件)的路径,而classpath是查找java类文件的路径(也就是 .class文件)。当Java虚拟机需要运行一个类时,会在classpath环境变量中所定义的路径下去寻找所需的class文件。如果不配置该环境变量,JDK默认会到当前目录以及JDK的lib目录下查找 .class类文件,在初学阶段,我们可以先不配置该环境变量。如下图:
这里因为系统中没有定义classpath或者是classpath虽有定义,但是在classpath所定义的所有路径中并未找到HelloWorld.class文件。
Java程序的编辑、编译、运行及垃圾回收机制
对于大多数编程语言,要么是编译( compile )要么是解释( interpret )执行。Java是编译解释 执行的。 通过编译器(compiler),首先将程序转换为 Java bytecodes ,它不依赖于具体的平台,然后在具体操作系统上,有解释器,它解释执行Java bytecode指令。程序员在设计好Java程序以后,需要经过编辑、编译、运行三个阶段,如图:

可以把Java bytecodes当作 Java Virtual Machine (Java VM)的机器指令。通过Java bytecodes使得 “write once, run anywhere”成为现实。 bytecodes 运行在所有实现Java VM的机器上,如图:
Java程序是由虚拟机负责解释执行的,而非操作系统。这样做的好处是可以实现跨平台性,也就是说针对不同的操作系统可以编写相同的程序,只需在不同的操作系统上安装Java虚拟机即可。需要注意的是,Java程序具有跨平台特性,但Java虚拟机并不是跨平台的。也就是说,不同操作系统上需要安装该操作系统可运行的的Java虚拟机。
Java程序的编辑
- 常用编辑软件
- 记事本:在Windows系统中,我们可以使用“记事本 ”作为编辑源代码的工具来使用
- 第三方文本编辑软件,如UltraEdit、EditPlus等,这里特别推荐Sublime Text
- 集成开发工具,如Eclipse、NetBeans等,对于初学者,建议先不要使用这些IDE开发工具,这些IDE开发工具可以帮助提高开发效率,但对于初学者却不利于掌握Java开发的基本知识,就像一个好的木工首先要熟练使用手工工具一样。
- SublimeText的使用
-
SublimeText有安装版,也有免安装版,大家可以到http://www.sublimetext.com/3 (opens new window)下载,建议下载免安装版(portable version);
-
将之解压到某个磁盘下,运行sublime_text这个可执行程序。可以通过购买该软件的license,进行注册,也可以直接使用,但是会经常弹出未注册提示信息;
-
设置字体的大小,可以打开Preferences 菜单,选择Font 下的Larger 或者Smaller 来增大或者缩小字体,大家记住它的快捷键在将来的使用中会事半功倍,字体增大的快捷键是Ctrl+Keypad Plus ,字体缩小的快捷键是Ctrl+shift+Keypad Plus,这里Keypad Plus即是键盘上的加号,如图:
-

-
SublimeText可以对很多语言进行编辑,我们这里需要让它识别Java语言,打开View 菜单,选择Syntax下的Java 下的Java ,也可以单击窗口右下角的
, 选择Java 下的Java 也可以进行设置。之后,我们在输入窗口中的源代码会识别为Java代码,代码中的不同语法成分会以不同的颜色显示,设置如图: -
代码示例如图: -

-
在SublimeText中新建文档,可以通过菜单File 下的New File 进行,也可以用鼠标在
的空白处双击即可; -
常用代码段的快捷输入:打开菜单Tools ,选择Snippets... ,会弹出
,拖动升降条,我们可以看到代码的快捷输入的方式; -
代码输入完成以后,打开菜单File ,选择Save ,输入符合Java规范的文件名,注意: Java是区分大小写的语言,包括文件名(虽然Windows不区分,但是在使用JDK的工具时,JDK工具是区分的,因此,虽然helloworld.java和HelloWorld.java,对于Windows来讲没有区别,但是Java却区别它,因此在保存Java文件的时候要注意大小写);
-
SublimeText虽然非常好用,但是它原生不支持中文,为了使得它能够支持中文,我们需要安装第三方包,有两种方法如下:
- 第一种:
- 大家可以从网上搜索ConvertToUTF8并下载,将ConvertToUTF8放在Sublime Text 3的 “C:\Sublime Text Build 3114 x64\Data\Packages”目录下面,该目录也可以通过Sublime Text 3的 Preferences > Browse Packages ... 菜单来打开。如图:


- 重启Sublime Text 3,打开乱码文件,按 Ctrl + Shift + C 即可解决乱码问题。
- 大家可以从网上搜索ConvertToUTF8并下载,将ConvertToUTF8放在Sublime Text 3的 “C:\Sublime Text Build 3114 x64\Data\Packages”目录下面,该目录也可以通过Sublime Text 3的 Preferences > Browse Packages ... 菜单来打开。如图:
- 第二种:
-
首先需要安装“Package Control”,安装“Package Control”的方式可分为如下两种:
1.1 使用Ctrl+`快捷键或者通过 View > Show Console菜单打开命令行,粘贴如下代码:import urllib.request,os,hashlib; h = '2915d1851351e5ee549c20394736b442' + '8bc59f460fa1548d1514676163dafc88'; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); by = urllib.request.urlopen( 'http://packagecontrol.io/' + pf.replace(' ', '%20')).read(); dh = hashlib.sha256(by).hexdigest(); print('Error validating download (got %s instead of %s), please try manual install' % (dh, h)) if dh != h else open(os.path.join( ipp, pf), 'wb' ).write(by)1.2 点击Preferences > Browse Packages菜单,进入打开的packages目录的上层目录,然后再进入Installed Packages/目录,下载 Package Control.sublime-package并复制到Installed Packages/目录,重启Sublime Text。
此时就可以在Preferences菜单下看到Package Settings和Package Control两个菜单了。
-
按下Ctrl+Shift+P调出命令面板或者或点击菜单Perferences->Package Control,
输入install 调出 Install Package 选项并回车,
稍等以后,在列表中选中要安装的插件,如:ConvertToUTF8。
-
- 第一种:
-
另外,我们经常会在我们的源代码文件中插入一些中文信息,如果我们不考虑字符编码问题的话,在编译时就会出错,如图:
我们有两种解决方案:- 第一种:我们只需要选择菜单File > Save with Encoding > UTF-8,如图:

- 第二种:我们选择菜单 Preference > Settings > User,如图:
在编辑窗口中插入"default_encoding":"UTF-8",,如图:
修改以后保存,以后再编辑文本文档,默认均以utf-8为字符的编码方案。
- 第一种:我们只需要选择菜单File > Save with Encoding > UTF-8,如图:
-
其他操作,大家自行发掘,或者查看网站的说明书,这里建议大家掌握常用的快捷键。
-
Java程序的编译
- 打开Windows的控制台,切换到你的Java源代码存放的位置,输入: javac 源代码文件名 ,例如:javac HelloWorld.java ,这里javac为JDK的工具命令,其后面跟随的是Java源代码文件名(注意空格进行分隔,并且别忘了后缀**.java** )。
- 如果正常编译完成,是没有任何提示的,如果出现任何提示,则表示你的源代码存在问题。正常如图:

- 出现问题如图:

- 编译生成了同源代码文件具有相同前缀,后缀为“.class ”的Java类文件(字节码文件),如本例生成了“HelloWorld.class ”
Java程序的运行
- 在命令行上输入:java 字节码文件名 ,例如:java HelloWorld ,注意这里“HelloWorld ”为字节码文件名的前缀(注意大小写 ),千万不要加文件后缀“.class ”或者“.java ”;
- Java系统会在虚拟机中运行指定的字节码文件;
- 如图:

垃圾回收机制
所有的计算机程序在运行时都会占用计算机的内存,其中代码占用一部分,更多的是由数据来占用,不再使用的内存空间应进行回收,以免内存被耗尽,造成内存泄漏,这时就需要进行内存的垃圾收集。在c/c++等语言中,由程序员负责回收无用内存。但是,程序员很难做到面面俱到,如果把垃圾回收的工作交给程序员编程实现,势必增加程序员的工作强度,并且不可靠。
Java语言消除了程序员回收无用内存空间的责任,Java虚拟机负责回收那些不再使用的内存,垃圾收集在Java程序运行过程中自动进行,程序员不必也无法精确控制和干预。