第 1 章 Java 语言概述

第 1 章 Java 语言概述

目录

  1. 一、软件开发介绍
  2. 二、计算机编程语言介绍
  3. 三、Java 语言概述
  4. 四、Java 语言运行机制及运行过程
  5. 五、Java 的环境搭建
  6. 六、开发体验 ——helloworld & 常见的问题及解决方法
  7. 八、注释(comment)
  8. 九、Java API 文档
  9. 对第一个程序的总结
  10. 十、良好的编程风格
  11. 十一、常用的 Java 编程工具
  12. 每日一考

一、软件开发介绍

  • 软件:一系列按照特定顺序组织的计算机数据和指令的集合
    • 软件分为系统软件和应用软件
  • 人机交互方式
    • 图形化界面(Graphical User Interface, GUI)
    • 命令行方式(Command Line Interface, CLI)
  • 常用 Dos 指令:
    • dir:列出当前目录下的文件及文件夹
    • md:创建目录
    • rd:删除目录
    • cd:进入指定目录
    • cd..:退回到上一级目录
    • cd:退回到根目录
    • del:删除文件
    • exit:退出 Dos 命令行
    • 补充:echo javase>1.doc

二、计算机编程语言介绍

  • 第一代语言:机器语言
  • 第二代语言:汇编语言:使用助记符表示一条机器指令
  • 第三代语言:高级语言
    • C、Pascal、Fortran 面向过程的语言
    • C++ 面向过程 / 面向对象
    • Java 跨平台的纯面向对象语言
    • .NET 跨语言的平台
    • Python、Scala...

三、Java 语言概述

后台开发:Java(大型)、PHP、Python(头条后台使用 python)、Go(宣传具有 java 开发效率、具有 C/C++ 执行效率)、Node.js(做前端的学习)

Java 语言简史:

  • 2004 年,发布里程碑式版本 JDK1.5,为突出重要性更名为 JDK5.0。后续版本中只要是 1.X 其实就是 JDK X.0(例如 JDK1.6 等同于 JDK6.0)
  • 2005 年,J2SE - 更名 ->JavaSE,J2EE - 更名 ->JavaEE,J2ME - 更名 ->JavaME
  • 2014 年,发布 JDK8.0,是继 JDK5.0 以来变化最大的版本。通常目前公司使用版本一定是 1.5 以后的,一般是 6.0、7.0、8.0
  • 2018 年 3 月,发布 JDK10.0,版本号以时间命名:18.3

Java 体系平台

  • Java SE(Java Standard Edition)标准版:主要用于开发桌面级应用。现在一般不再用 Java 写桌面级应用了
  • java EE(Java Enterprise Edition)企业版:为企业环境下开发应用程序,后台
  • Java ME(Java Micro Edition)小型版 & Java Card:为移动终端开发应用程序

Java 应用领域

  • 企业级应用:后台开发
  • Android 平台应用:作为 Android 开发语言出现
  • 大数据平台开发:后台大都基于 Java 后台,大数据自然要开放 Java 接口。各类框架有 Hadoop、spark、storm、flink,各种中间件如 flume、kafka、sqoop
  • 移动领域

Java 是由 C 语言和 C++ 继承而来的:

  • java 是一个纯粹的面向对象的语言;
  • Java 舍弃了 C 语言中容易引起错误的指针(使用 引用 来取代);
  • Java 增加了垃圾回收器功能

四、Java 语言运行机制及运行过程

Java 语言特点:

  • 特点一:面向对象
    • 两个基本概念:类、对象
    • 三大特性:封装、继承、多态
  • 特点二:健壮性
    • 吸收了 C/C++ 语言优点,但去掉了影响程序健壮性的部分(指针、内存申请及释放),提供了一个相对安全的内存管理和访问机制。
  • 特点三:跨平台性
    • 跨平台性:Java 语言编写的程序在不同的系统上都可以运行
    • 原理:只需在需要运行 Java 应用的操作系统上安装 Java 虚拟机(Java Virtual Machine, JVM)即可。由 JVM 负责 Java 程序在该系统的运行。

核心机制 —— 垃圾回收

  • 不使用的内存空间应当被回收 —— 垃圾回收
    • C/C++ 中,由程序员负责回收无用内存
    • Java 提供了一种系统级线程跟踪存储空间的分配情况,在 JVM 空闲时,检查并释放可被释放的内存空间
  • 垃圾回收在 Java 程序的运行过程中自动进行,程序员无法精确控制和干预
  • 但 Java 程序仍然会有可能出现内存泄漏和内存溢出的问题

五、Java 的环境搭建

JDK 后续版本向下兼容,高版本与低版本之间关系为包含关系(如果换用了新版本并且改掉了旧版本内容会造成原先能运行的程序无法运行,故新版本是旧版本的添加)

JDK 及 JRE

  • JDK:Java Development Kit Java 开发工具包。JDK 中包括 Java 开发工具(编译工具 javac.exe,打包工具 jar.exe)JRE。Java 开发必需。
  • JRE:Java Runtime Environment java 运行环境。JRE 包括 Java 虚拟机(JVM)Java 程序所需的核心类库。Java 程序运行必需。
  • jdk-8u131-win.....exe 中:u 代表 update,131 表示在 jdk8.0 版本上已经更新到 131 了

JDK 目录结构:

  • bin 目录:开发工具,包括编译工具 javac.exe、文档生成工具 javadoc.exe
  • db 目录:java 写的数据库
  • include 目录:C 语言编写的头文件,jni.h 代表 Java Native Interface
  • jre 目录:JRE 运行时环境
  • lib 目录:jar 包库文件
  • src 压缩文件:java 源码和开源类库

配置环境变量:

  • PC 中环境变量 path 代表 Windows 系统执行命令时要搜寻的路径
  • 改进:把 \bin 目录的上层目录放到一个新的自定义变量中(例如 JAVA_HOME),之后再将这个变量名动态的引用(例如 % JAVA_HOME%;)。改进的原因是 之后搭建服务器时需要寻找 JAVA_HOME 环境变量,从而获得并使用一些库文件,因此需要配置 JAVA_HOME

六、开发体验 ——helloworld & 常见的问题及解决方法

步骤

  1. 将 java 代码写入到扩展名为.java 的文件中。
  2. 通过 javac 命令将 java 文件进行编译,生成.class 文件。生成的.class 文件文件名为.java 文件中类的类名。(由于 Windows 目录下不区分大小写,使用 javac ---.java 可以不区分大小写)
  3. 通过 java 命令对生成的.class 文件进行运行。(运行命令时.class 扩展名无需写)
  4. 每次修改.java 文件,运行时都需要重新编译(运行时区分大小写,因为此时回到了 java 层面,查找的是类)

八、注释(comment)

  • 用于注解说明解释程序的文字就是注释

  • Java 中的注释类型:

    • 单行注释://

    • 多行注释:/* */

    • 文档注释:

      1
      2
      3
      4
      /**
      @author 指定java程序的作者
      @version 指定源文件的版本
      **/
      注释的内容可以被 JDK 提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档

      操作方法:javadoc -d mydoc -author -version HelloWorld.java

  • 一般先将自己的思想通过注释整理出来,再用代码实现

九、Java API 文档

  • API(Application Programming Interface, 应用程序编程接口)是 Java 提供的基本编程接口。通俗来说就是 Java 提供的一系列类库

对第一个程序的总结

  1. Java 程序编写 - 编译 - 运行的过程
    编写:将编写的 java 代码保存在以.java 结尾的源文件中
    编译:使用 javac.exe 命令编译.java 源文件。格式:javac 源文件名.java
    运行:使用 java 命令解释运行字节码文件。格式:java 类名

  2. 在一个 Java 源文件中可以声明多个类。但是只能最多有一个类被声明为 public,且只能加到与文件名一致的类上,否则编译不通过

实际上先有的 类名要与文件名一致,public 只能加到与文件名一致的类上是结果

为什么 Java 源文件中只能最多有一个 public 类?

答:每个编译单元(java 源文件)都只能有一个 public 类,这表示每个编译单元都有单一的公共接口,用 public 类来表现。该接口可以按要求包含众多的支持包访问权限的类。如果某个编译单元包含多个 public 类或者 public 类名与编译单元名不同,都会产生编译错误。(——《java 编程思想 第四版》)

总结:一个编译单元可以存在多个类,在编译时产生多个不同的.class 文件,.class 文件即是程序运行的数据来源。Java 将 public 类作为每个编译单元的数据接口,只能有一个,不然不能处理存在多个 public 类的 Java 文件。当一个编译单元有多个非 public 类时,运行时需要对数据来源进行选择。

  1. 程序的入口是 main 方法,格式是固定的

  2. 输出语句:
    System.out.println();
    System.out.print();

  3. 编译的过程: 编译后会生成一个或多个字节码文件。字节码文件名与 Java 源文件中的类名相同(一个源文件有几个类就会在编译后生成几个字节码文件)

  4. 运行: 运行包含程序入口的字节码文件即可。 如果生成了多个字节码文件(一个源文件中有多个类)并且想要运行其他字节码文件就需要在其他类中定义程序入口 main

十、良好的编程风格

  • 大括号可以是首尾式 public class HelloWorld {

    }

  • 大括号可以是单独一行 public class HelloWorld
    {

    }

  • 适当位置加空格:a = b + c * d;

十一、常用的 Java 编程工具

  1. 文本编辑工具
    • 记事本
    • UltraEdit
    • EditPlus
    • TextPad
    • NotePad
  2. 集成开发环境(Integrated Development Environment,IDE)
    • NetBeans
    • Eclipse
    • IDEA

每日一考

  1. JDK,JRE,JVM 三者之间的关系,以及 JDK、JRE 包含的主要结构有哪些?

    答:JDK、JRE、JVM 三者为包含关系。JDK 包含 JRE 和一些 Java 开发工具,JRE 包含 JVM 和 Java 程序运行的核心类库

  2. 为什么要配置 path 环境变量?如何配置?

    答:

    • 配置 path 环境变量是因为 (可以不在工具所在目录) 可在任何文件目录即可调用并运行该工具
    • 在我的电脑 - 属性 - 高级 - 环境变量;建立 JAVA_HOME 环境变量,path 中只需动态调用 JAVA_HOME、再加上
  3. 常用的几个命令行操作都有哪些?(至少 4 个)

    答:

    • cd
    • md
    • dir
    • del
    • rd
  4. 创建如下的类,使得运行时能够输出:

    公众号:百家全匠

    英文名:Encyclopedia Master 用途:获得资源、增长知识、学习技能……

    1
    2
    3
    4
    5
    6
    7
    8
    class OfficialAccount {
    public static void main(String[] args) {
    System.out.println("公众号:百家全匠\n");

    System.out.println("英文名:Encyclopedia Master");
    System.out.println("用途:获得资源、增长知识、学习技能……");
    }
    }
  5. 编译和运行上述代码的指令