![](https://img-blog.csdnimg.cn/20201219142358244.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
javase
文章平均质量分 75
javase相关
java基础
「已注销」
这个作者很懒,什么都没留下…
展开
-
异常------异常结构、用处、分类
结构1、所有的异常类是从 java.lang.Exception 类继承的子类。Exception 类是 Throwable 类的子类。2、所有的非检查性异常都继承自java.lang.RuntimeException。3、所有的检查性异常都继承自java.lang.Exception,是RuntimeException以外的异常;4、根据程序编写时是否检测报错:分为检查性异常(checked exceptions,也叫编译时异常)和非检查性异常(unchecked exceptions)5原创 2021-01-06 16:23:27 · 196 阅读 · 0 评论 -
对象------创建对象的几种方式
Java中创建对象的四种方式1.new 对象2.反射调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。3.调用对象的clone()方法。4.反序列化调用java.io.ObjectInputStream对象的 readObject()方法,读取存储了对象信息的二进制文件new ObjectInputStream(new FileInputStream("********"))...原创 2021-01-20 01:33:21 · 132 阅读 · 0 评论 -
socket网络编程------文件上传实例
这里写目录标题流程分析:优化分析代码实现服务端客户端流程分析:【客户端】输入流,从硬盘读取文件数据到程序中。【客户端】输出流,写出文件数据到服务端。【服务端】输入流,读取文件数据到服务端程序。【服务端】输出流,写出文件数据到服务器硬盘中。【服务端】获取输出流,回写数据。【客户端】获取输入流,解析回写数据。优化分析1.文件名称写死的问题服务端,保存文件的名称如果写死,那么最终导致服务器硬盘,只会保留一个文件,建议使用系统时间优化,保证文件名称唯一,代码如下:FileOutputSt原创 2021-01-11 18:24:46 · 63 阅读 · 1 评论 -
file文件操作
用Java写一个递归遍历目录下面的所有文件import java.io.File;public class Counter { public static void main(String[] args) { //取得目标目录 File file = new File("D:"); //获取目录下子文件及子文件夹 File[] files = file.listFiles(); readfile(files);原创 2021-01-11 17:29:27 · 64 阅读 · 0 评论 -
线程池------深入了解线程池
目录一、线程池的核心类:ThreadPoolExecutor类先来看ThreadPoolExecutor类的具体实现源码再来看AbstractExecutorService的代码实现(仅大致浏览):再来看ExecutorService接口的实现:再来看一下Executor接口的实现:Executor继承结构分析ThreadPoolExecutor类中的几个重要方法二、线程池的实现原理1.线程池状态2.任务的执行先来看一下ThreadPoolExecutor类中其他的一些比较重要成员变量进入正题,分析 任务从原创 2021-01-08 15:51:27 · 82 阅读 · 0 评论 -
集合------HashMap原理
目录01、摘要02、简介03、源码解析概述3.1、通过 K 获取数组下标3.2、put 方法的详细执行3.3、resize 扩容过程3.3.1、jdk1.7 的扩容实现源码部分3.3.2、jdk1.8 的扩容实现3.4、get 方法获取参数值3.5、remove 删除元素04、总结01、摘要Map 的实现类有 HashMap、LinkedHashMap、TreeMap、IdentityHashMap、WeakHashMap、Hashtable、Properties 等等。本文主要结合 JDK1.7原创 2021-01-07 23:54:27 · 99 阅读 · 0 评论 -
java对象------创建对象时,各属性、方法的执行顺序/流程
总执行顺序/流程分析启动程序开启父类加载父类静态 属性/代码块开启子类加载子类静态 属性/代码块子类main方法(此处把main方法写在了子类里面,才有该步)进入子类构造由子类构造直接进入父类构造(因为父类构造写在子类构造的第一行)父类构造代码块父类构造方法(中的局部代码块)子类构造代码块子类构造方法(中的局部代码块)代码演示class Parent { public static String p_StaticField = "父类-静态变量"; publi原创 2021-01-06 00:27:35 · 385 阅读 · 3 评论 -
多线程------实现多线程的几种方式
JAVA多线程实现的几种方式继承Thread类创建线程实现Runnable接口创建线程通过线程池创建线程实现Callable接口通过FutureTask包装器来创建Thread线程使用ExecutorService、Callable、Future实现有返回结果的线程1、继承Thread类创建线程构建Thread子类public class MyThread extends Thread { public void run() { System.out.println原创 2021-01-05 15:54:47 · 97 阅读 · 0 评论 -
流------缓冲流、转换流、序列化流、打印流
目录缓冲流概述分类字节缓冲流构造方法通过字节缓冲流----实现高效复制大文件字符缓冲流构造方法特有方法转换流先来看:字符编码和字符集字符编码字符集再来看:FileReader读取文本文件乱码问题转换流----图解InputStreamReader类声明构造方法OutputStreamWriter类声明构造方法转换文件编码序列化流概述ObjectOutputStream类----实现序列化声明构造方法序列化方法对象序列化的条件对象序列化测试案例:ObjectInputStream类----反序列化声明构造方法原创 2021-01-04 00:28:53 · 136 阅读 · 0 评论 -
流------I/O、字节流、字符流、I/O异常处理、BIO,NIO,AIO
目录IO概述什么是IOIO的分类IO中的顶级父类字节流字节输出流-OutputStream字节输入流-InputStreamFileOutputStream类声明:构造方法写出字节数据数据追加续写写出换行FileInputStream类声明:构造方法读取字节数据字节流----实现文件复制字符流前言-字节流读取文本文件时存在的问题字符输入流-Reader字符输出流-WriterFileReader类声明:构造方法读取字符数据FileWriter类声明:构造方法关闭和刷新(重要!!!)基本写出数据数据追加续写写原创 2021-01-03 22:54:03 · 203 阅读 · 0 评论 -
Lambda表达式
Lambda标准格式Lambda省去面向对象的条条框框,格式由3个部分组成:一些参数一个箭头一段代码Lambda表达式的标准格式为:(参数类型 参数名称) -> { 代码语句 }格式说明:小括号内的语法与传统方法参数列表一致:无参数则留空;多个参数则用逗号分隔。->是新引入的语法格式,代表指向动作。大括号内的语法与传统方法体要求基本一致。使用Lambda标准格式(无参无返回)例1:public interface Cook { void makeFoo原创 2021-01-02 02:26:51 · 164 阅读 · 0 评论 -
多线程------线程池(初识)、几种常见的线程池及实现(初步了解)
线程池思想概述/概念频繁创建线程,会大大降低系统的效率,因为创建线程和销毁线程需要时间。在Java中可以通过线程池来达到线程复用,即执行完一个任务,并不被销毁,而是可以继续执行其他的任务线程池:其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源。线程池的工作原理(图解)线程池的好处降低资源消耗。减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。提高响应速度。当任务到达时,任务可以不需要的等到线程创原创 2021-01-02 01:36:34 · 190 阅读 · 0 评论 -
多线程------等待唤醒机制、线程间通信、生产者与消费者问题
线程间通信概述:多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同。比如:线程A用来生成包子的,线程B用来吃包子的,包子可以理解为同一资源,线程A与线程B处理的动作,一个是生产,一个是消费,那么线程A与线程B之间就存在线程通信问题。为什么要处理线程间通信:多个线程并发执行时, 在默认情况下CPU是随机切换线程的,当我们需要多个线程来共同完成一件任务,并且我们希望他们有规律的执行, 那么多线程之间需要一些协调通信,以此来帮我们达到多线程共同操作一份数据。如何保证线程间通信有效利用资源转载 2021-01-02 00:49:44 · 145 阅读 · 0 评论 -
多线程------多线程原理、线程安全、线程同步、线程状态、锁分类、(java)锁机制
线程多线程原理代码示例public class MyThread extends Thread { /** * 利用继承中的特点* 将线程名称传递 进行设置 */ public MyThread(String name) { super(name); } /** * 重写run方法* 定义线程要执行的代码 */ @Override public void run() { for原创 2021-01-01 23:40:51 · 359 阅读 · 1 评论 -
多线程------线程与进程/线程调度/创建线程
线程与进程进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建、运行到消亡的过程。线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。简而言之:一个程序运行后至少有一个进程,一个进程中可以包含多个线程线程调度分时调度所有线程轮流使用 CPU 的原创 2020-12-31 01:13:41 · 154 阅读 · 0 评论 -
集合------Map集合(HashMap/LinkedHashMap)
Map集合概述Java提供了专门的集合类用来存放具有一一对应的映射关系的一对元素,即java.util.Map接口。Map中存放的是两种对象,一种称为key(键),一种称为value(值),它们在在Map中是一一对应关系collection与Map的区别:Collection中的集合,元素是孤立存在的,向集合中存储元素采用一个个元素的方式存储。Map中的集合,元素是成对存在的。每个元素由键与值两部分组成,通过键可以找对所对应的值。Collection中的集合称为单列集合,Map中的集合称为双原创 2020-12-31 00:06:35 · 114 阅读 · 0 评论 -
集合------Collections集合工具类(Comparable和Comparator)
Collectionsjava.utils.Collections是集合工具类,用来对集合进行操作。Collections常用功能部分方法如下:public static <T> boolean addAll(Collection<T> c, T... elements):往集合中添加一些元素。public static void shuffle(List<?> list) 打乱顺序:打乱集合顺序。public static <T> void s原创 2020-12-30 22:56:55 · 107 阅读 · 0 评论 -
集合------Set集合(HashSet/LinkedHashSet)
Set接口java.util.Set接口和java.util.List接口一样,同样继承自Collection接口,它与Collection接口中的方法基本一致,并没有对Collection接口进行功能上的扩充,与List接口不同的是,Set接口中元素无序,并且都会以某种规则保证存入的元素不出现重复。Set集合有多个子类,这里介绍其中的java.util.HashSet、java.util.LinkedHashSettips:Set集合取出元素的方式可以采用:迭代器、增强for。...原创 2020-12-30 11:56:08 · 149 阅读 · 2 评论 -
集合------List集合(ArrayList/LinkedList/Vector)
List集合List接口介绍java.util.List接口继承自Collection接口,是单列集合的一个重要分支习惯性地会将实现了List接口的对象称为List集合在List集合中允许出现重复的元素所有的元素是以一种线性方式进行存储的,在程序中可以通过索引来访问集合中的指定元素另外,List集合还有一个特点就是元素有序,即元素的存入顺序和取出顺序一致总结,List接口特点:它是一个元素存取有序的集合。例如,存元素的顺序是11、22、33。那么集合中,元素的存储就是按照11、22、3原创 2020-12-30 00:39:49 · 204 阅读 · 1 评论 -
泛型
泛型泛型概述泛型定义:可以在类或方法中预支地使用未知的类型。tips:一般在创建对象时,将未知的类型确定具体的类型。当没有指定泛型时,默认类型为Object类型。前因:集合中是可以存放任意对象的,只要把对象存储集合后,那么这时他们都会被提升成Object类型。当取出每一个对象,并且进行相应的操作,这时必须采用类型转换。Collection虽然可以存储各种对象,但实际上通常Collection只存储同一类型对象。例如都是存储字符串对象。后果:因此在JDK5之后,新增了泛型(Generic原创 2020-12-29 02:12:35 · 185 阅读 · 0 评论 -
集合------集合框架Collection/Iterator迭代器/增强for循环
集合框架Collection集合概述集合是java中提供的一种容器,可以用来存储多个数据。集合框架集合按照其存储结构可以分为两大类,分别是单列集合java.util.Collection和双列集合java.util.MapCollection:单列集合类的根接口,用于存储一系列符合某种规则的元素,它有两个重要的子接口,分别是java.util.List和java.util.Set。其中,List的特点是元素有序、元素可重复。Set的特点是元素无序,而且不可重复。List接口的主要实现类有原创 2020-12-29 01:45:38 · 197 阅读 · 0 评论