Bombax's Knowledge Document Notes Bombax's Knowledge Document Notes
首页
  • 前置

    • 尚硅谷Java学习
    • 基础软件安装与配置
  • 核心

    • Java从入门到精通(JDK17版)
    • MySQL从入门到高级-基础篇
    • MySQL从入门到高级-高级篇
    • JDBC 核心技术(JDK21版)
    • JavaWeb 技术
  • 学习笔记

    • POJO 概念
  • Spring Cloud

    • SpringCloud
    • SpringCloud-Alibaba
  • 持久层框架

    • MyBatis
    • MyBatis-Plus
  • 相关知识

    • Mybatis 代码生成工具比较
  • 安全框架

    • 安全框架之 Spring Security
    • 安全框架之 Shiro
  • 定时任务框架

    • 定时任务框架之 Quartz
    • 定时任务框架之 XXL-JOB
  • Java 日志热门框架
  • Git 常用命令
  • Swagger API 文档生成工具
  • Motan RPC (opens new window)
  • Lombok Tutorial (opens new window)
  • Lombok Features (opens new window)
  • FastJSON2 (opens new window)
  • Spring Framework 5 中文文档 (opens new window)
  • XStream (opens new window)
  • fluent-validator 业务逻辑验证框架 (opens new window)
  • ehcache java 缓存框架 (opens new window)
  • jetcache java 缓存框架 (opens new window)
  • caffeine 缓存框架 (opens new window)
  • Spring Cache (opens new window)
  • 主流缓存框架调研 (opens new window)
  • redisson 官方中文文档 (opens new window)
  • LiquiBase 中文学习指南 (opens new window)
  • LiquiBase 官方文档 (opens new window)
  • 分类
  • 归档
GitHub (opens new window)

bombax

小小程序猿
首页
  • 前置

    • 尚硅谷Java学习
    • 基础软件安装与配置
  • 核心

    • Java从入门到精通(JDK17版)
    • MySQL从入门到高级-基础篇
    • MySQL从入门到高级-高级篇
    • JDBC 核心技术(JDK21版)
    • JavaWeb 技术
  • 学习笔记

    • POJO 概念
  • Spring Cloud

    • SpringCloud
    • SpringCloud-Alibaba
  • 持久层框架

    • MyBatis
    • MyBatis-Plus
  • 相关知识

    • Mybatis 代码生成工具比较
  • 安全框架

    • 安全框架之 Spring Security
    • 安全框架之 Shiro
  • 定时任务框架

    • 定时任务框架之 Quartz
    • 定时任务框架之 XXL-JOB
  • Java 日志热门框架
  • Git 常用命令
  • Swagger API 文档生成工具
  • Motan RPC (opens new window)
  • Lombok Tutorial (opens new window)
  • Lombok Features (opens new window)
  • FastJSON2 (opens new window)
  • Spring Framework 5 中文文档 (opens new window)
  • XStream (opens new window)
  • fluent-validator 业务逻辑验证框架 (opens new window)
  • ehcache java 缓存框架 (opens new window)
  • jetcache java 缓存框架 (opens new window)
  • caffeine 缓存框架 (opens new window)
  • Spring Cache (opens new window)
  • 主流缓存框架调研 (opens new window)
  • redisson 官方中文文档 (opens new window)
  • LiquiBase 中文学习指南 (opens new window)
  • LiquiBase 官方文档 (opens new window)
  • 分类
  • 归档
GitHub (opens new window)
  • 前置

  • 核心

    • Java从入门到精通(JDK17版)

      • 第01章_Java 语言概述
        • 1. Java 知识脉络图
          • 1.1 Java 基础全程脉络图
          • 1.2 本章专题与脉络
        • 2. 抽丝剥茧话 Java
          • 2.1 当前大学生就业形势
          • 2.2 IT 互联网是否依旧靠谱
          • 2.3 IT 行业岗位分析
          • 2.4 软件开发之 Java 开发
          • 2.5 到底多少人在用 Java
          • 2.6 八卦一下程序员
          • 2.7 Java 系列课程体系
          • 2.8 Java 职业晋升路线图
        • 3. 计算机的硬件与软件
          • 3.1 计算机组成:硬件+软件
          • 3.2 CPU、内存与硬盘
          • 3.3 输入设备:键盘输入
        • 4. 软件相关介绍
          • 4.1 什么是软件
          • 4.2 人机交互方式
          • 4.3 常用的 DOS 命令
        • 5. 计算机编程语言
          • 5.1 计算机语言是什么
          • 5.2 计算机语言简史
          • 5.3 计算机语言排行榜
          • 5.4 编程语言,该学哪个?
        • 6. Java 语言概述
          • 6.1 Java 概述
          • 6.2 Java 语言简史
          • 6.3 Java 之父
          • 6.4 公司八卦
          • 6.5 Java 技术体系平台
        • 7. Java 开发环境搭建(掌握)
          • 7.1 什么是 JDK、JRE
          • 7.2 JDK 版本选择
          • 7.3 JDK 的下载
          • 7.4 JDK 的安装
          • 7.5 配置 path 环境变量
          • 7.5.1 理解 path 环境变量
          • 7.5.2 JDK8 配置方案 1:只配置 path
          • 7.5.3 JDK8 配置方案 2:配置 JAVA_HOME+path(推荐)
          • 7.5.4 JDK17 配置方案:自动配置
        • 8. 开发体验:HelloWorld(掌握)
          • 8.1 开发步骤
          • 8.2 编写
          • 8.3 编译
          • 8.4 运行
        • 9. Java 开发工具
          • 9.1 都有哪些开发 Java 的工具
          • 9.2 如何选择
        • 10. HelloWorld 案例常见错误
          • 10.1 拼写问题
          • 10.2 编译、运行路径问题
          • 10.3 语法问题
          • 10.4 字符编码问题
          • 10.5 建议
        • 11. HelloWorld 小结
          • 11.1 Java 程序的结构与格式
          • 11.2 Java 程序的入口
          • 11.3 两种常见的输出语句
          • 11.4 源文件名与类名
        • 12. 注释(comment)
        • 13. Java API 文档
        • 14. Java 核心机制:JVM
          • 14.1 Java 语言的优缺点
          • 14.1.1 优点
          • 14.1.2 缺点
          • 14.2 JVM 功能说明
          • 14.2.1 功能 1:实现 Java 程序的跨平台性
          • 14.2.2 功能 2:自动内存管理(内存分配、内存回收)
        • 15. 章节案例
      • 第02章_变量与运算符
      • 第03章_流程控制语句
      • 第04章_IDEA 的安装与使用
      • 第05章_数组
      • 第06章_面向对象编程(基础)
      • 第07章_面向对象编程(进阶)
      • 第08章_面向对象编程(高级)
      • 第09章_异常处理
      • 第10章_多线程
      • 第11章_常用类和基础 API
      • 第12章_集合框架
      • 第13章_泛型
      • 第14章_数据结构与集合源码
      • 第15章_File 类与 IO 流
      • 第16章_网络编程
      • 第17章_反射机制
      • 第18章_JDK 8-17 新特性
    • MySQL从入门到高级-基础篇

    • MySQL从入门到高级-高级篇

    • JDBC 核心技术(JDK21版)
    • JavaWeb技术

  • 学习笔记

  • Java基础
  • 核心
  • Java从入门到精通(JDK17版)
bombax
2025-01-14
目录

第01章_Java 语言概述

# 第 01 章_Java 语言概述

讲师:尚硅谷-宋红康(江湖人称:康师傅)

官网:http://www.atguigu.com (opens new window)


# 1. Java 知识脉络图

# 1.1 Java 基础全程脉络图

Java基础全程脉络图

# 1.2 本章专题与脉络

第1阶段:Java基本语法-第01章

# 2. 抽丝剥茧话 Java

# 2.1 当前大学生就业形势

  • 麦可思研究院发布了《2022 年中国大学生就业报告》,针对 2021 届毕业生收入较高的本科专业排行榜:

37cb4fd26b284de3913374e9660e870d

  • 麦可思研究院发布过《2021 年中国大学生就业报告》,应届本科毕业生就业数量较大的前十位行业类的就业质量:

    jiuyezhiliang1

  • 报告还对毕业三年后的 2017 届毕业生所在十大行业进行了统计:

jiuyezhiliang2

  • 从国家统计局发布的 2021 年全国平均工资来看,不管在城镇非私营单位还是私营单位,IT业均为最高。

# 2.2 IT 互联网是否依旧靠谱

过去不能代表未来!互联网是否依旧靠谱?!

image-20220523002428542

2014 年至 2018 年间,我国网民规模从 6.49 亿增长为 8.29 亿,增幅为 27.5%。同一时间段,全国移动互联网接入的流量却从 20.6EB 增长到了 711.1EB,增幅达 3352%(获取和处理的信息量大幅增加)。

随着 5G 技术进一步拓宽移动互联网的速度和容量,产业互联网将在消费型流量的基础上创造生产型流量,根据报告的预测,至 2024 年,全国移动互联网的接入流量将达到 127663.8EB, 流量规模达到2018年的179.5倍。

当下,5G、物联网、人工智能、产业互联网都是国家政策大方向,需要大量能与机器对话的中高端人才。

# 2.3 IT 行业岗位分析

image-20220522234544537

软件开发,是进入互联网 IT 圈最好的选择之一!

  • 起始薪资高
  • 工作环境好
  • 涨薪幅度高
  • 行业更公平

# 2.4 软件开发之 Java 开发

image-20220504101615999

image-20220608160444947

  • 移动应用领域(集成 Android 平台):Java 在 Android 端是主要开发的语言,占有重要的地位。

    image-20220511092649122

    20220608_160310

  • 企业级应用领域(JavaEE 后台):用来开发企业级的应用程序,大型网站如淘宝、京东、12306,以及各大物流、银行、金融、社交、医疗、交通、各种 OA 系统等都是用 JavaEE 技术开发的。

    image-20220511090528043

  • 大数据分析、人工智能领域:流行的大数据框架,如 Hadoop、Flink 都是用 Java 编写的。Spark 使用 Scala 编写,但可以用 Java 开发应用。

    image-20220511091647358

    image-20220513233529610

    Eversoft 公司在提到 2022 年 Java 发展趋势时写道:Java 是用于开发大数据项目的最主流的语言。我们可以轻松地预测它也将在之后继续主导大数据!

  • 游戏领域、桌面应用、嵌入式领域:很多大型游戏的后台、桌面应用等也是 Java 开发的。

# 2.5 到底多少人在用 Java

2020 年,根据 IDC 的报告“Java Turns 25”显示,超过 900 万名开发人员(全球专职开发人员中的 69%)在使用 Java——比其他任何语言都多。该报告指出,大多数企业业务服务都依靠 Java 来实现。

... Java 一直是开发人员中最流行的编程语言,被誉为“宇宙第一语言”。

我想告诉大家:

“市场的需求比较大,市场的供给比较大”

“如果你在 Java 领域里持续积累 5-7 年以上,那么你至少会成为这个行业的一个专家!”

# 2.6 八卦一下程序员

还可以是:

image-20220602105213557

# 2.7 Java 系列课程体系

  • 见 Java 中高级程序员全程学习路线图

# 2.8 Java 职业晋升路线图

技术发展路线

薪资数据统计来源:拉勾网

# 3. 计算机的硬件与软件

# 3.1 计算机组成:硬件+软件

image-20220524152902812

# 3.2 CPU、内存与硬盘

  • CPU(Central Processing Unit,中央处理器)

    • 人靠大脑思考,电脑靠 CPU 来运算、控制。
  • 硬盘(Hard Disk Drive)

    • 计算机最主要的存储设备,容量大,断电数据不丢失。
    • 正常分类:机械硬盘(HDD)、固态硬盘(SSD)以及混合硬盘(SSHD)
    • 固态硬盘在开机速度和程序加载速度远远高于机械硬盘,缺点就是贵,所有无法完全取代机械硬盘。
  • 内存(Memory)

    • 负责硬盘上的数据与 CPU 之间数据交换处理
    • 具体的:保存从硬盘读取的数据,提供给 CPU 使用;保存 CPU 的一些临时执行结果,以便 CPU 下次使用或保存到硬盘。
    • 断电后数据丢失。

image-20220731234604511

# 3.3 输入设备:键盘输入

  • 熟悉指法

不熟悉键盘的小伙伴,可以“金山打字通”走起了。坚决杜绝二指禅!!

# 4. 软件相关介绍

# 4.1 什么是软件

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

Pascal 之父 Nicklaus Wirth: “Programs = Data Structures + Algorithms”

系统软件:

image-20220522215226273

应用软件:

macdesk

# 4.2 人机交互方式

  • 图形化界面(Graphical User Interface,GUI),这种方式简单直观,使用者易于接受,容易上手操作。

  • 命令行方式(Command Line Interface,CLI),需要在控制台输入特定的指令,让计算机完成一些操作。需要记忆一些指令,较为麻烦。

# 4.3 常用的 DOS 命令

DOS(Disk Operating System,磁盘操作系统)是 Microsoft 公司在 Windows 之前推出的一个操作系统,是单用户、单任务(即只能执行一个任务)的操作系统。现在被 Windows 系统取代。

对于 Java 初学者,学习一些 DOS 命令,会非常有帮助。

进入 DOS 操作窗口:

  • 按下 Windows+R 键盘,打开运行窗口,输入 cmd 回车,进入到 DOS 的操作窗口。

常用指令:

  • 操作1:进入和回退
操作 说明
盘符名称: 盘符切换。E:回车,表示切换到 E 盘。
dir 列出当前目录下的文件以及文件夹
cd 目录 进入指定单级目录。
cd 目录 1\目录 2\... 进入指定多级目录。cd atguigu\JavaSE
cd .. 回退到上一级目录。
cd \ 或 cd / 回退到盘符目录。
  • 操作2:增、删
操作 说明
md 文件目录名 创建指定的文件目录。
rd 文件目录名 删除指定的文件目录(如文件目录内有数据,删除失败)
  • 操作3:其它
操作 说明
cls 清屏。
exit 退出命令提示符窗口。
← → 移动光标
↑ ↓ 调阅历史操作命令
Delete 和 Backspace 删除字符

# 5. 计算机编程语言

# 5.1 计算机语言是什么

  • 语言:是人与人之间用于沟通的一种方式。例如:中国人与中国人用普通话沟通。而中国人要和英国人交流,可以使用英语或普通话。

  • 计算机编程语言,就是人与计算机交流的方式。人们可以使用编程语言对计算机下达命令,让计算机完成人们需要的功能。

  • 计算机语言有很多种。如:C 、C++、Java、Go、JavaScript、Python,Scala 等。

体会:语言 = 语法 + 逻辑

# 5.2 计算机语言简史

  • 第一代:机器语言(相当于人类的石器时代)

    • 1946 年 2 月 14 日,世界上第一台计算机ENAC诞生,使用的是最原始的穿孔卡片。这种卡片上使用的是用二进制代码表示的语言,与人类语言差别极大,这种语言就称为机器语言。比如一段典型的机器码:

      1.	0000,0000,000000010000 代表 LOAD A, 16
      2.	0000,0001,000000000001 代表 LOAD B, 1
      3.	0001,0001,000000010000 代表 STORE B, 16
      
      1
      2
      3
    • 这种语言本质上是计算机能识别的唯一语言,人类很难理解。可以大胆想象"此时的程序员99.9%都是异类!"

      image-20220309223406537

  • 第二代:汇编语言(相当于人类的青铜&铁器时代)

    • 使用英文缩写的助记符来表示基本的操作,这些助记符构成了汇编语言的基础。比如:LOAD、MOVE等,使人更容易使用。因此,汇编语言也称为符号语言。

    • 优点:能编写高效率的程序

    • 缺点:汇编语言是面向机器的,不同计算机机型特点不同,因此会有不同的汇编语言,彼此之间不能通用。程序不易移植,较难调试。

    • 比起机器语言,汇编大大进步了,是机器语言向更高级的语言进化的桥梁。目前仍然应用于工业电子编程领域、软件的加密解密、计算机病毒分析等。

  • 第三代:高级语言(相当于人类的信息时代)

    • 高级语言发展于 20 世纪 50 年代中叶到 70 年代,是一种接近于人们使用习惯的程序设计语言。它允许程序员使用接近日常英语的指令来编写程序,程序中的符号和算式也与日常用的数学式子差不多,接近于自然语言和数学语言,容易为人们掌握。比如:

      image-20211218092541175

    • 高级语言独立于机器,有一定的通用性;计算机不能直接识别和执行用高级语言编写的程序,需要使用编译器或者解释器,转换为机器语言才能被识别和执行。

    image-20211218092541075

此外,高级语言按照程序设计方法的不同,又分为:面向过程的语言、面向对象的语言。

  • C、Pascal、Fortran 面向过程的语言
  • C++面向过程/面向对象
  • Java 跨平台的纯面向对象的语言
  • C#、Python、JavaScript、Scala…

目前以及可预见的将来,计算机语言仍然处于“第三代高级语言”阶段。但是不管是什么语言,最后都要向机器语言靠近,因为 CPU 只认识 0 和 1。

# 5.3 计算机语言排行榜

TIOBE (opens new window)是一个流行编程语言排行,每月更新。排名权重基于世界范围内 工程师数量,Google、Bing、Yahoo! 、Wikipedia、Amazon、Youtube 和百度这些主流的搜索引擎,也将作为排名权重的参考指标。

image-20221027112824724

计算机语言走势

image-20221027113511832

# 5.4 编程语言,该学哪个?

网传的编程语言鄙视链:

image-20220310151750665

  • C 语言:万物之源
  • 诞生于1972年,由 AT&T 公司旗下贝尔实验室创建完成,用于构建 Unix 操作系统。

  • 偏向计算机底层操作(操作系统、网络、硬件驱动等)。

  • 优势:几乎所有现代编程语言都脱胎于 C

  • 劣势:相当陡的学习曲线;不支持面向对象编程

  • C++语言:难学的语言
  • 诞生于 1983 年,作为 C 语言的增强方案、升级版本。C++是 C 语言的超集,C 语言的大部分知识也适用于 C++。
  • 用途:windows 或 MacOS UI、office 全家桶、主流的浏览器、Oracle、MySQL、著名的游戏引擎(如星际争霸、魔兽世界)等
  • 优势:很多公司都用 C++ 开发核心架构,如 Google、腾讯、百度、阿里云等;面向对象性
  • 劣势:体系极为庞大,这是世界目前来说最复杂也是最难的编程语言。
  • C#语言:背靠大树的语言
  • 诞生于2000年,一款强大而灵活的编程语言。靠着微软这棵大树,是多年来 windows 平台的一门主流编程语言。
  • 用途:windows 桌面应用开发、Windows Azure、游戏开发
  • PHP 语言:最好的语言?
  • 诞生于 1994 年,一款服务器端脚本语言。最初表示个人主页(Personal Home Page)
  • PHP 语法和 C 类似,有很多的模板和框架,简单易懂,也许你可以在短短几天做出 web app。它主要用于 web 端,快速建站网络开发
  • 劣势:学习门槛太低;其代码运行速度低于大部分编程语言党争对手
  • Python:易学的语言
  • 诞生于 1991 年,一种面向对象的语言,虽然运行效率不高,但是开发效率非常高。
  • Python 被称为胶水语言,哪里都可以用。
  • JavaScript 语言:前端为王
  • 诞生于 1995 年,网景公司开发完成。
  • JavaScript 是 JavaScript 是目前所有主流浏览器上唯一支持的脚本语言。在前端开发中,占有不可替代的地位。
  • Java 语言:需求旺盛
  • 创建于 1995 年,Java 是一种面向对象、基于类的编程语言。
  • Java 可能是目前运用最广的项目语言。代码稳定性超过 C 和 C++,生产力远超 C 和 C++。有 JVM 在,可以轻松地跨平台。
  • 具有强大的开源开发工具,大量的开源共享库。
  • Java 拥有世界上数量最多的程序员,最不缺人。
  • Go 语言:夹缝中生存
  • Go 语言现在很受关注,它是取代 C 和 C++ 的另一门有潜力的语言。
    • C 语言太原始了,C++ 太复杂了,Java 太高级了,所以 Go 语言就在这个夹缝中出现了。
  • Go 语言已成为云计算领域事实上的标准语言,尤其是在 Docker/Kubernetes 等项目中。
  • Go 语言语法特别简单,你有了 C 和 C++ 的基础,学习 Go 的学习成本基本为零。
  • Go 社区从 Java 社区移植了各种优秀的框架或库。

总结:

  • 程序设计语言有很多种,每种语言都是为了实现某个特定的目的而发明的。
  • 没有“最好”的语言,只有在特定场景下相对来说,最适合的语言而已。
  • 如果你掌握了一种编程语言,也会更容易上手其它的编程语言。关键是学习如何使用程序设计方法来解决问题。这也是本套课程的主旨。
  • Talk is cheap,Show me the code。

# 6. Java 语言概述

# 6.1 Java 概述

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

  • 是一种面向 Internet 的编程语言。Java 一开始富有吸引力是因为 Java 程序可以在Web浏览器中运行。这些 Java 程序被称为Java小程序(applet),内嵌在 HTML 代码中。

  • 伴随着互联网的迅猛发展,以及 Java 技术在 web 方面的不断成熟,已经成为 Web 应用程序的首选开发语言。

# 6.2 Java 语言简史

起步阶段:

1991 年,Sun 公司的工程师小组想要设计一种语言,应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些设备的处理能力和内存都很有限,并且不同的厂商会选择不同的中央处理器(CPU),因此这种语言的关键是代码短小、紧凑且与平台无关(即不能与任何特定的体系结构捆绑在一起)。

Gosling 团队率先创造了这个语言,并命名为“Oak"(起名的原因是因为他非常喜欢自己办公室外的橡树)。后因智能化家电的市场需求没有预期的高,Sun 公司放弃了该项计划。

随着 20 世纪 90 年代互联网的发展,Sun 公司发现该语言在互联网上应用的前景,于是改造了 Oak,于 1995 年 5 月以 Java 的名称正式发布。(Java 是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名。)

image-20220309230839100

发展阶段:

发行版本 发行时间 备注
Java 1.0 1996.01.23 Sun 公司发布了 Java 的第一个开发工具包
Java 1.1 1997.02.19 JavaOne 会议召开,创当时全球同类会议规模之最。
Java 1.2 1998.12.08 Java 拆分成:J2SE(标准版)、J2EE(企业版)、J2ME(小型版)
Java 1.3 2000.05.08
Java1.4 2004.02.06
Java 5.0 2004.09.30 ①版本号从 1.4 直接更新至 5.0;②平台更名为 JavaSE、JavaEE、JavaME
Java 6.0 2006.12.11 2009.04.20 Oracle 宣布收购 SUN 公司
2009.04.20 Oracle 公司收购 SUN,交易价格74亿美元。
Java 7.0 2011.07.02
Java 8.0 2014.03.18 此版本是继 Java 5.0 以来变化最大的版本。是长期支持版本(LTS)
Java 9.0 2017.09.22 ①此版本开始,每半年更新一次;②Java 9.0 开始不再支持 windows 32 位系统
Java 10.0 2018.03.21
Java 11.0 2018.09.25 JDK 安装包取消独立 JRE 安装包,是长期支持版本(LTS)
Java 12.0 2019.03.19
... ...
Java17.0 2021.09 发布 Java 17.0,版本号也称为 21.9,是长期支持版本。
... ...
Java19.0 2022.09 发布 Java19.0,版本号也称为 22.9。

# 6.3 Java 之父

  • 詹姆斯·高斯林(James Gosling)先生以“Java 技术之父”而闻名于世。他是 Java 技术的创始人,他亲手设计了 Java 语言,并开发了 Java 编译器和 Java 虚拟机,使 Java 成为了世界上最流行的开发语言。
  • James Gosling 于 1984 年加入 Sun 公司,并一直服务于 Sun 公司,直至 2010 年前后,Sun 被 Oracle 并购而加入 Oracle,担任客户端软件集团的首席技术官; 2010 年 4 月从 Oracle 离职。

# 6.4 公司八卦

  • SUN 与 Oracle

SUN 是一家极具创新能力的公司,2001 年 “9.11”以前,SUN 公司市值超过1000亿美元。 但是没能利用 Java 构建一个强有力、可变现的生态系统,没打好 Java 这张牌。此后,互联网泡沫破裂,硬件需求大幅减少,它的市值在一个月之内跌幅超过 90%。SUN 公司的成长用了 20 年,而衰落只用了 1 年!

  • Oracle 与 Google

Google 和 Oracle 的侵权事件:

2010 年 8 月,Oracle 起诉 Google 的 Android 系统侵权,要求赔偿 26 亿美元。

  • Oracle 认为 Google 的代码中使用了 Java 的37个API,并且认为 Google 是故意为之,因为这样做的好处是可以让更多的 Java 程序员更容易接受 Android 的代码。
  • Oracle 认为 Android 中有9行代码直接抄袭了 Java 的实现。这 9 行牛气哄哄的代码都出自一人之手,他就是 Java 大牛------Joshua Bloch。

2018 年 3 月,美国联邦巡回上诉法院裁决,谷歌侵犯了甲骨文的版权,支付高达88亿美元的赔偿金。

2021 年 4 月,美国最高法院给出了最终裁决:谷歌胜诉,其代码属于“合理使用”的范畴。为期十多年的软件行业“第一版权案”落幕。

//Code In OpenJDK / Android :
1. private static void rangeCheck(int arrayLen, int fromIndex, int toIndex) {
2.    if (fromIndex > toIndex)
3.        throw new IllegalArgumentException("fromIndex(" + fromIndex +
4.                   ") > toIndex(" + toIndex+")");
5.    if (fromIndex < 0)
6.        throw new ArrayIndexOutOfBoundsException(fromIndex);
7.    if (toIndex > arrayLen)
8.        throw new ArrayIndexOutOfBoundsException(toIndex);
9. }
1
2
3
4
5
6
7
8
9
10

image-20221027145908490

# 6.5 Java 技术体系平台

  • Java SE(Java Standard Edition)标准版
    • 支持面向桌面级应用(如 Windows 下的应用程序)的 Java 平台,即定位个人计算机的应用开发。
    • 包括用户界面接口 AWT 及 Swing,网络功能与国际化、图像处理能力以及输入输出支持等。
    • 此版本以前称为 J2SE
  • Java EE(Java Enterprise Edition)企业版
    • 为开发企业环境下的应用程序提供的一套解决方案,即定位在服务器端的Web应用开发。
    • JavaEE 是 JavaSE 的扩展,增加了用于服务器开发的类库。如:Servlet 能够延伸服务器的功能,通过请求-响应的模式来处理客户端的请求;JSP 是一种可以将 Java 程序代码内嵌在网页内的技术。
    • 版本以前称为 J2EE
  • Java ME(Java Micro Edition)小型版
    • 支持 Java 程序运行在移动终端(手机、机顶盒)上的平台,即定位在消费性电子产品的应用开发
    • JavaME 是 JavaSE 的内伸,精简了 JavaSE 的核心类库,同时也提供自己的扩展类。增加了适合微小装置的类库:javax.microedition.io.*等。
    • 此版本以前称为 J2ME

image-20211218093009884

注意:Android 开发不等同于 Java ME 的开发

# 7. Java 开发环境搭建(掌握)

# 7.1 什么是 JDK、JRE

  • JDK (Java Development Kit):是 Java 程序开发工具包,包含JRE 和开发人员使用的工具。
  • JRE (Java Runtime Environment) :是 Java 程序的运行时环境,包含JVM 和运行时所需要的核心类库。

如下是 Java 8.0 Platform:

小结:

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

JRE = JVM + Java SE 标准类库

# 7.2 JDK 版本选择


image-20220310201541841

  • 自 Java 8 版本发布以来,其后的每次更新,都会有小伙伴高呼:Java8 YYDS!
  • 论坛的声音:“你发任你发,我用Java 8!”

数据说话 1:

JRebel 于 2022 年 4 月前后发布了《2022 年 Java 生态系统状况报告》,报告中提到使用 Java11 的占比最多,Java 8 紧随其后,如下图。而此前 2020 年的报告显示,Java8 占比达到了84.48%。

d315

我的分析: G1 是最受欢迎的 GC 算法。Java 11 及更高版本的 G1 收集器是默认的 GC,而 Java 8 中并不是。出于对 G1 的喜爱,很多开发者才会选择抛弃 Java 8。

数据说话 2:

此外,某美国软件开发商在对近千名专业的 Java 开发者调研后,发布的《2022 年 Java 开发者生产力报告》称:八年前发布的 Java 8 依然是 Java 中应用最广泛的版本,占比 37%,其次是 Java 11,占比29% 。

高斯林说话:


Spring 框架说话:

在 Java 17 正式发布之前,Java 开发框架 Spring 率先在官博宣布,Spring Framework 6 和 Spring Boot 3 计划在 2022 年第四季度实现总体可用性的高端基线:

  • Java 17+(来自 Spring Framework 5.3.x 线中的 Java 8-17)

  • Jakarta EE 9+(来自 Spring 框架 5.3.x 线中的 Java EE 7-8)

Spring 官方说明:https://spring.io/blog/2022/01/20/spring-boot-3-0-0-m1-is-now-available

image-20220527155439683

意味着:springboot3.0 是需要用 java17 和 spring6.0 为基础建设。如果从企业选型最新 springboot3.0 作为架构来说,它搭配 jdk17 肯定是标配了。

# 7.3 JDK 的下载

  • 下载网址(Oracle 公司官网)
  • 下载步骤:如图所示,在官网底部选择 Developers 开发者

1572254490435

(1)在 Developers 页面中间的技术分类部分,选择Java,单击进入,如图所示:

(2)这里展示的是最新 Java 版本,例如 Java17。单击Download Java,然后选择具体的版本下载。

(3)选择 Download Java 按钮后

image-20211019111110242

(4)如果想安装 Java8 可以选择如下位置:

(5)选择 Accept License Agreement,

(6)注册或登录后下载:

(7)如果需要安装其它版本,可以选择 Java archive:

接着进行选择下载即可:

# 7.4 JDK 的安装

  • 安装说明
    • 傻瓜式安装,下一步即可。
    • 建议:安装路径不要有中文或者空格等特殊符号。
    • 本套课程会同时安装 JDK8 和 JDK17,并以 JDK17 为默认版本进行讲解。
  • 安装步骤:

(1)双击jdk-17_windows-x64_bin.exe文件,并单击下一步,如图所示:

image-20220303083718546

(2)修改安装路径,单击更改,如图所示:

image-20220303083759546

(3)将安装路径修改为D:\develop_tools\jdk\jdk-17.0.2\,并单击下一步,如图所示:

image-20220303083845794

(4)稍后几秒,安装完成,如图所示:

image-20220303083905277

image-20220303083931309

# 7.5 配置 path 环境变量

# 7.5.1 理解 path 环境变量

什么是 path 环境变量?

答:window 操作系统执行命令时,所要搜寻的路径。

为什么配置 path?

答:希望在命令行使用 javac.exe 等工具时,任意目录下都可以找到这个工具所在的目录。

以 JDK 为例演示

我们在C:\Users\songhk目录下使用 javac 命令,结果如下:

image-20220310223852720

我们在 JDK 的安装目录的 bin 目录下使用 javac 命令,结果如下:

我们不可能每次使用 java.exe,javac.exe 等工具的时候都进入到 JDK 的安装目录下,太麻烦了。这时就需要配置 path 环境变量。

# 7.5.2 JDK8 配置方案 1:只配置 path

  • 步骤:

(1)打开桌面上的计算机,进入后在左侧找到此电脑,单击鼠标右键,选择属性,如图所示:

image-20220310224844837

(2)选择高级系统设置,如图所示:

image-20220310224912273

(3)在高级选项卡,单击环境变量,如图所示:

image-20220310224952745

(4)在系统变量中,选中Path 环境变量,双击或者点击编辑 ,如图所示:

image-20220310225023208

(5)点击新建,填入D:\develop_tools\jdk\jdk1.8.0_271\bin ,并将此值上移到变量列表的首位。如图所示:

  • 编辑模式 1:

  • 编辑模式 2:(注意,结尾需要有英文模式下的;)

image-20220929104547925

(6)环境变量配置完成,重新开启DOS 命令行,在任意目录下输入javac 或java命令或java -version,运行成功。

# 7.5.3 JDK8 配置方案 2:配置 JAVA_HOME+path(推荐)

  • 步骤:

(1)打开桌面上的计算机,进入后在左侧找到计算机,单击鼠标右键,选择属性,如图所示:

image-20220310224844837

(2)选择高级系统设置,如图所示:

image-20220310224912273

(3)在高级选项卡,单击环境变量,如图所示:

image-20220310224952745

(4)在系统变量中,单击新建 ,创建新的环境变量,如图所示:

(5)变量名输入JAVA_HOME,变量值输入 D:\develop_tools\jdk\jdk1.8.0_271 ,单击确定,如图所示:

(6)选中Path 环境变量,双击或者点击编辑 ,如图所示:

image-20220310225023208

(7)在变量值的最前面,键入%JAVA_HOME%\bin。如图所示:

注意:强烈建议将%JAVA_HOME%\bin 声明在 path 环境变量中所有变量的最前面!

(8)环境变量配置完成,重启DOS 命令行,在任意目录下输入javac 或java命令或java -version,运行成功。

我想说:

有的书籍、论坛、视频上还提到配置 classpath,用于指名 class 文件识别的路径。其实是没必要的,反而建议大家如果配置了 classpath 环境变量,要删除。对于初学者,反而不友好。

小结如下:

image-20220607115255562

# 7.5.4 JDK17 配置方案:自动配置

不管大家有没有提前安装 JDK8 或其它版本 JDK,在我们安装完 JDK17 之后,理应按 JDK8 的方式配置 path 环境变量。但是,我们发现在安装完 JDK17 以后,配置环境变量之前,执行 CMD 指令:

竟然成功了!而且是 17.0.2 版本。因为 JDK17 在安装之后,自动进行了环境变量的配置。如下:

这里建议,将 JDK17 安装的路径,设置为 JAVA_HOME,并将%JAVA_HOME%\bin上移到首位。

思考:如果你仍然希望在 JDK8 下开发 Java 程序?如何做呢?

# 8. 开发体验:HelloWorld(掌握)

JDK 安装完毕,我们就可以开发第一个 Java 程序了,习惯性的称为:HelloWorld。

# 8.1 开发步骤

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

  • 将 Java 代码编写到扩展名为 .java 的源文件中
  • 通过 javac.exe 命令对该 java 文件进行编译,生成一个或多个字节码文件
  • 通过 java.exe 命令对生成的 class 文件进行运行

image-20220310230210728

# 8.2 编写

(1)在D:\JavaSE\chapter01 目录下新建文本文件,完整的文件名修改为HelloWorld.java,其中文件名为HelloWorld,后缀名必须为.java。

(2)用记事本或 editplus 等文本编辑器打开(虽然记事本也可以,但是没有关键字颜色标识,不利于初学者学习)

(3)在文件中输入如下代码,并且保存:

class HelloChina {
  	public static void main(String[] args) {
    	System.out.println("HelloWorld!!");
  	}
}
1
2
3
4
5
  • 友情提示 1:每个字母和符号必须与示例代码一模一样,包括大小写在内。

  • 友情提示 2:

或

第一个HelloWord 源程序就编写完成了,但是这个文件是程序员编写的,JVM 是看不懂的,也就不能运行,因此我们必须将编写好的Java源文件 编译成 JVM 可以看懂的字节码文件 ,也就是.class文件。

# 8.3 编译

在 DOS 命令行中,进入D:\JavaSE\chapter01目录,使用javac 命令进行编译。

使用文件资源管理器打开D:\JavaSE\chapter01目录,然后在地址栏输入 cmd。

命令:

javac Java源文件名.后缀名java
1

举例:

javac HelloWorld.java
1

编译成功后,命令行没有任何提示。打开D:\JavaSE\chapter01目录,发现产生了一个新的文件 HelloChina.class,该文件就是编译后的文件,是 Java 的可运行文件,称为字节码文件,有了字节码文件,就可以运行程序了。

# 8.4 运行

在 DOS 命令行中,在字节码文件目录下,使用java 命令进行运行。

命令:

java 主类名字
1

主类是指包含 main 方法的类,main 方法是 Java 程序的入口:

public static void main(String[] args){
    
}
1
2
3

举例:

java HelloChina
1

错误演示:

java HelloChina.class

# 9. Java 开发工具

# 9.1 都有哪些开发 Java 的工具

  • 级别一:文本开发工具

  • 级别二:集成开发环境(Integrated Development Environment,IDE)

把代码编写,编译,执行,调试等多种功能综合到一起的开发工具。

# 9.2 如何选择

前期我们先使用文本开发工具,培养代码感,利于公司笔、面试。

后期我们使用 IDE,提供更强大的功能支持。

# 10. HelloWorld 案例常见错误

# 10.1 拼写问题

  • 单词拼写问题
  • 正确:class 错误:Class
  • 正确:String 错误:string
  • 正确:System 错误:system
  • 正确:main 错误:mian
  • Java 语言是一门严格区分大小写的语言
  • 标点符号使用问题
  • 不能用中文符号,英文半角的标点符号(正确)
  • 括号问题,成对出现

# 10.2 编译、运行路径问题

举例 1:

  • 源文件名不存在或者写错
  • 当前路径错误
  • 后缀名隐藏问题

举例 2:

  • 类文件名写错,尤其文件名与类名不一致时,要小心
  • 类文件不在当前路径下,或者不在 classpath 指定路径下

# 10.3 语法问题

举例 1:

声明为 public 的类应与文件名一致,否知编译失败。

举例 2:

编译失败,注意错误出现的行数,再到源代码中指定位置改错

# 10.4 字符编码问题

当 cmd 命令行窗口的字符编码与.java 源文件的字符编码不一致,如何解决?

1557881223916

解决方案一:

  • 在 Notepad++等编辑器中,修改源文件的字符编码:

  • 在 EditPlus 中可以将 Java 源文件另存为 ANSI 编码方式(中文操作系统下即为 GBK 字符集)

解决方案二:

在使用javac命令式,可以指定源文件的字符编码
javac -encoding utf-8 Review01.java
1

# 10.5 建议

  • 注意缩进!

    • 一定要有缩进。缩进就像人得体的衣着一样!

    • 只要遇到{}就缩进,缩进的快捷键 tab 键。

  • 必要的空格

    • 变量类型、变量、赋值符号、变量值之间填充相应空格,更美观。比如: int num = 10;

# 11. HelloWorld 小结

# 11.1 Java 程序的结构与格式

结构:

类{
    方法{
        语句;
    }
}
1
2
3
4
5

格式:

(1)每一级缩进一个 Tab 键

(2){}的左半部分在行尾,右半部分单独一行,与和它成对的"{"的行首对齐

# 11.2 Java 程序的入口

Java 程序的入口是 main 方法

public static void main(String[] args){
    
}
1
2
3

# 11.3 两种常见的输出语句

  • 换行输出语句:输出内容,完毕后进行换行,格式如下:

    System.out.println(输出内容);
    
    1
  • 直接输出语句:输出内容,完毕后不做任何处理,格式如下

    System.out.print(输出内容);
    
    1

注意事项:

​ 换行输出语句,括号内可以什么都不写,只做换行处理

​ 直接输出语句,括号内什么都不写的话,编译报错

# 11.4 源文件名与类名

(1)源文件名是否必须与类名一致?public 呢?

如果这个类不是public,那么源文件名可以和类名不一致。但是不便于代码维护。

如果这个类是public,那么要求源文件名必须与类名一致。否则编译报错。

我们建议大家,不管是否是public,都与源文件名保持一致,而且一个源文件尽量只写一个类,目的是为了好维护。
1
2
3
4
5

(2)一个源文件中是否可以有多个类?public 呢?

一个源文件中可以有多个类,编译后会生成多个.class字节码文件。

但是一个源文件只能有一个public的类。
1
2
3

# 12. 注释(comment)

  • 什么是注释?

    • 源文件中用于解释、说明程序的文字就是注释。
  • 注释是一个程序员必须要具有的良好编程习惯。实际开发中,程序员可以先将自己的思想通过注释整理出来,再用代码去体现。

    程序员最讨厌两件事:

    一件是自己写代码被要求加注释

    另一件是接手别人代码,发现没有注释

  • Java 中的注释类型:

    • 单行注释

      //注释文字
      
      1
    • 多行注释

      /* 
      注释文字1 
      注释文字2
      注释文字3
      */
      
      1
      2
      3
      4
      5
    • 文档注释 (Java 特有)

      /**
        @author  指定java程序的作者
        @version  指定源文件的版本
      */ 
      
      1
      2
      3
      4
  • 注释的作用

    • 它提升了程序的可阅读性。
    • 调试程序的重要方法。
  • 具体使用 1:单行注释、多行注释

    • 对于单行和多行注释,被注释的文字,不会不会出现在字节码文件中,进而不会被 JVM(java 虚拟机)解释执行。

    • 多行注释里面不允许有多行注释嵌套。

    • 一个段子

      A:嘿 //是什么意思啊?
      B:嘿.
      A:呃 我问你//是什么意思?
      B:问吧.
      A:我刚才不是问了么?
      B:啊?
      A:你再看看记录...
      B:看完了.
      A:......所以//是啥?
      B:所以什么?
      A:你存心耍我呢吧?
      B:没有啊 你想问什么?
      ……
      不断循环之后,A一气之下和B绝交,自己苦学程序。
      N年之后,A终于修成正果,回想起B,又把聊天记录翻出来看,这时,他突然发现B没有耍他……
      而他自己也不知道当年他问B的究竟是什么问题……
      
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
  • 具体使用 2:文档注释(Java 特有)

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

    • 操作方式。比如:

      javadoc -d mydoc -author -version HelloWorld.java
      
      1

案例:

//单行注释
/*
多行注释
*/
/**
文档注释演示。这是我的第一个Java程序!^_^
@author songhk
@version 1.0
*/
public class HelloWorld{
    
	/**
	Java程序的入口
	@param args main方法的命令参数
	*/
    public static void main(String[] args){
        System.out.println("hello");
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 13. Java API 文档

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

  • Java 语言提供了大量的基础类,因此 Oracle 也为这些基础类提供了相应的说明文档,用于告诉开发者如何使用这些类,以及这些类里包含的方法。大多数 Java 书籍中的类的介绍都要参照它来完成,它是编程者经常查阅的资料。

  • Java API 文档,即为 JDK 使用说明书、帮助文档。类似于:

    新华字典

  • 下载 API 文档:

    • 在线看:https://docs.oracle.com/en/java/javase/17/docs/api/index.html
    • 离线下载:https://www.oracle.com/java/technologies/javase-jdk17-doc-downloads.html

# 14. Java 核心机制:JVM

# 14.1 Java 语言的优缺点

Java 确实是从 C 语言和 C++语言继承了许多成份,甚至可以将 Java 看成是类 C 语言发展和衍生的产物。“青出于蓝,而胜于蓝”。

# 14.1.1 优点

  • 跨平台性:这是 Java 的核心优势。Java 在最初设计时就很注重移植和跨平台性。比如:Java 的 int 永远都是 32 位。不像 C++可能是 16,32,可能是根据编译器厂商规定的变化。
    • 通过 Java 语言编写的应用程序在不同的系统平台上都可以运行。“Write once , Run Anywhere”。
    • 原理:只要在需要运行 java 应用程序的操作系统上,先安装一个 Java 虚拟机 (JVM ,Java Virtual Machine) 即可。由 JVM 来负责 Java 程序在该系统中的运行。

JVM的跨平台性

image-20211217111217831

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

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

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

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

  • 高性能:

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

    • Java低性能的短腿,已经被完全解决了。业界发展上,我们也看到很多 C++应用转到 Java 开发,很多 C++程序员转型为 Java 程序员。

# 14.1.2 缺点

  • 语法过于复杂、严谨,对程序员的约束比较多,与 python、php 等相比入门较难。但是一旦学会了,就业岗位需求量大,而且薪资待遇节节攀升。
  • 一般适用于大型网站开发,整个架构会比较重,对于初创公司开发和维护人员的成本比较高(即薪资高),选择用 Java 语言开发网站或应用系统的需要一定的经济实力。
  • 并非适用于所有领域。比如,Objective C、Swift 在 iOS 设备上就有着无可取代的地位。浏览器中的处理几乎完全由 JavaScript 掌控。Windows 程序通常都用 C++或 C#编写。Java 在服务器端编程和跨平台客户端应用领域则很有优势。

# 14.2 JVM 功能说明

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

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

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

使用 JVM 前后对比:

image-20220514151716805

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

  • Java 程序在运行过程中,涉及到运算的数据的分配、存储等都由 JVM 来完成
  • Java 消除了程序员回收无用内存空间的职责。提供了一种系统级线程跟踪存储空间的分配情况,在内存空间达到相应阈值时,检查并释放可被释放的存储器空间。
  • GC 的自动回收,提高了内存空间的利用效率,也提高了编程人员的效率,很大程度上减少了因为没有释放空间而导致的内存泄漏。

面试题:

Java 程序还会出现内存溢出和内存泄漏问题吗? Yes!

# 15. 章节案例

案例 1:个人信息输出

image-20220315221336038

class Exercise1{
	public static void main(String[] args){
		System.out.println("姓名:康师傅");
		System.out.println();//换行操作
		System.out.println("性别:男");
		System.out.println("家庭住址:北京程序员聚集地:回龙观");
	}
}
1
2
3
4
5
6
7
8

案例 2:输出:心形

结合\n(换行),\t(制表符),空格等在控制台打印出如下图所示的效果。

image-20220309004152219

方式一:

//方式一:
class Exercise2{
	public static void main(String[] args){
		System.out.print("\t");
		System.out.print("*");
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("\t");
		
		System.out.println("*");

		
		System.out.print("*");
		System.out.print("\t");
		//System.out.print("\t");
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("I love java");
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("\t");
		System.out.println("*");

		
		System.out.print("\t");
		System.out.print("*");
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("\t");
		
		System.out.println("*");

		
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("*");
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("\t");
		
		System.out.println("*");

		
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("*");
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("\t");
		
		System.out.println("*");
		
		
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("*");
		System.out.print("\t");
		
		System.out.println("*");

		
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("\t");
		System.out.print("    ");
		System.out.print("*");
	}

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85

方式二:

class Exercise3{
	public static void main(String[] args){
		
		System.out.print("\t"+"*"+"\t\t\t\t\t\t\t\t\t\t\t\t"+"*"+"\t"+"\n");
		System.out.print("*"+"\t\t"+"*"+"\t\t\t\t"+"I love Java"+"\t\t\t\t"+"*"+"\t\t\t"+"*"+"\n");
		System.out.print("\t"+"*"+"\t\t\t\t\t\t\t\t\t\t\t\t"+"*"+"\t"+"\n");
		System.out.print("\t\t"+"*"+"\t\t\t\t\t\t\t\t\t\t"+"*"+"\t\t"+"\n");
		System.out.print("\t\t\t"+"*"+"\t\t\t\t\t\t\t\t"+"*"+"\t"+"\n");
		System.out.print("\t\t\t\t"+"*"+"\t\t\t\t\t\t"+"*"+""+"\t"+"\n");
		System.out.print("\t\t\t\t\t"+"*"+"\t\t\t\t"+"*"+""+"\t\t"+"\n");
		System.out.print("\t\t\t\t\t\t"+"*"+"\t\t"+"*"+""+"\t\t"+"\n");
		System.out.print("\t\t\t\t\t\t\t"+"*"+"\n");
	}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
上次更新: 2025/06/12, 00:25:27
基础软件安装与配置
第02章_变量与运算符

← 基础软件安装与配置 第02章_变量与运算符→

最近更新
01
第九章 前端工程化-下
12-11
02
第八章 前端工程化-中
12-11
03
第七章 前端工程化-上
12-04
更多文章>
Theme by Vdoing | Copyright © 2024-2026 bombax | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式