尚硅谷Java基础第 1 章 Java 语言概述

Java 基础 基本语法——尚硅谷学习笔记

第 1 章 Java 语言概述

1.1 Java 基础阶段的学习内容

1.1.1 第 1 阶段:Java 基本语法

Java 概述、关键字、标识符、变量、运算符、流程控制(条件判断、选择结构、循环结构)、IDEA、数组。

1.1.2 第 2 阶段:Java 面向对象编程

  • 类及类的内部成员。

  • 面向对象的三大特征 :封装、继承、多态。

  • 其它关键字的使用。

1.1.3 第 3 阶段:Java 语言的高级应用

异常处理、多线程、IO 流、集合框架、反射、网络编程、新特性、其它常用的 API 等。

书籍推荐:《Java 核心技术》、《Effective Java》、《Java 编程思想》。

1.2 软件开发相关内容

1.2.1 计算机的构成

硬件 + 软件。

1.2.2 软件

软件,即一系列按照特定顺序组织的计算机数据和指令的集合。有系统软件和应用软件之分。

  • 系统软件,即操作系统,Windows、Mac OS 、Linux、Android、ios。

  • 应用软件,即 OS 之上的应用程序。

1.2.3 人机交互方式

  • 图形化界面(Graphical User Interface,GUI)。

  • 命令行交互方式(Command Line Interface,CLI)。

熟悉常用的 DOS(Disk Operating System,磁盘操作系统)命令:

  • 进入和回退

    • 盘符名称: 盘符切换。E:回车,表示切换到 E 盘。

    • dir 列出当前目录下的文件以及文件夹。

    • cd 目录 进入指定目录。

    • cd .. 回退到上一级目录。

    • cd \ 或 cd / 回退到盘符目录。

  • 增、删

    • md 文件目录名 创建指定的文件目录。

    • rd 文件目录名 删除指定的文件目录(如文件目录内有数据,删除失败)。

  • 其它

    • cls 清屏。

    • exit 退出命令提示符窗口。

    • ↑ ↓ 调阅历史操作命令。

1.2.4 计算机编程语言

  • 语言的分代:

    • 第 1 代:机器语言

    • 第 2 代:汇编语言

    • 第 3 代:高级语言

  • 面向过程的语言:C

  • 面向对象的语言:C++、Java、C#、Python、Go、JavaScript

没有“最好”的语言,只有在特定场景下相对来说,最适合的语言而已。

1.3 Java 概述

1.3.1 Java 发展史

  • 几个重要的版本:1996 年,发布 JDK1.0

    • 里程碑式的版本:JDK5.0、JDK8.0(2014 年发布)

    • JDK11(LTS)、JDK17(LTS)long term support

1.3.2 Java 之父

詹姆斯·高斯林

1.3.3 Java 具体的平台划分

  • J2SE ——> JavaSE(Java Standard Edition)标准版

  • J2EE ——> JavaEE(Java Enterprise Edition)企业版

  • J2ME ——> JavaME(Java Micro Edition)小型版

Java 目前主要的应用场景:JavaEE 后端开发、Android 客户端的开发、大数据开发。

1.4. Java 环境的搭建

1.4.1 JDK、JRE、JVM 的基本概念

  • JDK(Java Development Kit):是 Java 程序开发工具包,包含 JRE 和开发人员使用的工具。

  • JRE(Java Runtime Environment) :是 Java 程序的运行时环境,包含 JVM 和运行时所需要的核心类库。

  • Java 虚拟机(Java Virtual Machine 简称 JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,它是 Java 最具吸引力的特性之一。

1.4.2 JDK、JRE、JVM 三者之间的关系

  • JDK = JRE + 开发工具集(例如 Javac 编译工具等)。

  • JRE = JVM + Java SE 标准类库。

1.4.3 安装 JDK

1.5. HelloWorld

1.5.1 开发步骤

Java 程序开发三步骤:编写、编译、运行。

  • 将 Java 代码编写到扩展名为 .java 的源文件中。

  • 通过 javac.exe 命令对该 java 文件进行编译,生成一个或多个字节码文件。格式:javac 源文件名.java

  • 通过 java.exe 命令对生成的 class 文件进行运行。格式: java 字节码文件名

image-20250409092913981

1.5.2 开发说明

  • 格式:

     类
     {
         方法
         {
             语句;
         }
     }
  • 代码:

      HelloWorld.java
     class HelloWorld
     {
         public static void main(String[] args)
         {
             System.out.println("Hello World!");
         }
     }
  • 说明:

① class:关键字,表示“类”,后面跟着类名。 ② main() 方法的格式是固定的。表示程序的入口。 ③ Java 程序,是严格区分大小写的。 ④ 从控制台输出数据的操作: System.out.println() : 输出数据之后,会换行。 System.out.print() : 输出数据之后,不会换行。 ⑤ 每一行执行语句必须以;结束。 ⑥ 编译以后,会生成 1 个或多个字节码文件。每一个字节码文件对应一个 Java 类,并且字节码文件名与类名相同。 ⑦ 我们是针对于字节码文件对应的 Java 类进行解释运行的。 ⑧ 一个源文件中可以声明多个类,但是最多只能有一个类使用 public 进行声明,且要求声明为 public 的类的类名与源文件名相同。

1.6 注释

源文件中用于解释、说明程序的文字就是注释。

1.6.1 Java 中的注释的种类

单行注释、多行注释、文档注释(Java 特有)。

1.6.2 单行注释

 // 这是单行注释。

1.6.3 多行注释

 /*
 这是多行注释。
 */

1.6.4 文档注释

 /**
  @author 指定 Java 程序的作者
  @version 指定源文件的版本
 */

文档注释内容可以被 JDK 提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档。

1.7 API 文档

API (Application Programming Interface,应用程序编程接口)是 Java 提供的基本编程接口。

Java 语言提供了大量的基础类,因此 Oracle 也为这些基础类提供了相应的说明文档,用于告诉开发者如何使用这些类,以及这些类里包含的方法。

Java API 文档,即为 JDK 使用说明书、帮助文档。

1.8 Java 核心机制:JVM

1.8.1 Java 语言的优点

  • 跨平台性:

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

  • 面向对象性: 面向对象是一种程序设计技术,非常适合大型软件的设计和开发。面向对象编程支持封装、继承、多态等特性,让程序更好达到高内聚,低耦合的标准。

  • 健壮性: 吸收了 C/C++ 语言的优点,但去掉了其影响程序健壮性的部分(如指针、内存的申请与释放等),提供了一个相对安全的内存管理和访问机制。

    • 安全性高: Java 适合于网络/分布式环境,需要提供一个安全机制以防恶意代码的攻击。如:安全防范机制(ClassLoader 类加载器),可以分配不同的命空间以防替代本地的同名类、字节代码检查。

  • 简单性: Java 就是 C++ 语法的简化版,我们也可以将 Java 称之为“C++ - -”。比如:头文件,指针运算,结构,联合,操作符重载,虚基类等。

    • 高性能: Java 最初发展阶段,总是被人诟病“性能低”;客观上,高级语言运行效率总是低于低级语言的,这个无法避免。Java 语言本身发展中通过虚拟机的优化提升了几十倍运行效率。比如,通过 JIT(JUST IN TIME)即时编译技术提高运行效率。

1.8.3 JVM 功能说明

JVM(Java Virtual Machine ,Java 虚拟机):是一个虚拟的计算机,是 Java 程序的运行环境。JVM 具有指令集并使用不同的存储区域,负责执行指令,管理数据、内存、寄存器。

image-20250409094226999

每一种平台的解释器是不同的,但是实现的虚拟机是相同的,这也就是 Java 为什么能够跨平台的原因了 ,当一个程序从开始运行,这时虚拟机就开始实例化了,多个程序启动就会存在多个虚拟机实例。程序退出或者关闭,则虚拟机实例消亡,多个虚拟机实例之间数据不能共享。

功能 1:实现 Java 程序的跨平台性 。

我们编写的 Java 代码,都运行在 JVM 之上。正是因为有了 JVM,才使得 Java 程序具备了跨平台性

ps:linux,mac,win

功能 2:自动内存管理(内存分配、内存回收)

  • Java 程序在运行过程中,涉及到运算的数据的分配、存储等都由 JVM 来完成。

  • Java 消除了程序员回收无用内存空间的职责。提供了一种系统级线程跟踪存储空间的分配情况,在内存空间达到相应阈值时,检查并释放可被释放的存储器空间。

  • GC 的自动回收,提高了内存空间的利用效率,也提高了编程人员的效率,很大程度上减少了因为没有释放空间而导致的内存泄漏。

1.9 企业真题

  1. 一个“.java”源文件中是否可以包括多个类?有什么限制? 答: 一个源文件中可以声明多个类,但是最多只能有一个类使用 public 进行声明。 且要求声明为 public 的类的类名与源文件名相同。

  2. Java 的优势有哪些? 答:跨平台型、安全性高、简单性、高性能、面向对象性、健壮性。

  3. 常用的几个命令行操作都有哪些? 答: ① 盘符名称: 盘符切换。E:回车,表示切换到 E 盘。 ② dir 列出当前目录下的文件以及文件夹。 ③ cd 目录 进入指定目录。 ④ cd .. 回退到上一级目录。 ⑤ cd \ 或 cd / 回退到盘符目录。 ⑥ md 文件目录名 创建指定的文件目录。 ⑦ rd 文件目录名* 删除指定的文件目录(如文件目录内有数据,删除失败)。 ⑧ cls 清屏。 ⑨ exit 退出命令提示符窗口。 ⑩ ↑ ↓ 调阅历史操作命令。

  4. Java 中是否存在内存溢出、内存泄漏?如何解决?举例说明。 答:Java 中存在内存溢出和内存泄漏问题。

    内存溢出指的是程序申请的内存超出了 JVM 所能分配的内存大小,导致程序崩溃。解决方法包括: ① 增加 JVM 内存限制:通过修改 JVM 启动参数,增加内存限制,例如 -Xmx。 ② 优化代码:检查代码中是否存在大量的无用对象或者内存泄漏,及时释放资源。 ③ 分析内存使用情况:使用工具分析内存使用情况,找到内存占用过多的地方,及时优化。 内存泄漏指的是程序中的对象在使用完毕后没有及时释放,导致内存占用不断增加。解决方法包括: ① 手动释放资源:在代码中手动释放资源,例如关闭文件、数据库连接等。 ② 使用 try-with-resources:使用 try-with-resources 管理资源,确保资源被及时释放。 ③ 检查代码:检查代码中是否存在内存泄漏的地方,及时优化。例如,如果在循环中创建对象并没有及时释放,就会导致内存泄漏。

  5. 如何看待 Java 是一门半编译半解释型的语言? 答:Java 是一门半编译半解释型的语言,这意味着 Java 具有一定的优点和缺点。

    优点: ① 跨平台性强:Java 的半编译半解释型特性使得它能够在不同的操作系统上运行,只需在不同平台上安装 Java 虚拟机即可。 ② 安全性高:Java 的编译过程中会进行严格的类型检查和边界检查,减少了程序出错的可能性,同时 Java 还具有内存自动管理机制,防止了一些常见的安全漏洞。 ③ 灵活性好:Java 的半编译半解释型特性使得它能够在运行时进行动态加载和更新,增强了程序的灵活性。 缺点: ① 执行效率低:由于 Java 是半编译半解释型的语言,需要在运行时进行解释和编译,导致执行效率较低。 ② 内存占用大:Java 在运行时需要加载虚拟机和类库,占用的内存较大。 ③ 资源消耗多:Java 的编译和解释过程需要占用较多的 CPU 和内存资源,对于一些资源受限的设备来说可能会造成困扰。

    综上所述,Java 的半编译半解释型特性使得它具有跨平台性和安全性等优点,但也存在执行效率低、内存占用大和资源消耗多等缺点。在实际应用中需要根据具体情况进行权衡和选择。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值