07 2022 档案

摘要:Connecion详解注册驱动 Connection:数据库连接对象 功能: 获取执行sql的对象 Statement createStatement(); PreparedStatement PrepareStatement(String sql) 管理事务 开启事务:setAutoCommit( 阅读全文
posted @ 2022-07-28 16:19 baimingze 阅读(40) 评论(0) 推荐(0) 编辑
摘要:DriverManager详解注册驱动 DriverManager:驱动管理对象 功能: 注册驱动:告诉程序该使用哪一个数据库驱动jar static void registerDriver(Driver driver):注册与给定的驱动程序 DriverManager 写代码使用:Class.fo 阅读全文
posted @ 2022-07-28 11:44 baimingze 阅读(277) 评论(0) 推荐(0) 编辑
摘要:JDBC概念 概念:java DataBase Connectivity java 数据连接 java语法操作数据库 JDBC本质 其实是官方(sun公司)定义的一套操作所有关系系数据库的规则 即接口 各个数据库厂商去实现这套接口 提供数据库驱动jar包 我们可以使用 这套接口(JDBC)编程 真正 阅读全文
posted @ 2022-07-28 10:44 baimingze 阅读(18) 评论(0) 推荐(0) 编辑
摘要:DCL管理用户-增删查 SQL分类: 1.DDL:操作数据库和表 2.DML:增删改表中数据 3.DQL:查询表中数据 4.DCL:管理用户 授权 DBA:数据库管理员 DCL:管理用户 授权 1.管理用户 先找自己的用户表 在编译器中找到mysql数据库 点击表找到user表点击进入 添加用户 S 阅读全文
posted @ 2022-07-27 17:27 baimingze 阅读(37) 评论(0) 推荐(0) 编辑
摘要:事务的四大特效 1.原子性:是不可分割的最小操作单位 要么同时成功 要么同时失败 2.持久性:当事务提交或回滚 数据库会持久化的保存数据 3.隔离性:多个事务之间 相互独立 4.一致性:事务操作前后 数据总量不变 事务的隔离级别 概念:多个事务之间隔离的 相互独立的 但是如果多个事务操作同一批数据 阅读全文
posted @ 2022-07-27 13:58 baimingze 阅读(173) 评论(0) 推荐(0) 编辑
摘要:事务的基本介绍 事务概念:如果一个包含多个步骤的业务操作 被事务管理 那么这些操作要么同时成功 要么同时失败 图解: 事务操作 1.开启事务 start transaction; 2.回滚 rollback; 3.提交 commit; 使用案例演示 数据表 SQL语句 -- 创建数据表 CREATE 阅读全文
posted @ 2022-07-27 11:34 baimingze 阅读(1828) 评论(0) 推荐(0) 编辑
摘要:外键连接 左外连接: 语法 SELECT 字段列表 FROM 表1 LEFT JOIN 表2 ON 条件; 运行结果 左外连接是查询的是左表所有数据以及其交集部分 数据表 这张表并没有进行外键约束 我们使用左连接看一下 可以看见将左边的表全部输出了 以及他们的交集 交集就是我们的dept_id和id 阅读全文
posted @ 2022-07-27 10:30 baimingze 阅读(516) 评论(1) 推荐(0) 编辑
摘要:多表操作概述 数据表 dept emp 准备SQL语句 -- 创建部门表 CREATE TABLE dept( id INT PRIMARY KEY auto_increment, name VARCHAR(20) ); INSERT INTO dept (name) VALUES("开发部"),( 阅读全文
posted @ 2022-07-26 17:32 baimingze 阅读(176) 评论(0) 推荐(0) 编辑
摘要:数据库设计的范式概述 概念:设计数据库时 需要遵循的一些规范。要遵循后边的范式要求 必须先遵循前边的所有范式要求 设计关系数据库时 遵从不同的规范要求 设计出合理的关系型数据库 这些不同的规范要求被称为不同的范式 各种范式呈递次 越高的范式数据库冗余越小 目前关系数据库有六种范式:第一范式(1NF) 阅读全文
posted @ 2022-07-26 16:30 baimingze 阅读(41) 评论(0) 推荐(0) 编辑
摘要:多表关系介绍 1.多表之间的操作 一对一(了解):如人和身份证 分析:一个人只有一个身份证 一个身份证只能对应一个人 一对多(多对一):如部门和员工 分析:一个部门有多个员工 一个员工只能对应一个部门 多对多:如学生和课程 分析:一个学生可以选择很多门课程 一个课程也可以被很多学生选择 一对多关系实 阅读全文
posted @ 2022-07-26 14:01 baimingze 阅读(72) 评论(0) 推荐(0) 编辑
摘要:级联操作 数据表 department employe 如果我们想要将 department里的id进行改变 不可以直接改id 因为我们已经创建外键约束 是不可以删除的 比如 错误:不能删除或更新父行:外键约束失败(' videoppractice ')。' employee ', CONSTRAI 阅读全文
posted @ 2022-07-26 11:36 baimingze 阅读(643) 评论(0) 推荐(0) 编辑
摘要:外键约束 外键约束:foreign key 让表于表产生关系 从而保证数据的正确性 数据表的创建和数据添加 sql语句 CREATE TABLE emp(-- 创建emp表 id int PRIMARY KEY auto_increment, name VARCHAR(30), age int, d 阅读全文
posted @ 2022-07-25 16:33 baimingze 阅读(2629) 评论(0) 推荐(0) 编辑
摘要:自动增长 概念:如果某一列是数据类型的 使用auto_increment可以来完成值得自动增长 在创建表时 添加主键约束 并且完成主键自增长 SQL语句 CREATE TABLE 数据库表名( 字段 字段数据类型 PRIMARY KEY auto_increment, 字段 字段数据库类型 ... 阅读全文
posted @ 2022-07-25 14:46 baimingze 阅读(2276) 评论(0) 推荐(0) 编辑
摘要:唯一约束 唯一约束:unique 值不能重复 SQL语法 CREATE TABLE demo01( id int, name VARCHAR(50) UNIQUE -- 给name添加唯一约束 ); 运行结果 对表进行右键点击设计表进行查看 可以看到并没有出现唯一键 我们可以使用查询创建数据表的结构 阅读全文
posted @ 2022-07-25 14:15 baimingze 阅读(929) 评论(0) 推荐(0) 编辑
摘要:约束概述 概念:对表中的数据进行限定 保证数据的正确性、有效性和完整性 分类 1.主键约束:primary key 2.非空约束:not null 3.唯一约束:unique 4.外键约束:foreign key 非空约束 非空约束:not null 1.在创建表时使用 SQL语法 CREATE T 阅读全文
posted @ 2022-07-25 11:23 baimingze 阅读(894) 评论(0) 推荐(0) 编辑
摘要:条件查询 1.where子句后跟条件 2.运算符 >、<、<=、>=、=、<> <>在SQL中表示不等于 在mysql中也可以使用!=没有== BETWEEN...AND 在一个范围之内 如:between 100 and 200 相当于条件在100到200之间 包头又包尾 IN(集合) 集合表示多 阅读全文
posted @ 2022-07-25 10:44 baimingze 阅读(721) 评论(0) 推荐(0) 编辑
摘要:DQL基础查询 数据表: 案例-查询姓名和性别 sql语句 SELECT NAME,sex FROM student; 运行结果 案例-去除重复的结果集 sql语句 SELECT DISTINCT english FROM student; -- 去除重复的结果集 运行结果 案例-计算math和en 阅读全文
posted @ 2022-07-25 09:29 baimingze 阅读(11) 评论(0) 推荐(0) 编辑
摘要:分组查询 案例:按照性别分组 分别查询男、女同学的平均分 表: 注意: 分组之后查询的字段:分组字段、聚合函数 运行结果 案例:按照性别分组 分别查询男、女同学的平均分,人数 注意: 1.分组之后查询的字段:分组字段 聚合函数 2.where 和having的区别 where在分组之前进行限定 如果 阅读全文
posted @ 2022-07-24 22:25 baimingze 阅读(185) 评论(0) 推荐(0) 编辑
摘要:排序查询 SELECT * FROM student ORDER BY 条件 先看一下表 运行结果 可以看到是以从小到大进行排序的 排序方式 ASC:升序 默认的 DESC:降序 运行结果: 注意:如果有多个排序条件 则当前边的条件值一样时 才会判断第二条件 聚合函数查询 聚合函数:将一列数据作为一 阅读全文
posted @ 2022-07-24 22:00 baimingze 阅读(104) 评论(0) 推荐(0) 编辑
摘要:数据的增删改查 DML:增删改查表中数据 查询数据-查 SELECT * FROM 表名;查询指定表的全部数据 添加数据-增 INSERT INTO 表名(列名1,列名2,....列表n)values(值1,值2,...值n);添加指定数据 运行结果 这样就是已经添加完数据了 我们可以使用查询数据表 阅读全文
posted @ 2022-07-24 21:28 baimingze 阅读(85) 评论(0) 推荐(0) 编辑
摘要:操作表 R(Retrieve):查询 SHOW TABLES;查询某个数据库中所有的表名称 运行结果 说明我这个数据库中只有应该demo01的表 DESC 表名;查询表结构 运行结果: SELECT * FROM 表名;查询数据表里的数据 运行结果: 它是并没有数据的 所有是空的 c(Create) 阅读全文
posted @ 2022-07-24 20:48 baimingze 阅读(28) 评论(0) 推荐(0) 编辑
摘要:操作数据库创建和查询 R(Retrieve):查询 SHOW DATABASES;查询数据库名称 运行结果: SHOW CREATE DATABASE 数据库名;查询数据库创建的结构 运行结果: c(Create):创建 CREATE DATABASE 数据库名称;创建数据库 运行结果: 出现ok就 阅读全文
posted @ 2022-07-24 20:17 baimingze 阅读(22) 评论(0) 推荐(0) 编辑
摘要:sql概念 sql:Structured Query Language:结构化查询语言 其实就是定义了操作所有关系型数据库的规则 每一种数据库操作的方式存在不一样的地方 称为方言 sql通用语法 1. SQL语句可以单行或多行书写 以分号结尾 2.可以使用空格和缩进来增强语句的可读性 3.Mysql 阅读全文
posted @ 2022-07-24 13:17 baimingze 阅读(119) 评论(0) 推荐(0) 编辑
摘要:Mysql服务启动和关闭 我们下载的是Mysql服务器我们可以让服务器启动或关闭 第一步 先打开任务管理器 选择服务 找到mysql80 它是已经启动的模式 我们右键点击它 可以关闭 也可以重新启动 如果我们点击停止 它这就会现在已经停止 我们也可以选择打开它 我们也可以使用cmd进行开启或关闭 命 阅读全文
posted @ 2022-07-24 12:58 baimingze 阅读(275) 评论(0) 推荐(0) 编辑
摘要:数据库的基本概念 数据库的英文单词:DataBase 简称:DB 数据库用于存储和管理数据的仓库 数据库的特点: 1.持久化存储数据的 其实数据库就是一个文件系统 2.方便存储和管理数据 3.使用了统一的方式操作数据库--SQL 常见的数据库软件 MYSQL:开源免费的数据库 小型数据库 已经被Or 阅读全文
posted @ 2022-07-24 11:55 baimingze 阅读(191) 评论(0) 推荐(0) 编辑
摘要:自定义注解的格式和本质 先进入注解看一下注解是如何定义的 上面这两个注解先不管他 先看一下是如何写这种注解的 格式很简单: public @interface 注解名{} public @interface MyAnno { } 这样就是一个注解 这种注解我们称为源注解 注解本质上就是一个接口 该接 阅读全文
posted @ 2022-07-24 11:39 baimingze 阅读(46) 评论(0) 推荐(0) 编辑
摘要:注解概述 概念:说明程序的 给计算机看的 注释:用文字描述程序 给程序员看的 定义:注解(Annotation),也叫元数据 一种代码级别的说明 它事JDK1.5及以后版本引入的一种特性 与类、接口、枚举是在同一个包、类、字段 方法、局部变量 方法参数等的前面 用于这些元素进行说明 注解 感念描述: 阅读全文
posted @ 2022-07-24 10:59 baimingze 阅读(29) 评论(0) 推荐(0) 编辑
摘要:class对象获取Constructor 获取构造方法们 Constructor<?>[] getConstructors():获取所有的构造方法 Constructor<T> getConstructor(类<?>... parameterTypes):获取指定的构造方法 Constructor< 阅读全文
posted @ 2022-07-24 10:01 baimingze 阅读(94) 评论(0) 推荐(0) 编辑
摘要:class对象功能概述 获取功能: 1.获取成员变量们 Fileld[] getFields() Fileld getFileld(String name). Fileld[] getDeclaredFilds() Filed getDeclaredField(String name) 2.获取构造 阅读全文
posted @ 2022-07-23 17:53 baimingze 阅读(52) 评论(0) 推荐(0) 编辑
摘要:反射的概述 反射:将类的各个组成部分封装为其他对象 这就是反射机制 反射的框架设计灵魂 框架:半成品软件 可以在框架的基础上进行软件开发 简化编码 class类对象这个阶段可以看作为反射 反射好处: 1.可以在程序运行过程中 操作这些对象 2.可以解耦 提高程序的可扩展性 获取字节码class对象的 阅读全文
posted @ 2022-07-23 17:13 baimingze 阅读(44) 评论(0) 推荐(0) 编辑
摘要:Junit单元测试 测试分类: 黑盒测试:不需要写代码 给输入值 看程序是否能够输出期望的值 白盒测试:需要写代码 关注程序具体的执行流程 junit使用的是百盒测试 原先测试类: 类: public class Conbet { public int add(int a,int b){ retur 阅读全文
posted @ 2022-07-23 16:02 baimingze 阅读(49) 评论(0) 推荐(0) 编辑
摘要:通过this引用成员方法 this代表当前对象 如果需要引用的方法就是当前类中的成员方法 那么可以使用this::成员方法 的格式来使用方法引用 函数式接口: @FunctionalInterface public interface Richable { void buy(); } 测试类: pu 阅读全文
posted @ 2022-07-23 11:40 baimingze 阅读(39) 评论(0) 推荐(0) 编辑
摘要:通过类名称引用静态方法 由于在java.lang.Math类中的已经存在了静态方法abs 所以当我们需要通过Lambda来调用该方法时 有两种写法 首先函数式接口: 通过类名引用静态成员方法 类已经存在 静态成员方法也已经存在 就可以通过类名直接引用静态成员方法 函数式接口: @Functional 阅读全文
posted @ 2022-07-23 11:10 baimingze 阅读(63) 评论(0) 推荐(0) 编辑
摘要:方法引用 在使用Lambda表达式的时候 我们实际上传递进行的代码就是一种解决方案 拿什么参数做什么操作 那么考虑一种情况 如果我们在Lambda种所指定的操作方案 已经有地方在相同方案 那是否还有必要再写重复逻辑 冗余Lambda场景 代码: 函数式接口: @FunctionalInterface 阅读全文
posted @ 2022-07-23 10:26 baimingze 阅读(29) 评论(0) 推荐(0) 编辑
摘要:常见方法 跳过前几个:skip 如果希望跳过前几个元素 可以使用skip方法获取一个截取之后的新流 Stream<T> skip(long n); 如果流的当前长度大于n 则跳过前n个 否则将会得到一个长度为0的空流 代码: public static void main(String[] args 阅读全文
posted @ 2022-07-22 16:18 baimingze 阅读(47) 评论(0) 推荐(0) 编辑
摘要:常用方法 映射:map 如果需要将流中的元素映射到另一个流中 可以使用map方法 <R>Stream<R>map(Function<? super T,? exteds R> mapper); 该接口需要一个Function函数式接口参数 可以将当前六中的T类型数据转化为另一个R类型的流 这可以将一 阅读全文
posted @ 2022-07-22 15:59 baimingze 阅读(43) 评论(0) 推荐(0) 编辑
摘要:常见方法 流模型的操作很丰富 这里介绍一些常用的API 这些方法可以被分成两种: 延迟方法:返回值类型仍然是Stream接口自身类型的方法 因此支持链式调用(除了终结方法外 其余方法均为延迟方法。) 终结方法:返回值类型不再是Stream接口自身类型的方法 因此不再支持类似StringBuilder 阅读全文
posted @ 2022-07-22 15:24 baimingze 阅读(43) 评论(0) 推荐(0) 编辑
摘要:流式思想概述 拼接流式模型:建立一个生产线 按照生产线 来生产商品 当需要对多个元素进行操作(特别是多步操作)的时候 考虑到性能及便利性 我们应该首先拼好一个“模型”步骤方案 然后再按照方案 然后再按照方案去执行它 这张图中展示了过滤、映射、跳过、计算等多步操作 这是一种集合元素的处理方案 而方案就 阅读全文
posted @ 2022-07-22 14:30 baimingze 阅读(82) 评论(0) 推荐(0) 编辑
摘要:Stream流 说的Stream便容易想到I/O Stream 而实际上 谁规定“流”就一定是Io流呢?在java8中 得益于Lambda所带来的函数式编程 引入了一个全新的Stream概念 用于解决已有集合类库既有的弊端 传统集合的多步变量代码 几乎所有的集合 (如Collection接口或Map 阅读全文
posted @ 2022-07-22 11:38 baimingze 阅读(198) 评论(0) 推荐(0) 编辑
摘要:常见函数式接口 JDK提供了大量常用的函数式接口以丰富Lambda的经典使用常见 它们注意在java.util.function包中被提供 Function接口 Function<T,R>接口用于根据一个类型的数据得到另一个类型的数据 前者称为前置条件,后置条件 抽象方法:apply Functio 阅读全文
posted @ 2022-07-22 10:41 baimingze 阅读(90) 评论(0) 推荐(0) 编辑
摘要:常见函数式接口 JDK提供了大量常用的函数式接口以丰富Lambda的经典使用常见 它们注意在java.util.function包中被提供 Predicate接口 有时候我们需要对某种类型的数据进行判断 从而得到一个boolean值结果 这时可以使用Predicate<T>接口 抽象方法:test 阅读全文
posted @ 2022-07-22 09:38 baimingze 阅读(133) 评论(0) 推荐(0) 编辑
摘要:常见函数式接口 JDK提供了大量常用的函数式接口以丰富Lambda的经典使用常见 它们注意在java.util.function包中被提供 Consumer接口 Consumer<T>接口则正好与Supplier接口相反 它不是生成一个数据 而是消费一个数据 其数据类型由泛型决定 抽象方法:acce 阅读全文
posted @ 2022-07-21 17:39 baimingze 阅读(162) 评论(0) 推荐(0) 编辑
摘要:常见函数式接口 JDK提供了大量常用的函数式接口以丰富Lambda的经典使用常见 它们注意在java.util.function包中被提供 Supplier接口 Supplier<T>接口仅包含一个无参的方法:T get() 用来获取一个泛型参数指定类型的UI对象数据 由于这是一个函数式接口 这也意 阅读全文
posted @ 2022-07-21 16:57 baimingze 阅读(280) 评论(0) 推荐(0) 编辑
摘要:使用Lambda作为参数和返回值 如果抛开实现原理不说 java中的Lambda表达式可以被当作式匿名内部类的替代品 如果方法的参数是一个函数式接口 那么就可以使用lambda表达式进行替代 使用lambda表达式作为方法参数 其实就是使用函数式接口作为方法参数 例如java.lang.Runnab 阅读全文
posted @ 2022-07-21 16:30 baimingze 阅读(256) 评论(0) 推荐(1) 编辑
摘要:函数式编程 在兼顾面向对象特性的基础上 java语言通过Lambda表达式与方法引用等 为开发者打开了函数式编程的大门 Lambda的延迟执行 有些场景的代码执行后 结果不一定会被使用 从而造成性能浪费 而Lambda表达式是延迟执行的 这正好可以解决方法 提升性能 性能浪费的日志案例 注:日历可以 阅读全文
posted @ 2022-07-21 15:06 baimingze 阅读(133) 评论(0) 推荐(0) 编辑
摘要:函数式接口概念 函数式接口在java中是指:有且仅有一个抽象方法的接口 函数式接口 即适用于函数式编程场景的接口 而java中的函数式编程体现实Lambda 所以函数式接口就是说可以适用于Lambda使用的接口 只有确保接口中有且仅有一个抽象方法 java中的Lambda才能顺利的进行推导 备注:“ 阅读全文
posted @ 2022-07-21 14:24 baimingze 阅读(556) 评论(0) 推荐(0) 编辑
摘要:文件上传的原理 1.【客户端】输入流,从硬盘读取文件数据到程序中 2.【客户端】输出流,写出文件数据到服务端 3.【服务端】输入流,读取文件数据到服务端 4.【服务端】输出流 写出文件数据到服务器硬盘中 图解: 文件上传的客户端 读取本地文件 上传到服务器 读取服务器回写的数据 实现步骤: 1.创建 阅读全文
posted @ 2022-07-21 10:05 baimingze 阅读(166) 评论(0) 推荐(0) 编辑
摘要:Socket类 Socket类:该类实现客户端套接字 套接字指的是两台设备之间通信的端点 他是隶属于java.net包下 套接字:包含了IP地址和端口号的网络单位 构造方法: public Socket(String host,int port):创建套接字对象并将其连接到指定主机上的指定端口号 如 阅读全文
posted @ 2022-07-20 18:42 baimingze 阅读(38) 评论(0) 推荐(0) 编辑
摘要:TCP通信程序概述 TCP通信能实现两台计算机之间的数据交互 通信的两端 要严格区分客户端(Client)与服务端(Server) 两端通信时步骤 1.服务端程序 需要事先启动 等待客户端的链接 2.客户端主动链接服务端 链接成功才能通信 服务端不可以主动链接客户端 在java中 提供了两个类用于事 阅读全文
posted @ 2022-07-20 17:13 baimingze 阅读(30) 评论(0) 推荐(0) 编辑
摘要:网络编程三要素 协议 协议:计算机网络通信编写遵守的规则 IP地址 ID地址:指互联网协议地址(Internet Protocol Address),俗称IP IP地址用来给一个网络中的计算机设备做唯一的编号 假如我们把 个人电脑 比作 一台电话的话 那么Ip地址就相当于电话号码 IP地址分类 IP 阅读全文
posted @ 2022-07-20 16:03 baimingze 阅读(39) 评论(0) 推荐(0) 编辑
摘要:软件结构 c/s结构:全称为Client/Server结构 是指客户端和服务端结构 常见程序由QQ、迅雷等软件 B/S结构:全称为Browser/Server结构 是指浏览器和服务器结构 常见浏览器有谷歌、火狐等 网络通信协议 网络通信协议:通过计算机网络可以使多台计算机实现连接 位于同一个网络中的 阅读全文
posted @ 2022-07-20 15:05 baimingze 阅读(62) 评论(0) 推荐(0) 编辑
摘要:打印流概述 平时我们在控制打印输出 是调用print方法和println完成的 这两个方法都来自于java.io.PrintStream类 该类能方便我们打印各种数据类型的值 是一种便捷的输出方式 PrintStream类 PrintStream:为其他输出流添加了功能 是它们能够方便地打印各种数据 阅读全文
posted @ 2022-07-20 14:31 baimingze 阅读(74) 评论(0) 推荐(0) 编辑
摘要:transient关键字_瞬态关键字 ObjectOutputStream类 ObjectOutputStream类 将java对象的原始数据类型写出文件 实现对象的持久存储 构造方法 public ObjectOutputStream(OutputStream out):创建一个指定OutputS 阅读全文
posted @ 2022-07-20 14:00 baimingze 阅读(103) 评论(0) 推荐(0) 编辑
摘要:序列化和反序列化概述 java提供了一种对象序列化的机制 用一个字节序列可以表示一个对象 该字节序列包含该对象的数据、对象的类型和对象中存储的属性等信息 字节序列写出到文件之后 相当于文件中持久保存一个对象的信息 反之 该字节序列还可以从文件中读取回来 重构对象 对它进行反序列化 对象的数据、对象类 阅读全文
posted @ 2022-07-20 13:07 baimingze 阅读(71) 评论(0) 推荐(0) 编辑
摘要:转换流的原理 OutputStreamWriter类 OutputStreamWriter:是字符流通向字节流的桥梁 可以使用指定的charset将要写入流中的字符编码成字节(编码:将能看懂的编程看不懂的) 父类的共性成员方法: void write(int c)写入单个字符 void write( 阅读全文
posted @ 2022-07-19 17:25 baimingze 阅读(80) 评论(0) 推荐(0) 编辑
摘要:字符编码 计算机存储的信息都是用二进制数表示的 而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结果 按照某种规则 将字符存储到计算机中 称为编码 反之 将存储在计算机中的二进制数按照某种规则解析显示处理 称为解码 比如说 按照A规则存储 同样按照A规则解析 那么就能显示正确 阅读全文
posted @ 2022-07-19 14:10 baimingze 阅读(116) 评论(0) 推荐(0) 编辑
摘要:字符缓冲流 构造方法 public BufferedReader(Reader in):创建一个新的缓冲输入流 public BufferedWriter(Writer out):创建一个新的缓冲输入流 特有方法 BufferedReader:public String readLine():读一行 阅读全文
posted @ 2022-07-19 11:44 baimingze 阅读(27) 评论(0) 推荐(0) 编辑
摘要:我们要见识一下强大的流 比如能够高效读写的缓存流 能够转换编码 能够持久化存储对象的序列化流等等 这些功能强大的流 都是在基本的流对象基础之上创建而来的 就像穿上铠甲的武士一样 相当于是对基本流对象的一种增强 缓存流概述 缓存流也称高效流 是对4个基本的Filexx流的增强 所以也是4个流 按照数据 阅读全文
posted @ 2022-07-19 11:09 baimingze 阅读(131) 评论(0) 推荐(0) 编辑
摘要:属性集概述 Properties继承于Hashtable 来表示一个持久的属性集 它使用的键值结构存储数据 每个键及其对应值都是一个字符串 该类也被许多java类使用 比如获取系统属性 System.getProperties方法返回值就是一个Properties对象 Properties集合是一个 阅读全文
posted @ 2022-07-19 09:38 baimingze 阅读(180) 评论(0) 推荐(0) 编辑
摘要:在JDK1.7之前使用try catch finally处理流中的异常 格式: try{ 可能会产生异常的代码 }catch(异常类变量 变量名){ 异常的处理逻辑 }finally{ 一定会指定的代码 资源释放 } 代码: public static void main(String[] args 阅读全文
posted @ 2022-07-18 17:20 baimingze 阅读(48) 评论(0) 推荐(0) 编辑
摘要:字符输出流写数据的其他方法 1.写出字符数组:write(char[] cbuf)每次可以写出字符数组中的数据 代码: public static void main(String[] args) throws IOException { FileWriter fw = new FileWriter 阅读全文
posted @ 2022-07-18 16:23 baimingze 阅读(100) 评论(0) 推荐(0) 编辑
摘要:字符输出流 Writer抽象类是表示用于写出字符流的所有类的超类 将指定的字符信息写出目的地 它是隶属于java.io包下 基本共性功能方法 void write(int c)写入单个字符 void write(char[] cbuf)写入字符数组 abstract void write(char[ 阅读全文
posted @ 2022-07-18 15:51 baimingze 阅读(49) 评论(0) 推荐(0) 编辑
摘要:字符流 当使用字节流读取文本文件时 会出现一些小问题 就是当我们遇到中文字符时 可能不会显示完成的字符 那时以为一个中文字符可能占用多个字节存储 所以java提供一些字符流类 以字符为单位读写数据 专门用于处理文本文件 字节输入流(Reader) Reader抽象类是表示用于读取字符流的所有类的超类 阅读全文
posted @ 2022-07-18 14:48 baimingze 阅读(448) 评论(0) 推荐(0) 编辑
摘要:文件复制 复制文件原理图 文件复制练习:一读一写 明确: 数据源 数据的目的地 文件复制的步骤: 1.创建一个字节输入流对象 构造方法中绑定要读取的数据源 2.创建一个字节输出流对象 构造方法中绑定要写入的目的地 3.使用字节输入流对象中的方法read读取文件 4.使用字节输出流中的方法write 阅读全文
posted @ 2022-07-18 14:09 baimingze 阅读(65) 评论(0) 推荐(0) 编辑
摘要:字节输入流一次读取多个字节 字节输入流一次读取多个字节的方法: int read(byte[] b)从输入流中读取一定数量的字节 并将其存储在缓冲区数字b中 明确两件事情: 1.方法的参数byte[]的作用 起到缓冲作用 存储每次读取到的多个字节 数组的长度一把定义为1024(1kb)或者1024的 阅读全文
posted @ 2022-07-18 11:57 baimingze 阅读(362) 评论(0) 推荐(0) 编辑
摘要:字节输出流 InputStream抽象类是表示字节输出流的所有类的超类 可以读取字节信息到内存中 它定义了自己输入流的基本共性功能方法 InputStream是隶属于java.io包下 public void close():关闭此输入流并释放资源与此流相关联的任何系统资源 public abstr 阅读全文
posted @ 2022-07-18 11:16 baimingze 阅读(92) 评论(0) 推荐(0) 编辑
摘要:数据追加续写 经过以上的演示 每次程序运行 创建输出流对象 都会清空目标文件中的数据 如果保留目标文件中数据 还能继续添加新的数据 构造方法 public FileOutputStream(File file,boolean append):创建文件输出流以写入由指定的File对象表示文件 publ 阅读全文
posted @ 2022-07-18 10:23 baimingze 阅读(49) 评论(0) 推荐(0) 编辑
摘要:字节输出流写多个字节的方法 public void write(byte[] b):将b.length字节从指定的字节数组写入此输出流 一次写入多个字节: 如果写的第一个字节是正数(0-127)那么显示的时候回查询ASCII表 如果写的第一个字节是负数,那第一个字节会和第二个字节 两个字节组成一个中 阅读全文
posted @ 2022-07-18 10:05 baimingze 阅读(58) 评论(0) 推荐(0) 编辑
摘要:OutputStream抽象类是表示字节输出流的所有类的超类 将指定的字节信息写出到目的地 它定义了字节输出流的基本共性功能方法 OutputStream是隶属于java.io包下 常用方法 public void close():关闭此输出流并释放与此流相关的任何系统资源 public void 阅读全文
posted @ 2022-07-18 09:24 baimingze 阅读(32) 评论(0) 推荐(0) 编辑
摘要:io概述 生活中 肯定经历过这样的场景 当你编辑一个文本文件 忘记了ctrl+s 可能文件就白白编辑了 当你电脑上插入一个U盘 可以把一个视频 拷贝到你的电脑硬盘里 我们把这种数据的传递 可以看做是一种数据的流动 按照流动的方向 以内存为基准 封为输入input和输出output,即流向内存的输入流 阅读全文
posted @ 2022-07-14 11:10 baimingze 阅读(52) 评论(0) 推荐(0) 编辑
摘要:文件过滤器优化 FileFilter是一个接口 是File的过滤器 该接口可以传递给File类的listFiles(FileFilter)作为参数 FileFilter隶属于java.io包下 接口中只有一个方法: boolean accept(File pathname):测试pathname是否 阅读全文
posted @ 2022-07-14 10:47 baimingze 阅读(36) 评论(0) 推荐(0) 编辑
摘要:练习递归求阶乘 阶乘:所有小于及等于该数的正整数的积 n的阶乘:n!=n*(n-1) *..... *3 * 2 * 1 分析:这与类和类相似 只不过换成了乘法运算 学员可以自己练习 需要注意阶乘值符合int类型的范围 推理得出:n!=n*(n-1)! 代码: public static void 阅读全文
posted @ 2022-07-14 09:05 baimingze 阅读(17) 评论(0) 推荐(0) 编辑
摘要:使用递归计算1-n直接的和 分析:num的类和=num+(num-1)的类和 所以可以把类和的操作定义成一个方法 递归调用 代码: public static void main(String[] args) { int n=3; System.out.println(method(n));}/*使 阅读全文
posted @ 2022-07-13 17:25 baimingze 阅读(101) 评论(0) 推荐(0) 编辑
摘要:递归概述 递归:指在当前方法内调用自己的这种现象 递归的分类: 递归分为两种,直接递归和间接递归 直接递归称为方法自身调用自己 间接递归可以A方法调用B方法 B方法调用C方法调用A方法 注意事项 递归一定要有条件限定 保证递归能够停止下来 否则会发生栈内存溢出 在递归中虽然由限定条件 但是递归次数不 阅读全文
posted @ 2022-07-13 15:41 baimingze 阅读(33) 评论(0) 推荐(0) 编辑
摘要:File创建删除功能的方法 public boolean createNewFile():当且仅当具有该名称的文件尚不存在 创建一个新的空文件 代码: public static void main(String[] args) throws Exception { File file1 = new 阅读全文
posted @ 2022-07-13 14:53 baimingze 阅读(41) 评论(0) 推荐(0) 编辑
摘要:File常见方法 public String getAbsolutePath():返回次File的绝对路径名称字符串 public String getPath():将此File转换为路径名字符串 public String getName():返回由此File表示的文件或目录的名称 public 阅读全文
posted @ 2022-07-13 14:06 baimingze 阅读(106) 评论(0) 推荐(0) 编辑
摘要:file类的路径介绍 路径分为两个:绝对路径和相对路径 绝对路径 是一个完整的路径 是以盘符(“c:”,"D:")开始的的路径 例如:E:\\file D:\Html课件内容\HTML基础\HTML代码 这些都是绝对路径 相对路径 是一个简化的路径 相对指的是相对于当前项目的根目录 如果使用当前项目 阅读全文
posted @ 2022-07-13 11:01 baimingze 阅读(185) 评论(0) 推荐(0) 编辑
摘要:File类的概述 File类是文件和目录路径名的抽象表示 主要用于文件和目录的创建 查找和删除等操作 File类是java.io包下 java把电脑中的文件和文件夹(目录)封装为了一个File类 我们可以使用File类对文件和文件夹进行操作 我们可以使用File类的方法: 创建文件/文件夹 删除文件 阅读全文
posted @ 2022-07-13 10:29 baimingze 阅读(63) 评论(0) 推荐(0) 编辑
摘要:使用Lambda标准格式(有参有返回) 题目:给定一个计算器Calculator接口 内包含抽象方法calc可以将两个int数字相加得到和值 代码 接口 public interface Calculator { public abstract int calc(int a,int b);} 测试类 阅读全文
posted @ 2022-07-13 10:11 baimingze 阅读(31) 评论(0) 推荐(0) 编辑
摘要:使用Lambda标准格式(无参无返回值) 题目:给定一个厨子Cook接口 内含唯一的抽象方法makFoodd 且无参数 无放回在 使用Lambda的标准格式盗用invokeCooK方法 打印输出“吃饭啦!”字样: 代码 接口 public interface Cook { public abstra 阅读全文
posted @ 2022-07-13 09:48 baimingze 阅读(32) 评论(0) 推荐(0) 编辑
摘要:编程思想转换 我们希望创建一个匿名内部类对象 我们只是为了做这件事情而不得不创建一个对象 我们真正希望做的事情:将run方法体内的代码传递给Thread类知晓 传递一段代码--这才是我们真正的目的 而创建对象只是受限于面向对象语句而不得不采取的一种手段方式 如果我们将关注点从“怎么做”回归到“做什么 阅读全文
posted @ 2022-07-13 09:30 baimingze 阅读(19) 评论(0) 推荐(0) 编辑
摘要:函数式编程思想概述 在数学中 函数就是有输入量 输出量的一套计算方案 也就是“拿什么东西做什么事情” 相对而言 面向对象过分强调 必须通过对象的形式来做事情 而函数思想则尽量忽略面向对象的复杂语句--强调做什么 而不是以什么形式做 面向对象的思想: 做一件事情 找一个解决这个事情的对象 调用对象的方 阅读全文
posted @ 2022-07-13 09:03 baimingze 阅读(19) 评论(0) 推荐(0) 编辑
摘要:线程池概念和原理 我们使用线程的时候去创建一个线程,这样实现起来非常简便 但是出现了一个问题:如果并发的线程数量很多 并且每个线程都是执行一个时间很多的任务就结束了 这样频繁创建线程就会大大降低洗的效率 因为频繁创建线程和销毁线程需要时间 而线程池就可以解决这个问题 线程池:其实就是一个容纳多个线程 阅读全文
posted @ 2022-07-12 15:05 baimingze 阅读(75) 评论(0) 推荐(0) 编辑
摘要:等待唤醒案例 消费者和生产者 需求 包子铺线程生产包子 吃货线程消费包子 当包子没有时 吃货线程等待 包子铺线程生产包子 并通知吃货线程 因为已经由包子了 那么包子铺进入等待状态 接下来 吃货线程能否进一步执行则取决于锁的获取情况 如果吃货获取到锁 那么就执行吃包子动作 包子吃完 并通知包子铺 吃货 阅读全文
posted @ 2022-07-12 14:26 baimingze 阅读(34) 评论(0) 推荐(0) 编辑
摘要:线程通讯 概念:多个线程在处理同一个资源 但是处理的动作 (线程的任务)却不相同 比如:线程A用来生产包装的 线程B用来吃包子的 包子可以理解为同一资源 线程A于线程B处理的动作 一个是生产 一个是消费 那么线程A与线程B之间就存在线程通信问题 多个线程并发执行时 在默认情况下CPU是随机切换线程的 阅读全文
posted @ 2022-07-12 11:57 baimingze 阅读(73) 评论(0) 推荐(0) 编辑
摘要:等待唤醒 Wating状态在API中介绍为:一个正在无限期等待另一个线程执行一个特别的(唤醒)动作的线程处于这一状态 做一个案例来演示 案例分析 创建一个顾客线程(消费者):告知老板要的包子的种类和数量 调用wait方法 放弃cpu的执行 进入到WAITING状态(无限等待) 创建一个老板线程(生产 阅读全文
posted @ 2022-07-12 11:24 baimingze 阅读(21) 评论(0) 推荐(0) 编辑
摘要:lock锁 lock机制提供了比synchronized代码块和synchronized方法更广泛的锁定操作 同步代码块/同步方法具有的功能lock都有 除此之外更强大 更体面面向对象 lock隶属于java.util.concurrent.locks包下 lock锁也称为同步锁 加锁与释放锁方法化 阅读全文
posted @ 2022-07-12 10:54 baimingze 阅读(18) 评论(0) 推荐(0) 编辑
摘要:同步方法 使用synchronized修饰的方法 就叫做同步方法 保证A线程执行该方法的时候 其他线程只能在方法外等着 格式: public synchronized void method(){ 可能会产生线程安全问题的代码 } 使用步骤: 1.把访问了共享数据的代码抽取出来 放到一个方法中 2. 阅读全文
posted @ 2022-07-11 17:42 baimingze 阅读(16) 评论(0) 推荐(0) 编辑
摘要:线程安全问题产生的原理 出现了线程安全问题 卖票出现了重复的票 图解 线程同步 当我们使用多个线程访问同一个资源的时候 且多个线程对资源有写的操作 就容易出现线程安全问题 要解决上诉多线程并发访问一个资源的安全性问题 也就是解决重复票 java中提供了同步机制 (synchronized)来解决 有 阅读全文
posted @ 2022-07-11 16:38 baimingze 阅读(30) 评论(0) 推荐(0) 编辑
摘要:线程安全 如果有多个线程在同时运行 而这些线程可能会同时运行这段代码 程序每次运行结果和单线程运行的结果是一样的 而且其他的变量的值也和预期的是一样的 就像线程安全的 演示线程的安全问题: 电影院要买票 我们模拟电影院的卖票过程 本次电影的座位共100个(背场电影只能卖100张票) 我们来模拟电影院 阅读全文
posted @ 2022-07-11 15:31 baimingze 阅读(18) 评论(0) 推荐(0) 编辑
摘要:使用线程的匿名内部类方式 可以方便的实现每个线程执行不同的线程任务操作 匿名:没有名字 内部类:写在其他类内部的类 匿名内部类作用:简化代码 把子类继承父类 重写父类的方法 创建子类对象合一步完成 把实现类实现类接口 重写接口中的方法 创建实现类对象合成一步完成 匿名内部类的最终产物:子类/实现类对 阅读全文
posted @ 2022-07-11 13:53 baimingze 阅读(33) 评论(0) 推荐(0) 编辑
摘要:创建线程的第二种方式 采用Runnable也是非常常见的一种 我们只需要重写run方法即可 它是隶属于java.lang包下 Runnable类的构造方法 Thread(Runnable target) 分配新的Thread对象 Thread(Runnable target,String name) 阅读全文
posted @ 2022-07-11 11:55 baimingze 阅读(25) 评论(0) 推荐(0) 编辑
摘要:多线程图解 Thread类的使用 我们在操作Thread类 API中该类中定义了有关线程的一些方法 具体如下 构造方法: public Thread():分配一个新的线程对象 public Thread(String name):分配一个指定名字的新的线程对象 public Thread(Runna 阅读全文
posted @ 2022-07-10 14:18 baimingze 阅读(117) 评论(0) 推荐(0) 编辑
摘要:java使用Thread类代表线程 所有线程对象都必须时Thread类或者其子类的实例 每个线程的作用是完成一定的任务 实际上就是执行一段程序流即一端顺序执行的代码 java使用线程执行来代表这段程序流 Thread是隶属于java.lang包下 创建并启动多线程的步骤: 1.定义Thread类的子 阅读全文
posted @ 2022-07-10 11:56 baimingze 阅读(63) 评论(0) 推荐(0) 编辑
摘要:线程的概念 cpu:中央处理器 对数据进行计算 指挥电脑中的软件和硬件干活 cpu的分类 AMD Inter Inter Core(核心) i7 8866 4核心8线程 8线程:同时执行8个任务 图解: 线程调度 分时调度 所有线程轮流使用CPU的使用权 平均分配每个线程占用CPU的时间 抢占式调度 阅读全文
posted @ 2022-07-10 09:48 baimingze 阅读(50) 评论(0) 推荐(0) 编辑
摘要:并发和并行 并发:指两个或者多个事件在同一个时间段内发生 并行:值两个或者多个事件在同一时刻发生(同时发生) 更详细的图解: 线程和进程 进程基本介绍 是指一个内存中运行的应用程序 每个进程都有一个都有一个独立的内存空间,一个应用程序可以同时运行多个进程 进程也是程序的一次执行过程 是系统运行程序的 阅读全文
posted @ 2022-07-09 17:04 baimingze 阅读(35) 评论(0) 推荐(0) 编辑
摘要:自定义异常 java中不同的异常类,分别表示着某一种具体的异常情况 那么在开发中总是有些异常情况是SUN没有定义好的 此时我们根据自己业务的异常情况来定义异常类 例如年龄负数,考试成绩负数的问题等 在JDK内部定义好的 但是实际开发中也会出现很多异常 这些异常很有可能在JDK中 没有定义过 我们可以 阅读全文
posted @ 2022-07-09 16:17 baimingze 阅读(69) 评论(0) 推荐(0) 编辑
摘要:多个异常使用捕获又该如果处理 1.多个异常分别处理 2.多个异常一次捕获 多次处理 3.多个异常一次捕获一次处理 格式: try{ 编写可能会出现异常的代码 }catch(异常类型A e){当try中出现A类型异常 就用该catch来捕获 处理异常的代码}catch(异常类型B e){当try中出现 阅读全文
posted @ 2022-07-08 18:42 baimingze 阅读(46) 评论(0) 推荐(0) 编辑
摘要:声明异常throws 声明异常:将问题标识处理 报告给调用者 如果方法内通过throw抛出了编译是异常 通过throws进行声明 让调用者去处理 关键字throws运行于方法之上 用于表示当前不出来异常 而是提醒该方法的调用者来处理异常 声明异常格式: 修饰符 返回值类型 方法名(参数) throw 阅读全文
posted @ 2022-07-08 17:50 baimingze 阅读(315) 评论(0) 推荐(0) 编辑
摘要:抛出异常throw 在编写程序时 我们必须要考虑程序出现的问题的情况 比如 在定义方法时 方法需要接受 在java中 提供了一个thow关键字 它用来抛出一个指定的异常对象 1.创建一个异常对象 封装一些提示信息(信息可以自己编写) 2.需要将这个异常对象告知调用者 throw关键字: 作用: 可以 阅读全文
posted @ 2022-07-08 17:15 baimingze 阅读(747) 评论(0) 推荐(0) 编辑
摘要:我们平常说的异常是指Exception 因为这类异常一旦出现 我们就是对代码进行更正 修复程序 异常(Exception)的分类:根据在编译时期还是运行时期去检查异常 编译时期异常:checked异常 在编译时期 就会检查 如果没有处理异常 则编译失败(如日期格式化异常) 运行时期异常:runtim 阅读全文
posted @ 2022-07-08 16:19 baimingze 阅读(244) 评论(0) 推荐(0) 编辑
摘要:异常的概念 异常:指不正常的意思 在生活中比如发烧称为异常 就是和正常的体温不一样 体温过高受影响 在程序中的意思是:指的是程序在执行过程中 出现的非正常的情况 最终会导致JVM以非正常停止 在java等面向对象的编程语言中 异常本身是一个类 产生异常就是创建异常对象并抛出了一个异常对象 java处 阅读全文
posted @ 2022-07-08 15:05 baimingze 阅读(135) 评论(0) 推荐(0) 编辑
摘要:案例分析: 牌从大到小的顺序进行排列 图解: 代码: public static void main(String[] args) { //创建一个Map集合存储牌的索引和组装好的牌 HashMap<Integer, String> map = new HashMap<>(); //创建一个集合用于 阅读全文
posted @ 2022-07-08 14:45 baimingze 阅读(25) 评论(0) 推荐(0) 编辑
摘要:Debug调式程序 可以让代码逐行执行 查看代码执行的过程 调试程序中出现的bug 使用方式: 在行号的右边 鼠标左键单击 添加断点(每个方法的第一行 哪里有bug添加到哪里) 右键 选择Debug执行程序 程序就会停留在添加的第一个断点处 如: 这就是断点也是声明程序从这一步开始走 右键选择Deb 阅读全文
posted @ 2022-07-08 13:25 baimingze 阅读(18) 评论(0) 推荐(0) 编辑
摘要:案例分析图: 代码: public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("输入一个字符串"); String next = sc.nextLine(); c 阅读全文
posted @ 2022-07-08 10:45 baimingze 阅读(18) 评论(0) 推荐(0) 编辑
摘要:HashMap存储自定义类型键值 Map集合保证key是唯一的:作为key的元素 必须重写hashCode方法和equals方法 以保证key唯一 代码: 自定义的类: package demo18.Student;public class perpon { private String name; 阅读全文
posted @ 2022-07-08 09:50 baimingze 阅读(53) 评论(0) 推荐(0) 编辑
摘要:Map中存储的是两种对象 一种称为key键 一种称为value值 它们在Map中是一一对应关系 这一对对象又称做Map中的一个Entry(项) Entry将键值对的对应关系封装成了对象 即键值对对象 这样我们遍历Map集合时 就可以从每一个键值对(Entry)对象中获取对应的键与对应的值 图解: 既 阅读全文
posted @ 2022-07-08 09:26 baimingze 阅读(68) 评论(0) 推荐(0) 编辑
摘要:Map接口中定义了很多方法 常见的如下: 1.public v put(k key,v Value):把指定的键与指定的值添加到Map集合中 2.public v remove(Object key):把指定的键 所对应的键值对元素在Map集合中删除 返回被删除的元素的值 3.public v ge 阅读全文
posted @ 2022-07-06 17:41 baimingze 阅读(83) 评论(0) 推荐(0) 编辑
摘要:Map集合概述 将键映射到值对象 一个映射不能包含重复的键 每个键最多只能映射到一个值 现实生活中 我们常会看到这样的一种集合:IP地址与主机名 身份证号与个人 系统用户名与系统用户对象等 这种—对应的关系就 叫做映射 java通过了专门的集合类用来存放这种对象关系的对象 就是Map接口 它是隶属于 阅读全文
posted @ 2022-07-06 16:55 baimingze 阅读(83) 评论(0) 推荐(0) 编辑
摘要:Collections工具类常用功能 Collections是集合工具类 用来集合进行操作 常用方法如下 1.public static <T> boolean addAll(Collection c,T elements):往集合中添加一些元素 2.public static void shuff 阅读全文
posted @ 2022-07-06 15:54 baimingze 阅读(50) 评论(0) 推荐(0) 编辑
摘要:代码: public static void main(String[] args) { HashSet<String> set = new HashSet<>(); String s1 =new String("abc"); String s2 =new String("abc"); set.ad 阅读全文
posted @ 2022-07-06 15:22 baimingze 阅读(64) 评论(0) 推荐(0) 编辑
摘要:set接口 set接口和List接口一样 同样继承自Collection接口 它与Collection接口中的方法基本一致 并没有对Collection接口进行功能上的补充只是比Collection接口更加严格了 与List接口不同的是 set接口中元素无序 并且都会以某种规则存入的元素不出现重复 阅读全文
posted @ 2022-07-06 13:56 baimingze 阅读(51) 评论(0) 推荐(0) 编辑
摘要:LinkedList集合 LinkedList集合数据存储的结构是链表结构,方便元素添加 删除集合 LinkedList集合特点: 1.底层是一个链表结构:查询慢,增删快 2.里边包含了大量操作首尾元素的方法 注意:使用LinkedList集合特有的方法,不能使用多态 LinkedList常用方法 阅读全文
posted @ 2022-07-06 11:50 baimingze 阅读(37) 评论(0) 推荐(0) 编辑
摘要:List集合介绍 List接口继承自Collection接口 是单列集合的一个重要分支 习惯将实现了list接口的对象称为List集合 在List集合中允许出现重复的元素 所有元素是以一种线性存储的 在程序中可以通过索引来访问集合中的指定元素 List接口特点: 1.有序的集合 存储元素和取出元素的 阅读全文
posted @ 2022-07-06 11:13 baimingze 阅读(127) 评论(0) 推荐(0) 编辑
摘要:红黑树 二叉树:binary tree,是每个节点不超过2的有序树(tree) 简单的理解 就是一种类似于我们生活中树的结构 只不过每个结点上都最多只能有两子结点 二叉树是每个节点最多有两个子树的树结构 顶上的叫根结点 两边被称作左子树和右子树 图: 阅读全文
posted @ 2022-07-06 10:42 baimingze 阅读(15) 评论(0) 推荐(0) 编辑
摘要:数组 数组:Array,是有序的元素序列,数组是在内存中开辟一段连续的空间 并在此空间存储元素 就像是一排出租屋,从001到100每个房间都有固定编号 通过编号就可以快速找到租房子的人 简单的数 采用该结构的集合 对元素的存储有如下的特点: 查找元素快:通过索引 可以快速访问指定位置的元素 数组的特 阅读全文
posted @ 2022-07-06 10:18 baimingze 阅读(22) 评论(0) 推荐(0) 编辑
摘要:现实世界的存储 我们使用的工具和建模 每种数据结构有自己的优点和缺点 想想如果Google的数据用的是数组的存储 我们还能方便地查询到所需要的数据吗?而算法 在这么多的数据中如何做到最快的插入,查找,删除 也是在追求更快 数据存储的常用结构有:堆栈、队列、数组、链表和红黑树 栈 栈stack:又称堆 阅读全文
posted @ 2022-07-06 09:20 baimingze 阅读(17) 评论(0) 推荐(0) 编辑
摘要:案例介绍 按照斗地主的规则 完成洗牌发牌的动作 具体规则: 使用54张牌打乱顺序 三个玩家参与游戏,三个人交替摸牌,每人17张牌,最后三张留作底牌 案例分析 准备牌 牌可以设置为一个ArrayList<String>,每个字符串为一张牌 张牌由花色数字两部分组成 我们可以使用花色集合与数字集合嵌套迭 阅读全文
posted @ 2022-07-05 19:19 baimingze 阅读(63) 评论(0) 推荐(0) 编辑
摘要:含有泛型的方法 定义格式: 修饰符 <泛型> 返回值类型 方法名(参数){} 含有泛型的方法 在调用方法的时候确定泛型的数据类型传递什么类型的参数 泛型就是什么类型 代码: 方法类: public class DemoMethod { public <m>void method(m str){ Sy 阅读全文
posted @ 2022-07-05 17:05 baimingze 阅读(19) 评论(0) 推荐(0) 编辑
摘要:泛型的概述 泛型是一种未知的数据类型 当我们不知道使用什么数据类型的时候 可以使用泛型 泛型也可以看出是一个变量 用来接收数据类型 当我们创建集合是就确定泛型类型 使用泛型的好处 我们都知道集合中是可以存放任意对象的 只要把对象存储集合后 那么这时他们都会被提升成Object类型 当我们在取出每个对 阅读全文
posted @ 2022-07-05 15:18 baimingze 阅读(25) 评论(0) 推荐(0) 编辑
摘要:增强for循环的概述 增强for循环(也称for each循环)是JDK1.5以后出来的一个高级for循环,专门用来遍历数组的集合的 它的内部原理其实是个Iterator迭代器 所以在遍历的过程中 不能对集合中的元素进行增删操作 格式: for(元素的数据遍历 遍历:Collection集合or数组 阅读全文
posted @ 2022-07-05 14:34 baimingze 阅读(99) 评论(0) 推荐(0) 编辑
摘要:Iterator迭代器的概述 Iterator接口也是java集合中的一员 但他与Collection、map接口有所不同 所属与java.util包下 Collection接口与Map接口主要用于存储元素而Iterator主要用于迭代访问(即遍历)Colection中的元素 因此Iterator对 阅读全文
posted @ 2022-07-05 13:58 baimingze 阅读(195) 评论(0) 推荐(0) 编辑
摘要:集合的概述 集合:集合是java中提供一种容器 可以用来存储多个数据 数组的长度是固定的 集合的长度是可变的 数组中存储是同一类型的元素 可以存储基本数据值 集合存储的都是对象 而且对象的类型可以不一致 在开发中一般当对象多的时候 使用集合进行存储 集合框架 集合按照其存储结构可以分为两大类 分别是 阅读全文
posted @ 2022-07-05 11:56 baimingze 阅读(36) 评论(0) 推荐(0) 编辑
摘要:StringBuilder的原理 字符串是常量;它们的值在创建之后不能更改 字符串的底层是一个被final修饰的数组 不能改变 是一个常量 进行字符串的相加 内存中就会有多个字符串 占用空间多 效率低下 如: 而StringBuilder是字符串缓冲区 可以提供字符串的操作效率(看成一个长度可以变化 阅读全文
posted @ 2022-07-05 10:50 baimingze 阅读(79) 评论(0) 推荐(0) 编辑
摘要:System:可以获取与系统相关的信息或系统级操作 属于java.lang包下 常用方法: 1.public static long currenTimeMillis():返回以毫秒为单位的当前时间 代码: /*public static long currenTimeMillis():返回以毫秒为 阅读全文
posted @ 2022-07-05 09:32 baimingze 阅读(25) 评论(0) 推荐(0) 编辑
摘要:1.Date类 构造方法 Date();根据当前系统的时间创建日期对象 Date(long time);根据传入的毫秒值时间创建日期对象 成员方法 long getTime();获取当前日期对象的毫秒值时间 String toLocaleString();根据本地格式转换日期对象 代码: publi 阅读全文
posted @ 2022-07-05 09:16 baimingze 阅读(37) 评论(0) 推荐(0) 编辑
摘要:Calendat类是日历类 它是基于java.util包下 它是一个抽象类 里面提供了很多操作日历字段的方法 无法直接创建对象使用 里面有一个静态方法叫getInstance() 该方法返回了Calendat类的子类对象 static Calendar getInstance()使用默认时区和语言环 阅读全文
posted @ 2022-07-04 19:02 baimingze 阅读(117) 评论(0) 推荐(0) 编辑
摘要:java.text.DateFormat是日期/时间格式化子类的抽象类 我们通过这个类可以帮我们完成日期和文本之间的转换 也就是可以在Date对象与String对象之间进行来回转换 作用:解析文本->日期 成员方法: String format(Date date) 按照指定的模式 把Date日期 阅读全文
posted @ 2022-07-04 16:32 baimingze 阅读(20) 评论(0) 推荐(0) 编辑
摘要:Date表示特定的瞬间 精确到毫秒 毫秒:千分之一 1000毫秒=1秒 特定的瞬间:一个时间点 一刹那时间 比如:2022年 09:55:45:333 瞬间 毫秒值的作用:可以对时间和日期进行计算 比如:2022-01-02到2023-05-07进行计算一共有多少天 注意:中国属于东八区 会把时间增 阅读全文
posted @ 2022-07-04 15:53 baimingze 阅读(753) 评论(0) 推荐(0) 编辑
摘要:类作为成员变量类型 代码: 武器类 public class Weapon { private String code; public Weapon() { } public Weapon(String code) { this.code = code; } public String getCod 阅读全文
posted @ 2022-07-04 14:19 baimingze 阅读(19) 评论(0) 推荐(0) 编辑
摘要:内部类:一个类包含一个类 就是内部类 例如:人的身体和心脏 汽车车身和发动机的关系一样都是包含 分类: 1.成员内部类 2.局部内部类 3.匿名内部类 匿名内部类 定义:如果接口的实现类(或者是父类的子类)只需要使用唯一的一次 那么这种情况下就可以省略掉该类的定义 而改为使用【匿名内部类】 匿名内部 阅读全文
posted @ 2022-07-04 13:40 baimingze 阅读(238) 评论(0) 推荐(0) 编辑
摘要:内部类:一个类包含一个类 就是内部类 例如:人的身体和心脏 汽车车身和发动机的关系一样都是包含 分类: 1.成员内部类 2.局部内部类 3.匿名内部类 局部内部类概述 局部内部类定义:如果一个类是定义在一个方法内部的 那么这是一个局部内部类 局部内部类属性:只有当前所属的方法才能使用 出了这个方法外 阅读全文
posted @ 2022-07-04 11:58 baimingze 阅读(73) 评论(0) 推荐(0) 编辑
摘要:内部类是:一个类包含一个类 就是内部类 例如:人的身体和心脏 汽车车身和发动机的关系一样都是包含 分类: 1.成员内部类 2.局部内部类 3.匿名内部类 成员内部类 成员内部类定义 成员内部类格式: 修饰符 class 外部类名称{ 修饰符 class 内部类名称{ /... } /... } 注意 阅读全文
posted @ 2022-07-04 11:38 baimingze 阅读(58) 评论(0) 推荐(0) 编辑
摘要:笔记本USB接口案例 案例分析: 进行描述笔记本类 实现笔记本使用USB鼠标 USB键盘 1.USB接口 包含打开设备功能 关闭设备功能 2.笔记本类 包含开机功能 关机功能 并具备点击的方法 3.鼠标类 要实现USB接口 并具备点击的方法 4.键盘类 要实现USB接口 具备敲击的方法 分析图 代码 阅读全文
posted @ 2022-07-04 10:42 baimingze 阅读(153) 评论(0) 推荐(0) 编辑
摘要:多态中成员变量的使用特点 访问成员变量的两种方式: 1.直接通过对象名称访问成员变量:看等号左边是谁,优先用谁 没有则向上找 代码 父类: public class Fu { int num=10; } 子类: public class Zi extends Fu { int num=10; } 测 阅读全文
posted @ 2022-07-04 09:20 baimingze 阅读(45) 评论(0) 推荐(0) 编辑
摘要:继承父类并实现多个接口 接口使用事项: 1.接口是没有静态代码块或者构造方法的 2.一个类的直接父类是唯一的 但是一个类可以同时实现多个接口 格式: public class 类名 implements 接口名1,接口名2(){} 代码: 接口1: public interface MyInterf 阅读全文
posted @ 2022-07-03 21:42 baimingze 阅读(50) 评论(0) 推荐(0) 编辑
摘要:红包案例 群主发普通红包 某群有多名成员 群主给成员发普通红包 普通红包的规则: 1.群主的一笔金额 从群主余额里扣除 平均分成n等份 让成员领取 2.成员领取红包后 保存到成员余额中 请根据描述 完成案例中所有类的定义以及制定类之间的继承关系 并完成发红包的操作 分析图 代码 父类: public 阅读全文
posted @ 2022-07-03 20:05 baimingze 阅读(37) 评论(0) 推荐(0) 编辑
摘要:String转换常用方法 public char[] toCharArray():将当前字符拆分成为字符数组作为返回值 代码: public static void main(String[] args) { String s="abcdefg"; char[] chars = s.toCharAr 阅读全文
posted @ 2022-07-01 19:13 baimingze 阅读(617) 评论(0) 推荐(0) 编辑
摘要:字符串获取相关方法 public int length();获取字符串当中含有的字符个数 拿到字符串长度 代码: public static void main(String[] args) { String s="asdfghjklqwertyuiopzxcvbnm"; System.out.pr 阅读全文
posted @ 2022-07-01 17:43 baimingze 阅读(250) 评论(0) 推荐(0) 编辑
摘要:字符串的常量池 通过一段代码了解String的内存空间中的字符串常量池 public static void main(String[] args) { String str1 = "abc"; String str2 = "abc"; char[] charArray = {'a', 'b', ' 阅读全文
posted @ 2022-07-01 16:53 baimingze 阅读(319) 评论(0) 推荐(0) 编辑
摘要:ArrayList集合存储基本数据类型 集合中的泛型只能填写引用数据类型 不能填写基本数据类型 集合里面保存的都是地址值 如果希望向集合ArrayList当中存基本数据类型,必须使用基本数据类型的包装类 基本数据类型 包装类 int Integer long Long byte Byte short 阅读全文
posted @ 2022-07-01 14:50 baimingze 阅读(500) 评论(0) 推荐(0) 编辑
摘要:ArrayList集合的常用方法 public boolean add(E e); 向集合中添加元素 参数的类型和泛型一致 代码: ArrayList<String> list = new ArrayList<>();list.add("张三");list.add("李四");list.add("王 阅读全文
posted @ 2022-07-01 14:16 baimingze 阅读(119) 评论(0) 推荐(0) 编辑
摘要:ArrayList集合概述 数组的长度不可以发生改变 但是集合的长度是可以随意变化的 ArrayList也是java.util包下 ArrayList是大小可变化的数组的实现 存储在内的数据称为元素 此类提供一些方法来操作内部存储的元素 ArrayList中可不断添加元素 其集合大小也自动增长 Ar 阅读全文
posted @ 2022-07-01 13:33 baimingze 阅读(56) 评论(0) 推荐(0) 编辑
摘要:案例:有一个数组 它里面有三个Person对象 代码: 封装类: package demo06.day02;public class Person { private String name; private int age; public Person() { } public Person(St 阅读全文
posted @ 2022-07-01 13:05 baimingze 阅读(33) 评论(0) 推荐(0) 编辑
摘要:Random随机数 Random属于java.util下 它的功能是产生随机数 使用它的三个步骤: 1.导包 import java.util.Random; 2.创建 Random ran = new Random();//小括号里留空 3.使用 生成一个int类型的随机数 for (int i 阅读全文
posted @ 2022-07-01 11:43 baimingze 阅读(233) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示