自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 Java笔记:字符编码、字符集、InputStreamReader类以及OutputStreamWriter类详解

目录1 字符编码和字符集1.1 字符编码1.2 字符集1.2.1 ASCII字符集1.2.2 ISO-8859-1字符集1.2.3 GBxxx字符集1.2.4 Unicode字符集2 编码引出的问题3 InputStreamReader类(字节流到字符流的桥梁)3.1 构造方法3.2 指定编码读取4 OutputStreamWriter类(字符流到字节流的桥梁)4.1 构造方法4.2 指定编码写出4.3 转换流理解图解5 练习:转换文件编码5.1 案例分析5.2 案例实现1 字符编码和字符集1.1 字符

2020-10-31 22:27:38 823

原创 Java缓冲流介绍、实现及应用

缓冲流,也叫高效流,是对4个基本的FileXxx 流的增强,所以也是4个流,按照数据类型分类:字节缓冲流:BufferedInputStream,BufferedOutputStream字符缓冲流:BufferedReader,BufferedWriter缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。

2020-10-31 09:05:08 626

原创 Java笔记:字符流Reader/Writer详解

目录0 为什么使用字符流1 字符输入流Reader1.1 FileReader类1.1.1 创建输入流对象1.1.2 读入字符数据2 字符输出流Writer2.1 FileWriter类2.1.1 创建输出流对象2.1.2 写出字符数据关闭和刷新写出其他数据0 为什么使用字符流当使用字节流读取文本文件时,可能会有一个小问题。就是当遇到中文字符时,可能不会显示完整的字符,那是因为一个中文字符可能占用多个字节存储。所以Java提供了字符流类,以字符为单位读写数据,专门用于处理文本文件。1 字符输入流Re

2020-10-27 21:46:56 2107

原创 Java笔记:字节流InputStream/OutputStream详解

目录1 一切皆为字节2 字节输出流OutputStream2.1 FileOutputStream类2.1.1 创建输出流对象2.1.2 写出字节数据2.1.3 数据追加续写2.1.4 写出换行3 字节输入流【InputStream】2.5 FileInputStream类构造方法读取字节数据4 字节流练习:图片复制复制原理图解案例实现1 一切皆为字节一切文件数据(文本、图片、视频等)在存储时,都是以二进制的形式保存,都是一个个字节;传输时同样如此;因此,字节流可以传输任意类型文件数据;在操作流

2020-10-26 21:38:57 1443

原创 简述Java中的Deque<E>(双端队列)接口

目录1 定义2 特性3 常用方法3 栈操作4 队列操作5 两个主要实现类1 定义Interface Deque<E>:支持两端元素插入和移除的线性集合。2 特性既具有队列FIFO(先进先出)特点又具有栈LIFO(后进先出)特点,既是队列又是栈。3 常用方法public void addFirst(E e):向队头插入元素public void addLast(E e):向队尾插入元素public E removeFirst():检索并移除队头元素public E remove

2020-10-25 21:29:42 341

原创 Java笔记:IO及IO的分类

1 IO概述2 IO分类2.1 根据数据流向2.2 根据数据类型3 IO的流向说明图解4 顶级父类们1 IO概述I: input输入流,读取数据,流向内存O: output输出流,写出数据,流出内存Java中I/O操作主要是指使用java.io包下的内容,进行输入、输出操作。2 IO分类2.1 根据数据流向根据数据的流向分为:输入流和输出流。输入流 :把数据从其他设备上读取到内存中的流。输出流 :把数据从内存 中写出到其他设备上的流。2.2 根据数据类型根据数据的类型分为

2020-10-24 21:01:42 216

原创 插入排序

目录要求代码复杂度分析稳定性分析要求将数值数组按从小到大排序。代码public class Insertion { // 对数组a中的元素进行排序 public static void sort(Comparable[] a) { for(int i=1;i< a.length;i++) { // 当前元素为a[i],依次和i前面的元素比较,找到一个小于等于a[i]的元素 for(int j=i;j>0;j-

2020-10-22 17:26:18 242

原创 希尔排序

目录要求代码复杂度分析稳定性分析要求将数值数组按从小到大排序。代码public class Shell { public static void sort(Comparable[] a) { int N = a.length; // 确定增长量h的最大值 int h = 1; while(h<N/2) { h = h * 2 + 1; } // 当增长量h小于1,

2020-10-22 16:22:32 179 4

原创 快速排序

目录要求代码复杂度分析稳定性分析要求将数值数组按从小到大排序。代码public class Quick { public static void sort(Comparable[] a) { int lo = 0; int hi = a.length - 1; sort(a, lo, hi); } private static void sort(Comparable[] a, int lo, int hi) {

2020-10-22 16:19:03 110

原创 归并排序

要求:将数值数组按从小到大排序。public class Merge { private static Comparable[] assist; public static void sort(Comparable[] a) { assist = new Comparable[a.length]; int lo = 0; int hi = a.length-1; sort(a,lo,hi); } priva

2020-10-22 16:13:32 212

原创 递归算法、递归的注意事项、递归案例(Java实现)

目录1 概述2 简单案例2.1 计算1 ~ n的和2.2 递归求阶乘2.3 递归打印多级目录3 综合案例3.1 文件搜索3.2 过滤器优化文件搜索3.3 Lambda优化文件搜索1 概述递归:方法自身调用自身的现象。递归分类:直接递归:方法直接调用自身。间接递归:方法通过间接的方式调用自身,比如A方法调用B方法,B方法调用C方法,C方法调用A方法。注意事项:递归一定要有条件限定,保证递归能停下来,否则会发生栈内存溢出;虽然设定限定条件,但递归次数依然不能太多,否则也会可能栈内存溢出;

2020-10-22 14:48:11 1783

原创 冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序(Java实现,复杂性分析,稳定性分析)

目录1 冒泡排序2 选择排序3 插入排序4 希尔排序5 归并排序6 快速排序7 排序的稳定性7.1 概念7.2 意义7.3 几种排序算法的稳定性分析7.3.1 冒泡排序7.3.2 选择排序7.3.3 插入排序7.3.4 希尔排序7.3.5 归并排序7.3.6 快速排序1 冒泡排序public class Bubble { // 对数组a元素进行排序 public static void sort(Comparable[] a) { for(int i=a.length-

2020-10-21 19:55:18 374 1

原创 详述Java中的File类:文件和目录的创建、查找和删除

1 概述2 构造方法3 常用方法3.1 获取方法3.2 判断方法3.3 创建、删除方法3.4 遍历方法1 概述java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。2 构造方法public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实

2020-10-20 20:32:24 565

原创 Java笔记:Comparator接口以及Comparator和Comparable两个接口的区别

1 Comparator接口1.1 Comparable的局限1.2 Comparator的引入2 Comparator和Comparable的区别2.1 概述2.2 举例2.2.1 Comparable方式2.2.2 Comparator方式1 Comparator接口1.1 Comparable的局限举例说明:public class CollectionsDemo { public static void main(String[] args) { Ar

2020-10-19 15:22:20 159

原创 Array与Arrays和Collection与Collections的区别

目录1 Array2 Arrays3 Collection4 Collections1 Array数组类,Java最基本的一种存储结构;提供动态创建和访问数组元素的方法;元素类型必须相同;容量固定且无法动态改变;无法判断实际存储多少元素,length只是告诉我们Array的容量。2 Arrays数组操作类、静态类,专门用来操作Array;提供了搜索、排序、复制等静态方法。3 Collection各种集合的父接口;继承接口的主要有List和Set。4 Collection

2020-10-19 13:54:11 374

原创 Java笔记:Collections集合操作类和Arrays数组操作类

1 概述2 常用功能(方法)3 代码演示1 概述java.utils.Collections是集合工具类,用来对集合进行操作。2 常用功能(方法)public static <T> boolean addAll(Collection<T> c, T... elements):往集合中添加一些元素。public static void shuffle(List<?> list) 打乱顺序:打乱集合顺序。public static <T> void sort(List<T> list):将集合中

2020-10-19 11:34:57 243 1

原创 java中常见内存占用:基本类型、引用类型、对象、数组

1 基本数据类型数据类型占用字节数byte1boolean1char2short2int4float4long8double82 引用一个引用(机器地址)占8个字节。例如:Date date = new Date();则date这个变量占8个字节的内存。3 对象创建一个对象,如new Date(),除了Date对象内部存储的数据(年月日等信息)占用内存,该对象本身也有内存开销,为16个字节,用来保存对象的头信息。

2020-10-18 22:03:18 1184

原创 概念理解:数据结构、数据结构的分类、算法

目录1 数据结构2 数据结构的分类2.1 按逻辑结构分类2.1.1 集合结构2.1.2 线性结构2.1.3 树形结构2.1.4 图形结构2.2 按物理结构分类2.2.1 顺序存储结构2.2.2 链式存储结构3 算法3.1 算法案例1(用更少的时间)3.2 算法案例2(用更少的空间)1 数据结构数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科。2 数据结构的分类数据结构可以分别按逻辑结构和物理结构两种角度进行分类。2.1 按逻辑结构分类逻辑结构是从

2020-10-17 15:05:20 486

原创 Java:为什么使用Lambda表达式以及Lambda表达式的定义和使用

目录1 函数式编程思想概述2 冗余的Runnable代码传统写法代码分析3 编程思想转换做什么,而不是怎么做生活举例4 体验Lambda的更优写法5 回顾匿名内部类使用实现类使用匿名内部类匿名内部类的好处与弊端语义分析6 Lambda标准格式7 练习:使用Lambda标准格式(无参无返回)题目解答8 Lambda的参数和返回值传统写法代码分析Lambda写法9 练习:使用Lambda标准格式(有参有返回)题目解答10 Lambda省略格式可推导即可省略省略规则11 练习:使用Lambda省略格式题目解答12

2020-10-17 11:05:01 737

原创 Java线程池的概念及使用

1 线程池思想引入我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?在Java中可以通过线程池来达到这样的效果。下面我们就来详细讲解一下Java的线程池。

2020-10-12 12:12:18 162

原创 Java多线程:线程间通信与等待唤醒机制

目录1 线程间通信2 等待唤醒机制(wait/notify)2.1 概念2.2 使用到的方法3 案例演示:生产者与消费者问题1 线程间通信多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同,于是这些线程之间就存在通信问题,称为线程间通信。比如:线程A用来生成包子的,线程B用来吃包子的,包子可以理解为同一资源,线程A与线程B处理的动作,一个是生产,一个是消费,那么线程A与线程B之间就存在线程通信问题。当多个线程间存在通信问题时,我们希望它们能有规律地执行,因此就需要一些协调手段,其中,等待

2020-10-10 15:53:50 188

原创 Timed Waiting(计时等待)、Blocked(锁阻塞)、Waiting(无限等待)

1 Timed Waiting(计时等待)1.1 状态描述1.2 代码示例1.3 线程状态图2 Blocked(锁阻塞)2.1 状态描述2.2 线程状态图3 Waiting(无限等待)3.1 状态描述3.2 代码示例3.3 线程状态图4 线程状态总览图

2020-10-09 16:01:29 6475

原创 计算机网络中的bit、Byte、Kb、KB、数据率、数据量概念解析

bit:中文名称“位”,0或1,表示一个二进制位,是数据处理的最小单位,简写为b;Byte:中文名称“字节”,每8位组成1个字节,是数据处理的基本单位,简写为B;1 Byte = 8 bit 或1 B = 8 b数据率:bit/s或b/s、Kb/s 、Mb/s 、Gb/s等1Kb/s = 10^3b/s1Mb/s = 10^6b/s1Gb/s = 10^9b/s数据量:Byte或B、KB、MB、GB等1KB = 2^10B1MB = 2^20B1GB = 2^30B举例说明:15G

2020-10-08 18:19:04 7250

原创 Java线程安全与线程同步(同步代码块、同步方法、锁机制)

目录1 线程安全1.1 概念1.2 程序演示2 线程同步2.1 同步代码块2.2 同步方法2.3 锁机制1 线程安全1.1 概念多个线程同时运行一段代码,每次运行结果和单线程运行结果一样,且其他变量值也和预期一样,就称为线程安全。1.2 程序演示我们通过模拟电影院卖票来感受下线程的安全问题:票及卖票过程:Runnable接口的子类;卖票窗口:线程对象。public class Ticket implements Runnable { private int ticket = 10

2020-10-08 17:20:25 407

原创 Java线程(Thread)生命周期的6种状态

当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中, 可能处于不同的状态,java.lang.Thread.State 列举出了这6种线程状态:线程状态导致状态发生条件New(新建)线程刚被创建,但是并未启动,还没调用start方法。Runnable(可运行)线程可以在java虚拟机中运行的状态,可能正在运行自己的代码,也可能没有,这取决于操作系统处理器。Blocked(锁阻塞)当一个线程试图获取一个对象锁,而该对象锁

2020-10-07 11:19:30 652

原创 Java Thread类构造方法和其他常用方法

1 构造方法public Thread():分配一个新的线程对象。public Thread(String name):分配一个指定名字的新的线程对象。public Thread(Runnable target):分配一个带有指定目标的新的线程对象。public Thread(Runnable target,String name):分配一个带有指定目标的并指定名字的新的线程对象。2 其他常用方法public String getName():获取当前线程名称。public void s

2020-10-07 09:17:01 1111

原创 Java多线程创建的2种方式(Thread和Runnable)及其区别

定义Thread类的子类,并重写该类的run()方法,该run()方法的方法体就代表了线程需要完成的任务,因此把run()方法称为线程执行体;创建Thread子类的实例,即创建了线程对象;调用线程对象的start()方法来启动该线程。

2020-10-06 14:49:19 351

原创 Java泛型的定义和使用详解

第三章 泛型3.1 泛型概述在前面学习集合时,我们都知道集合中是可以存放任意对象的,只要把对象存储集合后,那么这时他们都会被提升成Object类型。当我们在取出每一个对象,并且进行相应的操作,这时必须采用类型转换。大家观察下面代码:public class GenericDemo { public static void main(String[] args) { Collection coll = new ArrayList(); coll.add("abc"); coll.add

2020-10-01 20:40:53 2543

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除