A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始







    Chapter 1 Java概述

一、基本常识

1.1 软件开发

1.1.1 什么是软件?

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

    1、数据就是指现实生活中的年龄、姓名等信息。
    2、指令就是告诉计算机如何对数据进行处理。

1.1.2 常见的软件


    1. 系统软件(操作系统)
    如:DOS(Disk Operating System)、Windows、Linux、Android、iOS、MAC等。
    P.S.
    DOS系统是命令行方式操作的操作系统,为了便于用户操作,后来产生了图形化界面操作的操作系统,也就是Windows系统。
    2. 应用软件
    如:扫雷,迅雷,QQ等。
    P.S.
    系统软件和应用软件都是用计算机语言编写出来的,计算机语言调用底层指令处理数据。

1.1.3 什么是开发?
    制作软件。

1.2 人机交互

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

1.2.1 交互方式


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

1.3 计算机语言

1.3.1 什么是计算机语言?

    语言:是人与人之间用于沟通的一种方式。
    例如:中国人与中国人用中文沟通,而中国人要和韩国人交流,就要学习韩语。

    操作计算机就如同和计算机说话一样,我们告诉它做什么,它就可以做什么。前提是,我们和它说的内容它必须能够识别才可以,这就是计算机语言。


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


二、Java语言介绍

2.1 Java语言概述

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

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

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

2.2 Java语言的三种技术架构

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


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


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


    P.S.
    1、Java5.0版本后,三种技术架构分别更名为JAVAEE、JAVASE、JAVAME。
    2、由于现在已经出现了Android、iOS、Windows Phone等手机操作系统,所以J2ME架构基本上已经不用了。目前,流行的手机软件都是基于这些最新的手机操作系统进行开发。
    3、SUN公司已被Oracle公司收购,因此,Java以后会更火。


2.3 Java语言的特点:跨平台性

2.3.1 什么是跨平台性?

    通过Java语言编写的应用程序在不同的操作系统平台中都可以运行。

    P.S.

    国内操作系统市场已被Windows彻底征服,但国外用户操作系统选择项较多。因此,程序员做软件需要考虑跨平台性,而Java语言就具备跨平台性的特点。

2.3.2 原理是什么?

    只要在需要运行java应用程序的操作系统中,先安装一个Java虚拟机(JVM:Java Virtual Machine)即可,由JVM来调用操作系统底层指令解析、执行Java程序,从而在该操作系统中运行。


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

    P.S.
    1、JVM是不跨平台的,不同的操作系统有不同版本的JVM。
    2、用C++语言编写的程序在Windows系统中可以直接运行,在Linux系统中则不可以。这是因为Windows系统是用C和C++语言编写的,Windows系统中也内置了C和C++的解析器,所以C和C++语言编写的程序可以直接在Windows系统中运行。但Java语言编写的程序如果要在Windows系统中执行,就需要在Windows系统中安装一套能够解析、执行Java程序的软件,也就是JVM(Java虚拟机)。类似的,在Linux、MAC系统中执行Java语言编写的程序也需要安装各自系统对应的JVM。通过这种方式,就实现了Java语言“一次编译,到处运行”的跨平台性。JVM的作用就是搭建了Java语言编写的程序与操作系统之间的桥梁。

三、Java语言的环境搭建

    使用任何一门语言之前必须首先搭建环境。

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的开发工具。



3.2 JDK的下载与安装

3.2.1 下载JDK(Java Development Kit  Java开发工具包

    官方网站:

    www.oracle.com
    www.java.sun.com

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

    JDK下载步骤示意图:
    1. 访问www.oracle.com,点击Downloads下的Java for Developers。


         
    2. 点击JDK下的DOWNLOAD按钮。



    P.S.
    8u45代表JDK8版本,45代表子版本,u是update(更新)的缩写。

    3. 在下载之前,首先需要接受JDK的许可证协议,然后再点击jdk-8u45-windows-i586.exe(32位)/jdk-8u45-windows-x64.exe(64位)进行下载。





    P.S.
    Windows x86对应的是windows 32位系统。
    Windows x64对应的是windows 64位系统。

3.2.2 安装JDK

    1. 双击“jdk-6u21-windows-i586.exe”文件,点击“下一步”。




    2. 继续点击“下一步”。
    默认安装目录为“C:\Program Files(x86)\Java\jdk1.6.0_21\”,可以通过“更改”按钮对安装路径进行自定义至D:\Java\jdk1.6.0_21\路径下





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

    3. 继续点击“下一步”。



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

    4. 接下来出现的对话框是询问是否安装JRE(Java运行环境),这是可选的,因为JDK中已经包含开发环境和运行环境(JRE)两部分。所以不需要安装,一般情况下可以直接点击“取消”按钮。



    P.S.
    如果你只运行已有的Java程序而不要进行Java程序的开发,那么只需安装JRE即可(因为JRE的体积较小)。

    如果点击下一步:


    5. 点击“关闭”按钮,安装完毕。


    P.S.
    1、JDK无需每次都安装,因为其本身就是绿色版本,可以直接存入U盘,在任何计算机上都可以直接使用。
    2、采用安装的方式使用JDK的好处在于其会在注册表中被注册,当JDK出现新版本,会自动更新。

3.3 JDK中的命令行工具

    1. JDK安装目录下的bin(binary)文件夹是二进制文件所在的目录,其中的exe文件(都是使用java语言编写)都是开发Java程序所需要的命令文件。




   
    P.S.
    这些命令文件并非是图形化方式操作的(双击执行是无效的),而是命令行方式操作的命令文件,所以需要首先打开命令行窗口。

    2. 打开DOS命令行窗口有两种方式。
    ①点击“开始”-->“运行”-->输入“cmd”-->按下“Enter”键。







    ②点击“开始”-->“所有程序”-->“附件”-->“命令提示符”。





    3. 进入到JDK安装目录下的bin目录。





    4. 输入javac(.exe可写可不写),出现如下显示,说明JDK已经可以使用了。



3.4 命令行简介

    课程中常见的DOS命令:
    dir:列出当前目录下的文件及文件夹。
    md:创建目录。
    rd:删除目录。
    cd:进入指定目录。
    cd ..:退回到上一级目录。
    cd \:退回到根目录。
    del:删除文件。
    exit:退出DOS命令行。

    12个示例轻松掌握常用DOS命令:

    1. 查看D盘下的目录。



    2. 查看某个文件夹下的目录。



    3. 也可以通过通配符的方式更方便地进入某个文件夹。



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

    4. 退回到上一级目录。



    5. 直接进入D盘根目录。



    6. 在D盘下根目录下创建新的文件夹。





    P.S.
    早期操作计算机用DOS命令操作,因为需要记住很多命令,不利于普及,后期发展成图形界面,通过鼠标点击界面的形式操作计算机,底层实际上运行的依然是DOS命令。

    7. 删除文件夹。



    abc文件夹已经被删除:



    8. 新创建一个文件夹,并在该文件夹目录下创建一个文件。由于该文件夹下不是空的,删除该文件夹失败。这是Windows为了防止误删除采取的机制。





    9. 只有将该文件夹目录下所有文件及文件夹清空,才能成功删除该文件夹。


   
    P.S.
    1、“del *”或“del *.*”命令表示删除当前目录下所有的文件。   
    2、Windows系统删除文件是从内向外删,文件夹内部的文件如果没有被完全删除,文件夹删除就必定会失败。

    10. 输入help命令,可以查询到所有的命令功能。



    11. 输入help命令,也可以查询某个命令的功能。



    12. 输入exit命令,可以退出DOS命令行窗口。



3.5 环境变量配置

    为了能在DOS命令行窗口中,在任何目录下都能够执行javac命令,就需要将javac.exe命令文件所在目录的路径放入path环境变量中。

    原理:
    在DOS命令提示符窗口中输入某个命令后,Windows系统会首先在当前目录下查找是否存在该命令文件可以执行。如果没有,Windows系统就会在path环境变量路径中查找。如果查找到,就会执行该命令。如果还没有找到,那么就会提示如下信息。



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

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



    2. 点击“高级系统配置”-->“高级”选项卡-->“环境变量”。





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





    P.S.
    1、一定要将javac命令文件所在目录的路径放入path环境变量的开头。否则,如果计算机上以前已经安装了其他版本的JDK并且也已经配置了path环境变量,那么先执行的javac命令就是以前的JDK安装目录下的javac命令。因为windows系统是按照path路径从头向后搜索各个目录的。
    2、环境变量中的各个路径之间一定要以分号进行分隔。
    3、设置path环境变量的时候千万不要删除掉原来的内容。否则,很多程序将无法运行。

    4. 点击确定。然后,一定要新开一个新的DOS命令行窗口,再输入javac命令,如果出现如下显示,说明path环境变量配置成功。



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



3.5.2 环境变量配置技巧


    按照以上步骤配置path环境变量,会很容易产生因JDK安装目录的改变,而不断修改path环境变量,从而导致对path环境变量的误操作,风险很大。可以通过如下技巧解决:

    1. 新创建一个环境变量JAVA_HOME记录jdk安装目录的路径。





    2. 在path环境变量中通过“%%”动态的获取JAVA_HOME的值即可。



    通过这种方式,如果JDK安装目录改变了,那么只需要修改JAVA_HOME环境变量即可,而不用再修改path环境变量。

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

3.5.3 环境变量临时配置方式

    如果在别人的计算机上进行Java程序的开发,设置path这样的系统环境变量就不太好,那么就可以采用设置临时环境变量的方式(通过DOS命令中set命令完成)。

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



    2. 用set命令("set 命令名")查看具体某一个环境变量的值。



    3. 用set命令("set 变量名=")清空一个环境变量的值。



    4. 用set命令("set 变量名=具体值")给指定环境变量定义具体值。  



    5. 想要在原有环境变量值基础上添加新值。

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



    P.S.
    1、临时配置环境变量的方式只在当前DOS命令行窗口有效。窗口关闭,配置即消失。
    2、cls是清屏命令。





四、Java程序开发体验

4.1 编写运行Hello World



    1. 选择最简单的编辑器:记事本。将Java代码编写入扩展名为.java的文件(源文件)中。





    Hello World:代表学习计算机语言的第一个入门小程序。现在泛指接触任何新事物的第一步。
    Class:是java中的关键字,用于定义类,java语言的程序代码都需要定义在类中。
    关键字:被java语言赋予了特殊含义的单词。
    Demo:为了方便使用这个类,给类自定义的类名。
    {}:定义该类中代码的范围。
    P.S.
    1、写代码,阅读性第一,功能性第二,一定要注意写代码的格式!
    2、源文件名和类名可以不一致,但当class前有修饰符public时,则必须一致。

    2. 通过javac命令对该java文件进行编译。
    ①有了java源文件,将其编译成JVM可以识别的文件。
    ②在该源文件目录下,通过javac编译工具对Demo.java文件进行编译。
    ③如果程序没有错误,没有任何提示,就会在当前目录下出现一个Demo.class文件,该文件称为字节码文件,也就是可以执行的java的程序。





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



    P.S.
    使用java命令运行class文件,没有必要加上.class文件后缀。

    ②因为一个程序的执行需要一个起始点或者入口,所以在Demo类中加入如下代码。



    ③对修改后的Demo.java源文件需要重新编译,生成新的class文件后,再执行。
    发现编译成功,但也没有任何效果,因为程序并没有告诉JVM要帮我们做什么事情,也就是没有可以具体执行的语句。



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





    P.S.
    1. main方法的作用在于保证一个类可以独立运行,因为它是程序的入口。
    2. System.out.print();语句用于告诉系统输出打印数据,可以将括号中的内容打印在控制台上。通过该语句可以直接在控制台看到jvm运行java程序后的结果。
    3. System.out.println();语句与System.out.print();语句的区别是,前者打印后并且换行。





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





    由于System.out.println("hello java")语句后面缺少分号,所以报错。根据报错的行数,找到错误的地方,进行修改。然后重编编译,运行。


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

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

4.2 常见错误信息-找不到文件

    错误可能原因:
    1、文件名写错。
    2、类文件不在当前路径下或者不在classpath(后面会将讲到)指定路径下。
    3、后缀名问题。





    “后缀名问题”查找及解决方案如下:

    1. 点击“工具”-->“文件夹选项”。



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



    3. 然后就可以看到文件真正的后缀名为txt,所以找不到Demo.java文件。只需将修改后缀名为java,再重新编译、运行即可。



4.3 配置classpath环境变量

    由于可能频繁执行多个class文件,并且多个class文件可能存储在不同的目录下,那么每次都在命令提示符窗口中切换目录会相当的麻烦。
    classpath环境变量的作用类似于path环境变量,但是它的作用在于告诉JVM去哪里找到class文件。

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

    示例:
    1、在C盘根目录下新创建一个文件夹,命名为myclass,将D:\code\day01目录下的Demo.class文件剪切到此文件夹下。




    2、将D:\code\day01文件夹中的源文件Demo.java修改为在控制台中打印“hello D盘”,重新编译,生成Demo.class。






    3、 如果想要执行C盘根目录下myclass文件夹中的Demo.class,又不想切换目录,由于JVM会先在classpath环境变量值的目录中查找要运行的类文件,可以通过设置环境变量classpath为“c:\myclass”实现。




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


    示例:
    1、删除C:\myclass目录下的Demo.class。




    2、在D:\code\Day01目录下运行Demo.class文件,报错。   
    这是因为classpath环境变量已经被赋值,所以即使在D:\code\Day01目录下存在Demo.class文件,JVM也根本不会去查找。




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

    示例:
    为环境变量classpath赋值后加上一分号,然后在D:\code\day01目录下运行Demo.class文件,由下图可见,运行成功。




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


    示例:


~END~



~爱上海,爱黑马~



299 个回复

倒序浏览
wuyusi 来自手机 中级黑马 2015-5-31 13:58:17
沙发
再看一遍,老师辛苦了!!!
回复 使用道具 举报
认真看了一变,写的太好了,求后续!:)
回复 使用道具 举报
阳哥辛苦了,:)
回复 使用道具 举报
非常详细,好好好
回复 使用道具 举报
太感谢了,非常有用
回复 使用道具 举报
写的超级棒,必须顶一下!
回复 使用道具 举报
又加深了一次印象
回复 使用道具 举报
学习了      
回复 使用道具 举报
幸苦  赞一个!!!
回复 使用道具 举报
谢谢楼主分享
回复 使用道具 举报
加油!!!!!!!!!!!
回复 使用道具 举报
谢谢,辛苦了
回复 使用道具 举报
求iOS的,嘿嘿
回复 使用道具 举报
阳哥真牛!写的好详细!
回复 使用道具 举报
恩,阳哥威武啊
回复 使用道具 举报
楼主辛苦了......
回复 使用道具 举报
真详细啊!!!!!!!!!!!!!!!!!必须赞啊!!!!!
回复 使用道具 举报
会不会持续下去?

点评

gdh
好,实用  发表于 2016-3-30 14:01
必须持续下去!  发表于 2015-5-31 17:43
回复 使用道具 举报
阳哥分享的?
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马