### Java学习笔记整理 #### 1. Java简介 ##### 1.1 计算机编程和开发语言 计算机系统由硬件系统和软件系统组成。软件系统又进一步细分为系统软件和应用软件。其中,系统软件包括操作系统、编译系统、数据库系统等;应用软件则是为了满足特定需求而设计的软件。 为了开发软件,需要选择合适的计算机语言、开发工具以及编程思想。计算机语言主要分为三类:机器语言、汇编语言和高级语言。高级语言是面向用户的编程语言,它更接近人类自然语言,易于理解和编写。常见的高级语言有C、C++、C#、Java、PHP、Python等。 - **C** 和 **C++** 更适合于底层开发,如操作系统内核、嵌入式系统等。 - **C#**、**Java** 和 **PHP** 更倾向于Web开发,广泛应用于网站和Web应用程序的构建。 - **Python** 主要用于数据处理、科学计算、自动化运维等领域。 ##### 1.2 Java跨平台原理 Java的最大特点是“一次编写,到处运行”,这一特性得益于Java虚拟机(JVM)的存在。Java代码被编译成字节码(.class文件),然后由JVM解释执行。不同的操作系统有不同的JVM版本,因此Java程序可以在任何支持JVM的平台上运行。这意味着开发者只需编写一次Java代码,就能在不同的操作系统上运行而无需修改。 ##### 1.3 JDK的安装和使用 JDK(Java Development Kit)不仅包含了运行Java程序所需的Java虚拟机(JVM),还包括了一些开发工具,例如编译器、调试器等。根据不同的操作系统和位数,需要安装不同的JDK版本。 - **Windows 64位** 的JDK安装流程如下: - 下载对应版本的JDK安装包。 - 运行安装程序,按照提示进行安装。 - 安装完成后,在系统的环境变量中设置JAVA_HOME、PATH等环境变量。 在JDK的`bin`目录下有两个非常重要的工具: - `javac`: Java编译器,用于将源代码编译为字节码。 - `java`: Java解释器,用于执行编译后的字节码文件。 ##### 1.4 集成开发环境 集成开发环境(IDE)是集成了代码编辑、编译、调试等功能于一体的开发工具,常用的Java IDE有Eclipse、IntelliJ IDEA等。 - **Eclipse**: 开源且免费,拥有丰富的插件生态系统。 - **IntelliJ IDEA**: 提供了更多高级功能,适用于大型项目的开发。 ##### 1.5 Eclipse、MyEclipse常用快捷键 掌握常用的快捷键可以提高开发效率,以下是一些常用的Eclipse/MyEclipse快捷键: - **Ctrl + Space**: 自动补全代码。 - **Ctrl + Shift + O**: 导入缺失的包。 - **Ctrl + 1**: 快速修复错误或警告。 - **Alt + Shift + R**: 重命名变量或方法。 - **Ctrl + Shift + F**: 格式化代码。 #### 2. Java面向对象 ##### 2.1 JavaBean JavaBean是一种遵循特定编码规则的Java类,主要用于封装属性和行为。它通常用于Java应用中的数据模型层,通过提供公共的getter和setter方法来访问其私有字段。 ##### 2.2 继承 继承是面向对象编程中的一个核心概念,它允许创建一个新的类(子类)来继承另一个类(父类)的属性和方法。这样可以复用代码并保持类的清晰结构。 - **继承语法**: 使用关键字`extends`。 - **访问修饰符**: 子类只能访问父类中public和protected成员,以及同包内的default成员。 ##### 2.3 多态 多态性是指允许不同子类型的对象对同一消息作出响应的能力。在Java中,多态可以通过方法覆盖(overriding)和方法重载(overloading)实现。 - **方法覆盖**: 子类中定义的方法与父类中的方法具有相同的名称、参数列表和返回类型,但行为可能不同。 - **方法重载**: 在同一个类中,多个方法具有相同的名称但参数列表不同。 #### 3. Java常用类 ##### 3.1 和字符串相关的类:String, StringBuilder, StringBuffer - **String**: 不可变的字符序列,用于表示文本。 - **StringBuilder**: 可变的字符序列,线程不安全,效率较高。 - **StringBuffer**: 可变的字符序列,线程安全,效率较低。 ##### 3.2 Date `java.util.Date`类用于表示具体的时间点,通常用于日期和时间的处理。 - **构造方法**: `new Date()` 或 `new Date(long date)`。 - **方法**: `getTime()`, `toString()`等。 ##### 3.3 Math `java.lang.Math`类提供了数学运算的方法,如绝对值、指数、对数等。 - **方法**: `abs()`, `max()`, `min()`, `sqrt()`, `pow()`, `random()`等。 ##### 3.4 Random `java.util.Random`类用于生成伪随机数。 - **构造方法**: `new Random()`, `new Random(long seed)`。 - **方法**: `nextInt()`, `nextDouble()`, `nextBoolean()`等。 #### 小练习 ##### 1. 获取文件的后缀名 可以利用`java.io.File`类的方法获取文件名和扩展名。 ```java File file = new File("test.txt"); String name = file.getName(); int index = name.lastIndexOf("."); String extension = name.substring(index + 1); System.out.println("文件后缀名为:" + extension); ``` ##### 2. 拼接1---10作为一个字符串 使用`StringBuilder`或`StringBuffer`类可以方便地进行字符串拼接。 ```java StringBuilder sb = new StringBuilder(); for (int i = 1; i <= 10; i++) { sb.append(i); } System.out.println(sb.toString()); ``` #### 4. Java集合 ##### 4.1 ArrayList及其三种遍历方式:for, foreach, iterator - **ArrayList**: 动态数组实现的列表,可以存放任意类型的对象。 - **遍历方式**: - **for循环**: 适用于所有集合。 - **foreach循环**: 适用于所有集合,简洁易读。 - **Iterator接口**: 适用于所有集合,支持从集合中移除元素。 ##### 4.2 HashSet及其两种遍历方式:foreach, iterator - **HashSet**: 基于哈希表实现的集合,不允许重复元素。 - **遍历方式**: - **foreach循环**: 简洁易读。 - **Iterator接口**: 支持从集合中移除元素。 ##### 4.3 HashMap及其一种遍历方式:iterator - **HashMap**: 基于哈希表实现的键值对存储容器,允许一个null键和多个null值。 - **遍历方式**: 使用`iterator`遍历keySet或entrySet。 ##### 4.4 Collection三种遍历方式总结 - **for循环**: 通用,适用于所有集合。 - **foreach循环**: 适用于所有集合,简洁。 - **Iterator接口**: 支持从集合中移除元素,适用于所有集合。 #### 5. 可变参数 Java中的可变参数允许调用者传递任意数量的参数给方法。 - **语法**: `void method(String... args)` #### 6. Arrays类:数组与列表相互转换 - **Arrays.asList()**: 将数组转换为列表。 - **List.toArray()**: 将列表转换为数组。 #### 7. Collections类:列表排序、求最大最小值 - **Collections.sort()**: 对列表进行排序。 - **Collections.max()**: 返回列表中的最大值。 - **Collections.min()**: 返回列表中的最小值。 #### 8. 文件 ##### 8.1 文件概述 文件操作涉及到文件的创建、读取、写入和删除等操作。 ##### 8.2 创建文件和文件夹 - **创建文件**: `new File("filename").createNewFile()` - **创建文件夹**: `new File("dirname").mkdirs()` ##### 8.3 删除文件和文件夹 - **删除文件**: `new File("filename").delete()` - **删除文件夹及内容**: 递归删除文件夹下的所有文件和子文件夹。 ##### 8.4 文件列表和文件过滤器 - **列出文件**: `new File("dir").listFiles()` - **文件过滤器**: 使用`FilenameFilter`或`FileFilter`接口实现过滤条件。 ##### 8.5 补充一些File的一些常用方法 - **getName()**: 获取文件名。 - **getPath()**: 获取文件路径。 - **getParent()**: 获取父目录。 - **exists()**: 判断文件是否存在。 - **isDirectory()**: 判断是否为目录。 #### 9. IO流 ##### 9.1 分类 IO流主要分为字节流和字符流两大类。 ##### 9.2 字节流 - **读取文件(输入流)**: `InputStream`。 - **写文件(输出流)**: `OutputStream`。 ##### 9.3 字符流 - **读取文件**: `Reader`。 - **写文件**: `Writer`。 ##### 9.4 拷贝文件 - **字节流拷贝**: 使用`InputStream`和`OutputStream`。 - **字符流拷贝**: 使用`Reader`和`Writer`。 #### 10. JavaWeb基础 ##### 10.1 B/S架构 B/S架构(Browser/Server,浏览器/服务器)是一种网络架构模式,客户端通过浏览器向服务器发送请求,服务器处理请求并返回结果。 ##### 10.2 服务器 服务器是网络环境中的一种高性能计算机,负责处理客户端发送的请求,并返回相应的结果。 ##### 10.3 Tomcat JavaWeb服务器 Tomcat是一个开源的Servlet容器,主要用于运行JavaWeb应用程序。 - **安装**: - 下载Tomcat安装包。 - 解压缩到指定目录。 - 设置环境变量CATALINA_HOME。 - **启动和停止**: - 启动: `bin/startup.sh` (Linux) / `bin/startup.bat` (Windows) - 停止: `bin/shutdown.sh` (Linux) / `bin/shutdown.bat` (Windows) ##### 10.4 JavaWeb项目 - **项目结构**: 通常包含`WEB-INF`目录、`classes`目录、`lib`目录等。 - **创建JavaWeb项目**: 使用IDE如Eclipse或IntelliJ IDEA。 ##### 10.5 部署JavaWeb到Tomcat - **直接拷贝**: 将JavaWeb项目直接复制到Tomcat的`webapps`目录下。 - **配置Context**: 修改`conf/server.xml`文件中的`<Context>`元素。 ##### 10.6 把Tomcat集成到Eclipse - **选择插件**: 根据Eclipse版本选择对应的Tomcat插件。 - **安装插件**: 通过Eclipse Marketplace进行安装。 - **配置Tomcat**: 在Eclipse中配置Tomcat服务器。 ##### 10.7 Servlet和JSP - **Servlet**: 用于处理客户端请求的服务器端程序。 - **JSP**: Java Server Pages,用于生成动态网页。 - **用户登录**: 通过Servlet处理登录逻辑,使用JSP页面展示登录界面。 #### 11. 前端基础(HTML+CSS+JS) ##### 11.1 Hbuider工具的使用 Hbuilder是一款快速开发工具,支持HTML5、CSS3、JavaScript等前端技术。 - **安装Hbuilder**。 - **新建项目**。 - **编写HTML/CSS/JS代码**。 ##### 11.2 CSS的简单使用 CSS(Cascading Style Sheets)用于定义HTML元素的样式。 - **内联样式**: 直接写在HTML标签中。 - **内部样式表**: 写在`<head>`部分的`<style>`标签中。 - **外部样式表**: 单独的`.css`文件。 ##### 11.3 JavaScript的简单使用 JavaScript是一种脚本语言,用于实现网页上的交互功能。 - **内联脚本**: 写在HTML标签中。 - **内部脚本**: 写在`<head>`部分的`<script>`标签中。 - **外部脚本**: 单独的`.js`文件。 - **事件**: 如点击事件`onclick`。 - **自定义函数**: 定义并调用函数。 #### 12. WebSocket基础 ##### 12.1 WebSocket前世今生 WebSocket是一种在单个TCP连接上进行全双工通信的协议,最初由Hybi社区提出,后被IETF标准化为RFC 6455。 ##### 12.2 WebSocket机制 - **建立连接**: 客户端通过HTTP发起请求,服务器回应HTTP升级请求,连接升级为WebSocket。 - **数据传输**: 客户端和服务端可以双向发送消息。 ##### 12.3 WebSocket API - **WebSocket服务器端API**: 处理客户端的连接、接收和发送消息等。 - **WebSocket客户端API**: 连接到服务器、发送消息、接收消息等。 ##### 12.4 WebSocket入门 - **服务端实现**: 使用Java的WebSocket服务器端API。 - **客户端实现**: 使用JavaScript的WebSocket客户端API。 ##### 12.5 WebSocket综合实例 - **分析需求**。 - **实现服务端和客户端的交互**。 通过上述整理,我们可以看到Java不仅仅是一种编程语言,更是一个庞大的生态系统。掌握了这些基础知识之后,我们就可以开始深入学习Java的各种高级特性以及如何利用它们构建复杂的软件系统了。
剩余63页未读,继续阅读
- 粉丝: 9
- 资源: 18
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助