原文出处:http://bbs.itheima.com/thread-147627-1-1.html  注:手机阅读,需要在原文回复可见


1.基础知识


1-1 软件开发


1-1-1 什么是软件

软件:一系列按照特定顺序组织的计算机数据和指令的集合。


P.S.

指令的作用就是告诉计算机如何对数据进行加工


1-1-2 常见的软件

1系统软件:

如:DOS(Disk Operating System),windows,Linux等。


P.S.

还有其他系统,例如Android、IOS、MAC等。


2、应用软件:

如:扫雷,迅雷,QQ等。


1-1-3 什么是开发

一句话,制作软件。


1-2 人机交互方式


1-2-1 交互方式

 软件的出现实现了人与计算机之间的更好的交互。


*图形化界面(Graphical User Interface GUI):这种方式简单直观,使用者易于接受,容易上手操作。
*命令行方式(Command Line Interface CLI):需要有一个控制台,输入特定的指令,让计算机完成一些操作,较为麻烦,需要记住一些命令。


P.S.

早期操作电脑常用dos命令,因为需要记住很多命令,不利于普及,后期发展成图形界面,通过鼠标点击界面的形式,其实内部运行的还是这些命令。


1-3 计算机语言


通过DOS命令行的演示,发现原来操作计算机就如同和计算机说话一样,我们告诉它做什么,它就可以做什么。前提是,我们和它说的内容它必须识别才可以,这就是计算机语言。


1-3-1 什么是计算机语言

语言:是人与人之间用于沟通的一种方式。

例如:中国人与中国人用中文沟通,而中国人要和韩国人交流,就要学习韩语。


计算机语言:人与计算机交流的方式。如果人要与计算机交流,那么就要学习计算机语言。
计算机语言有很多种,如:C,C++,Java等。这里,我们选择其中的一种,Java语言。


2.Java语言概述


Java语言是SUN公司(Stanford University Network,斯坦福大学网络公司),1995年推出的一门高级编程语言。
Java语言是一种面向对象的编程语言。


P.S.

Java是允许使用者将应用程序通过网络从远端服务器传输到本地机上并执行的一种语言。

Java语言随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。
Java语言是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。


2-1 Java语言的三种技术架构


2-1-1 J2EE(Java 2 Platform Enterprise Edition)企业版

是为开发企业环境下的应用程序提供的一套解决方案。
该技术体系中包含的技术如Servlet、Jsp等,主要针对于Web应用程序开发。


2-1-2 J2SE(Java 2 Platform Standard Edition)标准版

是为开发普通桌面和商务应用程序提供的解决方案。
该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发,比如Java版的扫雷。


2-1-3 J2ME(Java 2 Platform Micro Edition)小型版

是为开发电子消费产品和嵌入式设备提供的解决方案。
该技术体系主要应用于小型电子消费类产品,如手机中的应用程序等。


P.S.

Java5.0版本后,三种技术架构分别更名为JAVAEE、JAVASE、JAVAME


2-2 Java语言的特点:跨平台性


2-2-1 什么是跨平台性?
通过Java语言编写的应用程序在不同的系统平台上都可以运行。


2-2-2 原理是什么?
只要在需要运行java应用程序的操作系统上,先安装一个Java虚拟机(JVM:Java Virtual Machine)即可,由JVM来负责Java程序在该系统中的运行。


wKioL1RLJpnz3GlrAACbaA6uHJk978.jpg

spacer.gif

因为有了JVM,所以同一个Java程序在三种不同的操作系统中都可以执行。这样就实现了Java程序的跨平台性,也就是说Java具有良好的可移植性。


P.S.

Windows系统就是C和C++编写的,所以Windows系统中内置了C和C++的解析器。所以C和C++语言编写的程序可以直接在Windows系统上执行。

但Java语言编写的程序如果要在Windows系统上执行,就需要在Windows系统中安装一套能够解析Java程序的软件,也就是JVM(Java虚拟机)。

类似的,在Linux、MAC执行Java语言编写的程序也需要安装各自系统对应的JVM。因此,JVM是不跨平台的,对应不同的操作系统有不同版本的JVM。
通过这种方式,就实现了Java语言“一次编译,到处运行”的跨平台性。JVM的作用就是搭建了Java语言编写的程序与操作系统的桥梁。


2-3 Java语言的环境搭建


2-3-1 明确什么是JRE,JDK

JRE(Java Runtime Environment:Java运行环境)

包括Java虚拟机(JVM:Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。


JDK(Java Development Kit:Java开发工具包)

JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用再单独安装JRE了。
其中的开发工具:编译工具(javac.exe),打包工具(jar.exe)等。


一句话:

使用JDK开发完成的java程序,交给JRE去运行。


P.S.

为什么JDK中包含一个JRE呢?

其一,开发完的程序,需要运行一下看看效果,就像.exe文件需要用windows环境运行一样。
其二,也是最重要的,JDK中的开发工具(如javac.exe、java.exe等)其实都是Java语言编写的应用程序,为了方便使用才打包成exe文件,如果没有JRE,那么这些工具是运行不了的。

总结:

JRE:JVM+类库(Java library)。

JDK:JRE+JAVA的开发工具。


2-3-2 下载JDK(Java Development Kit:Java开发工具包)

www.oracle.com     参阅oracle.html

www.java.sun.com  参阅java.html


P.S.

由于Sun公司已被Oracle公司收购,故访问www.java.sun.com会自动跳转到http://www.oracle.com/technetwork/java/index.html 


JDK下载示意图:

登录www.oracle.com,点击Downloads选项卡中的Java for Developers。


wKiom1RLJl3B2ZqCAAOF7gs0LHc370.jpg

                                                                                                              图 1

点击Java SE 7u51中的DOWNLOAD。

    

    wKioL1RLJsuC44FmAAQJV9kX4Kw170.jpg

                                                                                                           图 2


P.S.

7u51代表是JDK7,51代表子版本,u是update的缩写。


在下载之前,首先需要接受JDK的许可证协议,然后再点击jdk-7u51-windows-i586.exe进行下载。wKioL1RLJt-y7WHgAAOr-bi8z7g097.jpg  spacer.gif

                                                            图 3

P.S.

Windows x86对应的是windows 32位系统。

Windows x64对应的是windows 64位系统。

                                             

2-3-3 安装JDK

spacer.gifwKiom1RLJqXDYgghAAFsnh9OqcM497.jpg


下一步

wKioL1RLJwLikJTGAAH-Myc56dk055.jpg

spacer.gif

默认安装到了C:\Program Files\Java\jdk1.7.0_51\目录下,可以通过“更改”按钮对安装路径进行自定义。


P.S.

安装路径不要有中文或者特殊符号如空格等,否则后期开发中可能出现一些莫名其妙的错误。


下一步

wKiom1RLJsKgzQ4SAAECyy35cNM947.jpg

spacer.gif

正在安装中...复制文件结束,安装JDK完毕。   

wKioL1RLJz2xXP2dAAD7rVgTe0A998.jpg

spacer.gif

接下来出现的对话框是询问是否安装JRE(Java Runtime Environment:Java运行环境),这是可选的,因为JDK中已经包含Java的开发环境和运行环境(JRE),所以,一般情况下这里点击“取消”按钮即可。  


安装完成后的目录介绍:

wKiom1RLJv_TINhDAAGP2_Avy-o576.jpg


P.S.

可以看到同一台机器上可以安装多个版本的JDK。


wKiom1RLJwygoXdUAAKIW5vNMjk932.jpg


bin文件夹是二进制文件所在的目录,其中的exe文件都是开发Java程序所需要的命令文件。

wKioL1RLJ2-zjTAxAAHKAEq9OUs231.jpg

spacer.gif

2-3-4 常用的dos命令


打开命令提示符的两种方式

方式一:点击“开始”-->输入“cmd

wKiom1RLJyaAaOc-AABfWFs-6pY300.jpg

spacer.gif

方式二:点击“开始”-->点击“所有程序”-->点击“附件”-->点击“命令提示符

wKioL1RLJ4vDVKgNAAD5FFC62PI041.jpg

spacer.gif

通过cd命令(进入指定目录)进入Javac命令所在的目录下。


spacer.gif


P.S.

"cd jdk*"命令中的*是一种通配符,如果当前目录中有多个文件夹名称匹配,那么会自动进入第一个文件夹名称匹配的文件夹。

通过"cd .."可以退回到上一级目录。

通过"cd \"可以退回到根目录。


输入dir命令(列出当前目录下的文件以及文件夹)。

spacer.gif


输入javac命令(后缀exe可写可不写)。

spacer.gif


其他命令示例:

首先进入C:\test目录,输入md my命令(md是创建目录的命令)。

spacer.gif


效果如下:

wKioL1RLKWWjhef1AACsfSuIaA0144.jpg

spacer.gif

通过rd my命令删除my目录(rd是删除目录的命令)。

wKiom1RLKTvA2EY-AAANjcnm4Z4373.jpg


效果如下:

spacer.gifwKioL1RLKZjTedOqAADAWF7Nfvo029.jpg

如果my目录不是空目录,则使用rd命令删除不了。这样是为了防止误删除重要数据。


spacer.gifwKiom1RLKVXzvivJAAAWz0a39f4291.jpg


使用cd命令进入my文件夹,使用del命令删除文件夹中的文件。


spacer.gifwKioL1RLKcjCW15fAAAZ1weW6aA619.jpg


P.S.

删除所有的txt文件,可以通过"del *.txt"实现。

删除所有的文件,可以通过"del *"实现。


然后就可以成功删除my目录了。

wKiom1RLKYzD07pTAAAXPa6DHOQ221.jpg

spacer.gif

通过exit命令退出“命令提示符”窗口。


通过help命令获取所有命令的帮助信息。

spacer.gif

通过"help 命令"获取某个命令的帮助信息,例如:"help cd"。


spacer.gif


2-3-5 配置环境变量

在命令提示符窗口中输入javac命令后,会首先在当前目录中查找是否有该命令文件可以执行。如果没有,则会在path环境变量路径中查找,如果查找到,就会执行该命令。如果还没有找到,那么就会提示错误信息。

spacer.gif

为了能在命令提示符窗口中,在任何目录下都能够执行javac命令,则需要将javac所在的目录放入path环境目录中。


具体配置环境变量的步骤如下:

右击“计算机”-->点击“属性”。

wKiom1RLKcKwR_v_AACkNFbGuC8041.jpg

spacer.gif

点击“高级属性设置”。


spacer.gifwKiom1RLKcrwzrLUAADqRJAYY88281.jpg


点击“环境变量”。


spacer.gifwKioL1RLKiTyGKb2AAFkERG77DY590.jpg


将javac命令文件所在目录放入path路径中。


spacer.gif


P.S.

1、一定要将javac命令文件所在目录放入path路径的开头。否则,如果机器上以前已经安装了其他的JDK并且也已经配置了path环境变量,那么执行的javac命令就是以前的JDK中的javac命令。

2、环境变量中的各个路径一定要以分号进行分隔。

3、设置path环境变量的时候千万不要删除掉原来的内容。否则,很多程序将无法执行。


点击确定。然后一定要新开一个新的命令提示符窗口,再输入javac命令,就可以执行了。


spacer.gif


P.S.

如果一台机器上安装了多个JDK,通过javac -version可以确定使用的JDK当前版本。


spacer.gifwKiom1RLKfag6ZCyAAAhlezm5j0275.jpg


配置技巧


为了不因为jdk的目录或者目录名称的改变,而不断更改path的值。从而容易导致对path变量值的误操作,可以通过以下技巧完成。

新创建一个环境变量JAVA_HOME记录jdk的目录。

spacer.gifwKioL1RLKlKzpLBUAAB9Y4NrTgU815.jpg


在path中通过“%%”动态的获取JAVA_HOME的值即可。

spacer.gifwKioL1RLKl7CerHoAACAz7761T4897.jpg


P.S.

%path%表示动态获取path环境变量的值。
%JAVA_HOME%表示动态获取名称为JAVA_HOME环境变量的值。


P.S.

SystemRoot环境变量的默认值是C:\Windows。

spacer.gif


2-3-6 环境变量配置-临时配置方式

如果在别人的机器上进行Java程序的开发,设置path环境变量就不太好,那么就需要设置临时的环境变量。

临时配置方式:通过dos命令中set命令完成。


set命令:用于查看本机的所有环境变量的信息。

spacer.gif


set  变量名:查看具体一个环境变量的值。

spacer.gif


set  变量名=:清空一个环境变量的值。

spacer.gif


set  变量名=具体值:给指定变量定义具体值。

spacer.gif


想要在原有环境变量值基础上添加新值呢?
首先,通过“%变量名%”操作符获取到原有环境变量的值。然后,追加上新值,再赋值给该变量名即可。

P.S.

给path环境变量加入新值:set  path=新值;%path%。

spacer.gif


P.S.

1、这种配置方式只在当前dos窗口有效。窗口关闭,配置消失。

2、cls是清屏命令。

spacer.gif


spacer.gif


3-Java程序开发体验


3-1 编写运行Hello World


3-1-1 将Java代码编写入扩展名为.java的文件中。


①选择最简单的编辑器:

记事本。


②敲入代码:
class Demo{}


③将文件保存为:

Demo.java,这个文件是存放java代码的文件,称为源文件。


spacer.gifwKioL1RLKuXh6kORAAE1Tmp5q7o949.jpg


P.S

Hello World:代表学习计算机语言的第一个入门小程序。现在泛指接触新事物的第一步。
Class:是java中的关键字,用于定义类,java语言的程序代码都需要定义在类中。
关键字:被java语言赋予了特殊含义的单词。
Demo:为了方便使用这个类,给类自定义的类名。
{}:定义该类中代码的范围。


写代码,阅读性第一,功能性第二。


3-1-2 通过javac命令对该java文件进行编译。

1.有了java源文件,将其编译成JVM可以识别的文件。
2.在该源文件目录下,通过javac编译工具对Demo.java文件进行编译。

3.如果程序没有错误,没有任何提示,就会在当前目录下出现一个Demo.class文件,该文件称为字节码文件,也就是可以执行的java的程序。

spacer.gifwKiom1RLKqKwNiVIAAFZ5D8yBJ8776.jpg


3-1-3 通过java命令对生成的class文件进行运行。

1.  有了可执行的java程序(Demo.class字节码文件),通过运行工具java.exe对字节码文件进行执行。
出现提示:缺少一个名称为main的方法。


spacer.gifwKioL1RLKv_Aczd0AACStPMf5Oo245.jpg


2.  因为一个程序的执行需要一个起始点或者入口,所以在Demo类中的加入public static void main(String[] args){}

spacer.gif


3.  对修改后的Demo.java源文件需要重新编译,生成新的class文件后,再进行执行。

发现没有编译失败,但也没有任何效果,因为并没有告诉JVM要帮我们做什么事情,也就是没有可以具体执行的语句。


spacer.gifwKioL1RLKxSBqSrYAABQ1SZJu8c005.jpg


4.  想要和JVM来个互动,只要在main方法中加入一句System.out.println("hello java");。因为对程序进行改动,所以需要再重新编译,然后运行即可。


spacer.gif

spacer.gif


P.S.

main方法:作用在于保证一个类可以独立运行,因为它是程序的入口。
System.out.println():系统输出打印数据,可以将()中的内容打印在控制台上。通过该语句可以直接在控制台看到jvm运行java程序后的结果。


P.S.

1、javac命令的作用是对java程序进行语法性检查,一旦出错,就会打印出错误信息。

spacer.gifwKiom1RLKtuRlZvmAABUwbJMhHU210.jpg


例如:

System.out.println("hello java")语句后面缺少分号,就会报错。

根据报错的行数,找到错误的地方,进行修改。然后重编编译,运行。

需要注意的是java会出现连锁错误反应,也就是一个错误,会导致后面程序的多个错误。这时候只需要修改第一个错误,后面的错误都会解决掉。


2、java命令可以启动JVM,然后找到相应的class文件,再寻找程序入口,也就是main方法,然后调用该方法执行java程序。


3-1-4 常见错误信息

spacer.gifwKioL1RLKzfAAeEgAAEXpFgiBfY410.jpg


错误可能原因:

1、文件名写错。

2、当前路径下不存在该文件。

3、后缀名问题。


第三种问题查找及解决方案如下:

点击工具-->文件夹选项。

spacer.gifwKioL1RLK0bg44bGAAB9TW9n1tM773.jpg


点击“查看”选项,并且勾选掉“隐藏已知文件类型的扩展名”。

spacer.gifwKiom1RLKv_g8p0YAAEnX0X8LnY124.jpg


然后就可以看到文件真正的后缀名:

spacer.gifwKiom1RLKwyxGt66AAIGO3q1NeU586.jpg

只需修改后缀名为java,再重新编译、运行即可。


3-1-5 配置classpath环境变量

由于可能频繁执行多个class文件,并且多个class文件可能存储在不同的目录下,那么每次都在命令提示符窗口中切换目录会相当的麻烦。

classpath环境变量的作用类似于path环境变量,但是它的作用在于告诉JVM去×××到class文件。


JVM查找类文件的顺序:
1、如果没有配置classpath环境变量,JVM只在当前目录下查找要运行的类文件。

2、如果配置了classpath环境,JVM会先在classpath环境变量值的目录中查找要运行的类文件。


示例:

创建两个文件夹:test1、test2,两个文件夹中都有Demo.class文件。

spacer.gifwKioL1RLK2mSfLLDAAD67LqzIbU202.jpg

test1文件夹中的Demo.class,打印test1。


spacer.gifwKiom1RLKyPwBgzFAAD9Q4R6BIs724.jpg

test2文件夹中的Demo.class,打印test2。


spacer.gifwKioL1RLK4GQLbyhAAFZvJT5Qf0076.jpg

当前目录为test1,但是设置classpath的值为test2,这样可以看到结果打印为test2。


spacer.gifwKioL1RLK4vD2CP6AAFoxwzJfJs282.jpg

3、值的结尾处如果加上分号,那么JVM在classpath目录下没有找到要指定的类文件,会在当前目录下再查找一次。


示例:

设置classpath为test1和test2的上一级目录,此目录下不存在Demo.class文件。

设置当前目录为test1,可以看到结果为当前目录test1下的Demo.class被执行。

说明JVM在classpath目录下没有找到Demo.class,又在当前目录下也就是test1目录中进行了查找。

spacer.gifwKiom1RLK0iyJuBzAAB65i-e1SY074.jpg


4、值的结尾处如果没有分号,那么JVM在classpath目录下没有找到要指定的类文件,不会在当前目录下查找。即使当前目录下有,也不会运行。


示例:

设置classpath为test1和test2的上一级目录,此目录下不存在Demo.class文件。

设置当前目录为test,可以看到出错信息。

spacer.gif


建议:

配置classpath环境变量时,值的结尾处不要加分号,如果需要访问当前目录可以用 “.”(即当前目录)表示,这样可读性更好一些。

spacer.gif