01Java语言背景介绍(了解)
Java 是一种高级、健壮、面向对象(oops)且安全稳定的编程语言,但它不是纯粹的面向对象语言,因为它支持原始数据类型,如 int、char 等。
Java 是一种独立于平台的语言,因为它具有运行时环境,即 JRE 和 API。这里平台是指运行应用程序的硬件或软件环境。
Java 代码被编译成字节码或与机器无关的代码。该字节码在 JVM(Java 虚拟机)上运行。
Java 的语法几乎与 C/C++ 相同。但是java不支持像指针这样的低级编程函数。Java 中的代码总是以类和对象的形式编写的。
Java se Java桌面版
Java EE Java 企业版
Java ME Java 小型版 开发嵌入式消费者应用
Java 版本历史
在这里,我们列出了 Java 的所有版本以及这些版本中引入的主要功能。
版本名称 | 代码名称 | 发布日期 | 描述 |
---|---|---|---|
Java Alpha 和 Beta | 1995年 | - 这是第一个版本,但 API 和 ABI 不稳定。 - 这是第一个版本,但 API 和 ABI 不稳定。 |
|
JDK 1.0 | 橡木 | 1996 年 1 月 | - 第一个稳定版本 |
JDK 1.1 | 1997 年 2 月 | - AWT 事件建模重组。 - 添加了内部类、Java Beans、JDBC、RMI、反射、JIT - 添加了内部类、Java Beans、JDBC、RMI、反射、JIT |
|
J2SE 1.2 | 操场 | 1998 年 12 月 | - JDK 被 J2SE 取代。 - 支持strictfp 关键字。 - Swing API 与核心类集成。 - 集合框架。 |
J2SE 1.3 | 红隼 | 2000 年 5 月 | - 包括 HotSpot JVM - RMI 修改。 - 支持 JNDI(Java 命名和目录接口) - JPDA(Java 平台调试器架构)。 - 包括代理类。 |
J2SE 1.4 | 梅林 | 2002 年 2 月 | - 支持断言关键字。 - 图书馆的改进。 - 支持正则表达式。 - 支持异常链。 - 支持异常链。 - 包括 Java Web Start。 - 支持 API 首选项 (java.util.prefs)。 |
J2SE 5.0 | 老虎 | 2004 年 9 月 | - 包括泛型、元数据、自动装箱/拆箱、枚举、可变参数。 - 为每个循环增强。 - 支持静态导入。 |
Java SE 6 | 野马 | 2006 年 12 月 | - 支持Win9x版本。 - 支持脚本语言。 - 改进的 Swing 性能。 - 支持JDBC 4.0 - 将 JAXB 升级到 2.0。 - GUI 和 JVM 的改进。 |
Java SE 7 | 海豚 | 2011 年 7 月 | - JVM 中对动态语言的支持。 - 包括 64 位指针。 - 支持交换机中的字符串。 - 在 try 块中支持资源管理。 - 支持二进制整数文字。 - 支持数字文字中的下划线。 - 支持多个异常。 - 包含 I/O 库。 |
Java SE 8 (LTS) | 2014 年 3 月 | - 支持 JSR 335 和 JEP 126。 - 支持无符号整数。 - 支持日期和时间 API。 - 包括 JavaFX。 - 支持 Windows XP。 |
|
Java SE 9 | 2017 年 9 月 | - 支持多个千兆字节堆。 - 包括垃圾收集器。 |
|
Java SE 10 | 2018 年 3 月 | - 支持局部变量类型推断。 - 支持局部变量类型推断。 - 包括应用程序类。 |
|
Java SE 11(LTS) | 2018 年 9 月 | - 支持错误修复。 - 包括长期支持 (LTS)。 - 支持传输层安全。 |
|
Java SE 12 | 2019 年 3 月 | - 支持 JVM 常量 API。 - 包括 CDS 档案。 |
|
Java SE 13 | 2019 年 9 月 | - 更新了开关表达式。 - 包括文本块。 - 支持传统套接字 API。 |
|
Java SE 14 | 2020 年 3 月 | - 支持事件流。 - 改进的 NullPointerException。 - 删除垃圾收集器中的并发标记扫描 (CMS)。 |
|
Java SE 15 | 2020 年 9 月 | ||
Java SE 16 | 2021 年 3 月 | ||
Java SE 17(LTS) | 2021 年 9 月 |
Java的演变
Java 最初是作为 Java 1.0 发布的,但在其最初发布后不久,Java 1.1 就发布了。Java 1.1 重新定义了事件处理,添加了新的库元素。
在Java 1.2 Swing 和 Collection 框架中添加了 和suspend()
,resume()
并且stop()
不推荐使用Thread类中的方法。
Java 1.3没有进行重大更改,但下一个版本Java 1.4包含几个重要更改。assert
引入了关键字、链式异常和基于通道的 I/O 系统。
Java 1.5被称为J2SE 5,它添加了以下主要新特性:
- 泛型
- 注释
- 自动装箱和自动拆箱
- 枚举
- For-each 循环
- 可变参数
- 静态导入
- 格式化输入/输出
- 并发实用程序
下一个主要版本是Java SE 7,其中包括许多新更改,例如:
- 现在可以使用String来控制 Switch 语句。
- 多捕获异常
- try-with-resource语句
- 二进制整数文字
- 数字文字中的下划线等。
Java SE 8于 2014 年 3 月 18 日发布。 JAVA 8 中引入的一些主要新特性是,
- Lambda 表达式
java.util.stream
提供流 API 的新集合包。- 增强的安全性
- 包含 Nashorn Javascript 引擎
- 并行数组排序
- JDBC-ODBC Bridge 已被删除等。
Java SE 9于 2017 年 9 月发布。 JAVA 9 中引入的一些主要新功能是,
- 平台模块系统(Project Jigsaw)
- 接口私有方法
- 试用资源
- 匿名类
- @SafeVarargs 注释
- 集合工厂方法
- 流程 API 改进
Java SE 10于 2018 年 3 月发布。 JAVA 10 中引入的一些主要新功能是,
- 支持局部变量类型推断。
- 支持局部变量类型推断。
- 包括应用程序类。
Java SE 11于 2018 年 9 月发布。 JAVA 11 中引入的一些主要新功能是,
- 支持错误修复。
- 包括长期支持 (LTS)。
- 支持传输层安全。
Java SE 12于 2019 年 3 月发布。 JAVA 12 中引入的一些主要新功能是,
- 支持 JVM 常量 API。
- 包括 CDS 档案。
Java SE 13于 2019 年 9 月发布。 JAVA 13 中引入的一些主要新功能是,
- 更新了开关表达式。
- 包括文本块。
- 支持传统套接字 API。
Java SE 14于 2020 年 3 月发布。 JAVA 14 中引入的一些主要新功能是,
- 支持事件流。
- 改进的 NullPointerException。
- 删除垃圾收集器中的并发标记扫描 (CMS)。
Java的应用
Java被广泛应用于世界和人类生活的每一个角落。Java 不仅用于软件,还广泛用于设计硬件控制软件组件。每年有超过 9.3 亿次 JRE 下载,30 亿部手机运行 Java。
以下是 Java 的其他一些用法:
开发桌面应用程序
网络应用程序,如 Linkedin.com、Snapdeal.com 等
像Android这样的移动操作系统
嵌入式系统
机器人和游戏等。
Java 应用程序的类型
以下是我们可以使用 Java 开发的不同类型的应用程序:
- 独立应用
独立应用程序是在单独的计算机进程上运行而不添加任何文件进程的应用程序。独立应用程序也称为 Java GUI 应用程序或桌面应用程序,它使用一些标准的 GUI 组件,例如 AWT(抽象窗口工具包)、swing 和 JavaFX,并且该组件部署到桌面。这些组件有按钮、菜单、表格、GUI 小部件工具包、3D 图形等。使用该组件开发出可以安装在每台机器上的传统软件。
示例:媒体播放器、防病毒软件、Paint、POS 计费软件等。
- 网络应用
Web 应用程序是由客户端运行的客户端-服务器软件应用程序。Servlets、struts、JSP、Spring、hibernate 等用于开发客户端-服务器应用程序。电子商务应用程序也是在 java 中使用电子商务平台即 Broadleaf 开发的。
例如:邮件、电子商务网站、银行网站等。
3.企业应用
企业应用是中间件应用。在整个企业中使用软件和硬件系统技术和服务。它专为银行业务系统等企业领域而设计。
例如:电子商务、会计、银行信息系统等。
- 移动应用
对于移动应用程序,Java 使用 ME 或 J2ME 框架。该框架是跨手机和智能手机运行应用程序的跨平台。Java 也为Android 中的应用程序开发提供了一个平台。
示例: WhatsApp、Xender 等。
02Java语言跨平台原理
Java 是一种独立于平台的语言,因为它具有运行时环境,即 JRE 和 API。这里平台是指运行应用程序的硬件或软件环境。
Java 代码被编译成字节码或与机器无关的代码。该字节码在 JVM(Java 虚拟机)上运行。
jvm虚拟机不是跨平台的
03jre和jdk
(面试题 JDK JRE JVM的关系)(郑州不问)
jdk Java开发工具包,包含Java代码的编译和运行工具
jre Java运行环境 包含jvm虚拟机和Java核心类库(类库:存放Java代码的仓库,核心类库: Java已经写好的非常核心的代码仓库)
jvm Java虚拟机
jdk包含jre,jre
Java虚拟机(JVM)是一个提供运行环境来执行Java字节码的虚拟机。JVM 不理解 Java 文件,这就是您编译*.java
文件以获取*.class
包含 JVM 可理解的字节码的文件的原因。
JVM 控制每个 Java 程序的执行。它支持自动异常处理、垃圾收集堆等功能。
jvm架构
开发Java程序的三个步骤
1编写代码
2编译代码jdk
3运行代码jvm
04JDK的下载和安装
oracle官网下载地址
https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html
05常用dos命令
06Path环境变量的配置
Java环境变量的配置
1在系统变量中新建 JAVA_HOME 变量,值为jdk的安装目录 例如 D:\develop\java\jdk1.8.0_291
2在系统变量的 path变量中 添加 值 %JAVA_HOME%\bin
配置完成后在win+r 输入cmd 打开命令行窗口
Java //运行命令
Javac //编译命令
Java -version //查看jdk版本号
**
07Helloworld案例的编写执行
public class Helloworld {
public static void main(String[] args) {
//第一个Java程序
System.out.println("helo world");
}
}
08helloword案例详解
class : class 关键字用于在 Java 中声明类
public:它是一个访问说明符。公共意味着此功能对所有人可见。
static : static 又是一个用于使函数成为静态的关键字。要执行静态函数,您不必创建类的对象。这里的main()方法由 JVM 调用,无需为类创建任何对象。
void:它是返回类型,意味着这个函数不会返回任何东西。
main : main() 方法是 Java 程序中最重要的方法。这是执行的方法,因此所有逻辑都必须在 main() 方法中。如果 java 类没有 main() 方法,则会导致编译错误。
String[] args:这表示一个类型为 String 且名称为 args 的数组。我们将在 Java 数组部分讨论更多关于数组的内容。
System.out.println:用于在控制台上打印任何内容,例如C 语言中的printf。
现在让我们看看运行时会发生什么
在编写 Java 程序之后,您将尝试编译它。编译器将对您的程序执行一些编译操作。
一旦编译成功,编译器就会生成字节码(.class 文件)。
编译后,当您将尝试运行字节码(.class 文件)时,在运行时执行以下步骤:-
类加载器加载 java 类。它是 JVM Java 虚拟机的子系统。
字节码验证器检查代码片段中是否有可能违反对象访问权限的非法代码。
解释器读取字节码流,然后逐步执行指令。
09helloworld常见问题
10文本编辑器软件的安装与使用
notepad
notepad++(推荐)
sublime Text(推荐)
11注释
对代码进行解释说明性的文字
单行 //
多行
/
*/
12关键字
被Java赋予特定含义的单词
特点:
1.全小写
2.会变色
13常量
概述:在程序运行过程中,不会发生变化的数据.
分类:
字符串常量: 被双引号包围起来的内容.
字符常量: 被单引号包围起来的单个字符.
整数常量: 整数
小数常量: 小数
布尔常量: true,false
空常量: null(不存在)
14变量的介绍
16变量的定义和使用
什么是变量?
当我们想要存储任何信息时,我们将它存储在计算机的一个地址中。我们不是记住我们存储信息的复杂地址,而是命名该地址。地址的命名称为变量。变量是内存位置的名称。
换句话说,变量是一个名称,用于在程序执行期间存储任何类型的值。
要在 Java 中声明变量,我们可以使用以下语法
datatype variableName;
这里,数据类型是指变量的类型,可以是任何类型:int、float等,而variableName可以是任何类型:empId、金额、价格等。
Java 编程语言主要定义了三种变量。
1. 实例变量
1. 静态变量(类变量)
1. 局部变量
概述:在程序运行过程中,会发生变化的数据. 变量本质上是一个存储空间.
语法:
数据类型 变量名 = 值;
/
本质上,变量定义的语法可以拆成两句话.
数据类型 变量名; //变量的定义.可以理解为在内存中挖了一个空间
变量名 = 值; //给变量赋值.可以理解为”向内存空间中存储数据”
*/
15数据类型
基本数据类型:
整数: byte 1,short 2,int 4,long 8
浮点数: float 4,double 8
字符: char 2
布尔: boolean 1
引用数据类型:
字符串: String
17变量的注意事项
注意:
1:变量不能重名
2:变量在使用之前必须赋值
3:变量只能在它所在的大括号中使用.
4:在定义float类型数据的时候,后边必须加F.
在定义long类型数据的时候,后边必须加L
18键盘录入
步骤:
1.导包
import java.util.Scanner; //必须放在类的上边
2.创建对象
Scanner sc = new Scanner(System.in); //放在main方法中,固定写法
3.接收键盘录入的数据
int a = sc.nextInt();
19标识符
概述:在Java中自己起的名字.
规则:
硬性规则:
1.不能以数字作为开头
2.不能是关键字
3.只能由”英文大小写字母”,”数字”,”“,”$”组成.
潜规则:
1.见名知意.
2.对于”变量/方法/对象”一般使用”小驼峰命名法”.
//第一个英文单词全小写,其他英文单词,首字母大写,其他字母小写
//studentName, className
3.对于”类/接口”一般使用”大驼峰命名法”.
//所有单词,首字母大写,其他字母小写
//StudentName, ClassName
4.对于”包”所有单词全小写.
//com.itheima
5.对于”常量”所有单词都大写,单词与单词之间使用”“隔开.
//STUDENT_NAME