《疯狂java讲义(第三版)》学习笔记(一)——Java语言概述与开发环境

Java语言是一门非常纯粹的面向对象编程语言,吸收了C++的各种优点,摒弃了难以理解的多继承和指针等概念,具有功能强大和简单易用两个特征。

1、Java发展简史

Java SE7引入了二进制整数、支持字符串的switch语言、菱形语法、多异常捕获、自动关闭资源的try语句等新特性。
Java SE8引入了Lambda表达式。

2、Java程序运行机制

Java语言是一种特殊的高级语言,Java程序要经过先编译,后解释两个步骤。

Java语言比较特殊,Java语言编写的程序需要经过编译步骤,但这个编译步骤并不会生成特定平台的机器码,而是生成一种与平台无关的字节码(**.class文件),然后使用Java解释器来解释执行。

Java语言里负责解释执行字节码文件的是Java虚拟机,即JVM(Java Virtual Machine)。JVM是可以运行Java字节码文件的虚拟计算机。所有平台的JVM向编译器提供相同的编程接口,而编译器只需面向虚拟机,生成虚拟机能理解的代码。

JVM是一个抽象的计算机,具有指令集并使用不同的存储区域。它负责执行指令,还要管理数据、内存和寄存器。

JVM的统一标准:

  • 指令集
  • 寄存器
  • 类文件的格式
  • 垃圾回收堆
  • 存储区

3、开发环境

JDK的全程是Java Development Kit,即Java标准版开发包,提供了编译、运行Java程序所需的各种工具和资源,包括Java编译器、Java运行时环境(JRE,Java Runtime Environment),以及常用的Java类库。

Java运行时环境,JRE,是运行Java程序的必须条件。
JRE包换JVM。JVM是运行Java程序的核心虚拟机,而运行Java程序不仅需要核心的虚拟机,还需要其他的类加载器。字节码校验器以及大量的基础类库。JRE除了包含JVM之外,还包含运行Java程序的其他环境支持。

Windows系统根据Path环境变量查找命令,Linux系统根据PATH环境变量查找命令。(Windows不区分大小写,Linux区分大小写)

javac命令的用法:javac -d destdir srcFile
javac -d . HelloWorld.java
(.)表示当前路径

java命令的用法:java Java类名
java HelloWorld

4、Java程序的基本规则

Java程序是一种纯粹的面向对象的程序设计语言,Java程序必须以类的形式存在,类是Java程序存在的最小程序单位。所有的程序部分都必须放在类定义里。

Java源文件的命名规则

  • Java程序源文件的后缀必须是.java
  • 通常情况下,Java程序源文件的主文件名可以使任意的。但是如果Java程序源代码里定义了一个public类,则该源文件的主文件名必须与该public类的类名相同。(一个Java源文件里最多只能定义一个public类)

5、垃圾回收(Garbage Collection,GC)机制

Java程序的内存分配和回收都是由JRE在后台自动进行的。JRE会负责回收那些不再使用的内存。通常JRE会提供一个后台进程来进行检测和控制,一般都是在CPU空闲或内存不足时自动进行垃圾回收,而程序员无法精确控制垃圾回收的时间和顺序等。

Java的堆内存是一个运行时数据区,用以保存类的实例,Java虚拟机的堆内存中存储中正在运行的应用程序所建立的所有对象,这些对象不需要程序通过代码来显示地释放。一般来说,堆内存的回收由垃圾回收来负责,所有的JVM实现都有一个由垃圾回收器管理的堆内存。垃圾回收是一种动态存储管理技术,它自动释放不再被程序引用的对象,按照特定的垃圾回收算法来实现内存资源的自动回收功能。

垃圾回收的特点:

  1. 垃圾回收机制的工作目标是回收无用对象的内存空间,这些内存空间都是JVM堆内存里的内存空间。
  2. 为了更快地让垃圾回收机制回收那些不再使用的对象,可以将该对象的引用变量设置为null。
  3. 垃圾回收发生的不会预知性。程序员可以通过调用Runtime对象的gc()或System.gc()等方法来建议系统进行垃圾回收,但这种调用仅仅是建议。
  4. 垃圾回收的精确性包括两个方面:一是垃圾回收机制能够精确地标记活着的对象;二是垃圾回收器能够精确地定位对象之间的引用关系。
  5. 现有的JVM有多种不同的垃圾回收实现。

编写Java程序的一个基本原则;对于不再需要的对象,不要引用它们。

猜你喜欢

转载自blog.csdn.net/u014413083/article/details/79368631