![](https://img-blog.csdnimg.cn/20190918140213434.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JavaSE
文章平均质量分 92
Java基础
ZaynFox
努力努力努力啊!
展开
-
Java设计模式之单例模式/饿汉式/懒汉式/DCL双重检测锁模式/静态内部类实现单例模式/使用反射破坏单例模式/枚举类实现单例模式
一、概念设计模式:是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。设计模式就像是经典的棋谱,不同的棋局,我们用不同的棋谱,免去我们自己再思考和摸索。共有23种设计模式:创建型模式,共5种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共7种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共11种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问原创 2021-04-14 20:39:25 · 211 阅读 · 0 评论 -
JavaSE学习总结(二十四)反射/Class类/获取Class实例的四种方法/类的加载/类加载器ClassLoader/类加载器读取配置文件/创建运行时类对象/获取运行时类完整结构和指定结构
一、Java反射机制概述(一)概述Reflection(反射)是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,我们形象的称之为:反射。(二)动态语言和静态语言1.动态语言是一类在原创 2021-04-14 13:55:55 · 456 阅读 · 1 评论 -
JavaSE学习总结(二十三)注解/@Override、@Deprecated和@SuppressWarnings/自定义注解/元注解/可重复注解@Repeatable/类型注解
一、注解概述从 JDK 5.0 开始,Java 增加了对元数据(MetaData) 的支持,也就是Annotation(注解)Annotation 其实就是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过使用 Annotation,程序员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证或者进行部署。Annotation 可以像修饰符一样被使用,可用于修饰包、类、构造器、方法、成员变量、参数、局部变原创 2021-04-10 19:36:46 · 404 阅读 · 0 评论 -
JavaSE学习总结(二十二)枚举类/自定义枚举类/使用关键字enum定义枚举类/Enum类的常用方法/枚举类实现接口
一、枚举类概述枚举类型是Java 5中新增特性的一部分,它是一种特殊的数据类型,之所以特殊是因为它既是一种类(class)类型却又比类类型多了些特殊的约束,但是这些约束的存在也造就了枚举类型的简洁性、安全性以及便捷性。二、什么时候使用枚举类类的对象只有有限个,确定的。例如:星期:Monday、Tuesday、… 、Sunday季节:Spring、Summer、Autumn、Winter线程状态:创建、就绪、运行、阻塞、死亡订单状态:Nonpayment(未付款)、Paid(已付款)、De原创 2021-04-09 19:08:55 · 234 阅读 · 0 评论 -
JavaSE学习总结(二十一)多线程进阶之JUC并发(下)线程池/Stream流式计算/ForkJoin/异步回调/JMM/volatile/深入理解CAS/悲观锁和乐观锁/原子引用/死锁排查/自旋锁
十三、线程池经常创建和销毁线程、使用量特别大的资源,比如并发情况下的线程,对性能影响很大。因此可以提前创建好多个线程,放入线程池中,使用时直接获取,使用完放回池中。 可以避免频繁创建销毁、实现重复利用。(一)线程池的好处提高响应速度(减少了创建新线程的时间)降低资源消耗(重复利用线程池中线程,不需要每次都创建)便于对线程进行管理线程复用可以控制最大并发数(二)三大方法说到线程池,必须提Executor接口和Executors类Executor:一个接口,其定义了一个接收Runna原创 2021-04-05 13:59:01 · 228 阅读 · 2 评论 -
JavaSE学习总结(二十)多线程进阶之JUC并发(上)/虚假唤醒/JUC解决生产者消费者问题/精准通知唤醒/读写锁/线程八锁问题/集合线程安全化/JUC常用辅助类/阻塞队列/同步队列
一、什么是JUC?JUC就是Java的并发包java.util.concurrent的简写,是关于并发编程的API。与JUC相关的有三个包:java.util.concurrent、java.util.concurrent.atomic、java.util.concurrent.locks。二、并发和并行的区别并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。(同一时间段)(通俗地讲:C原创 2021-03-29 15:22:06 · 253 阅读 · 3 评论 -
JavaSE学习总结(十九)多线程/线程和进程的区别/创建线程/线程池/停止线程/sleep和wait的区别/礼让/Join()/线程状态/守护线程/线程同步和锁/死锁/Lock/管程法/信号灯法
一、程序、进程和线程(一)概念程序是一组指令的集合,它是静态的实体,没有执行的含义。进程是一个动态的实体,有自己的生命周期。一般说来,一个进程肯定与一个程序相对应,并且只有一个,但是一个程序可以有多个进程,或者一个进程都没有(因为它没有执行)。除此之外,进程还有并发性和交往性。简单地说,进程是程序的一部分,程序运行的时候会产生进程。线程是进程中的一个实体,作为系统调度和分派的基本单位。一个程序至少有一个进程,一个进程至少有一个线程多进程: 在操作系统中能同时运行多个任务(程序)。多线程: 在原创 2021-03-23 02:08:08 · 402 阅读 · 1 评论 -
JavaSE学习总结(十八)IO流之字节流和字符流(下)/数据输入输出流/内存操作流/打印流/随机访问流/序列化流和反序列化流实现深克隆/Properties属性集合/顺序输入流
一、一些杂七杂八流(一)数据输入输出流数据输入流: DataInputStream数据输出流: DataOutputStream最大的特点: 可以写基本数据类型,可以读取基本数据类型1.构造方法DataOutputStream(OutputStream out)创建一个新的DataOutputStream,将数据写入指定OutputStream。DataInputStream(InputStream in)使用指定的底层 InputStream 创建一个 DataInputStream。2.原创 2021-03-18 10:46:04 · 243 阅读 · 0 评论 -
JavaSE学习总结(十七)IO流之字节流和字符流(上)/用流复制文件/流的异常处理/字节缓冲输入输出流/字符缓冲输入输出流/编码、解码和乱码
一、IO流分类按照数据流向输入流——>读入数据输出流——>写出数据按照数据类型字节流——>可以读写任何类型的文件,比如音频文件、视频文件、文本文件字符流——>只能读写文本文件什么情况下使用哪种流呢?如果数据所在的文件通过windows自带的记事本打开并能读懂里面的内容,就用字符流。其他用字节流。如果你什么都不知道,就用字节流。二、IO流基类概述字节流的抽象基类:InputStream,OutputStream。字符流的抽象基类:Reader,W原创 2021-03-10 00:12:52 · 425 阅读 · 1 评论 -
JavaSE学习总结(十六)IO流之File类/构造方法/创建功能/删除功能/重命名功能/判断功能/获取功能/三种listFiles()方法/删除非空文件夹
Java IO流之File类流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,用来进行输入输出操作的流就称为IO流。一、File类的概述和构造方法(一)File类的概述 我们电脑上的数据都是以文件的形式来体现的。比如,文本文件、音频文件、视频文件、图片文件等等。Java针对文件和目录给我们提供了一个类——File类,用来描述它们。 File类是指文件和目录路径名的抽象表示形式。这个类既可以用来表示文件,也可以用来表示目录。(二)构造方法1.File(String pa原创 2021-03-02 23:27:09 · 242 阅读 · 0 评论 -
JavaSE学习总结(十五)Java异常处理/Throwable/Error/Exception/异常处理/try...catch/throw和throws的区别/finally/自定义异常
Java 异常处理一、异常的概述和分类(一)什么是异常?异常就是Java程序在运行过程中出现的错误。(二)Throwable、Error、ExceptionThrowable: Java中所有错误(Error)和异常(Exception)的父类Error:一般是指与虚拟机相关的问题,如系统崩溃,内存空间不足等。它表示不希望被程序捕获或者是程序无法处理的错误,我们不予处理,因为这类一般是很严重的问题,我们处理不了。Exception:表示程序可以处理的异常,可以捕获且可能恢复。分为编译时异常和原创 2021-03-01 10:53:17 · 322 阅读 · 0 评论 -
JavaSE学习总结(十四)Map集合/Map和Collection的区别/HashMap/LinkedHashMap/TreeMap/集合间的嵌套/Hashtable/Collections工具类
一、Map集合我们知道,一个学号就能对应一个学生,并且每个学生的学号都不同,学号就像一个键,对应的学生就是该键对应的值。日常生活中经常能见到这种类似学号对应学生的例子。Java 为了我们更加方便地去操作,这种键值映射关系的数据,给我们提供了另外一种集合叫做Map集合。(一)概述public interface Map<K,V>类型参数:K - 此映射所维护的键的类型V - 映射值的类型将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。常用子实现类:Ha原创 2021-02-26 20:55:30 · 200 阅读 · 1 评论 -
JavaSE学习总结(十三)Set集合/HashSet集合/LinkedHashSet集合/TreeSet集合/比较器的使用/利用Set集合实现去重
一、Set集合Set集合是Collection集合的一个子接口,实际上Set就是Collection,只是行为略有不同:Set集合不保存重复的元素。(唯一性)Set集合是无序的:存储和取出的顺序无序。(无序性)案例演示import java.util.HashSet;import java.util.Set;public class MyTest { public static void main(String[] args) { Set<String>原创 2020-11-09 18:26:09 · 369 阅读 · 0 评论 -
JavaSE学习总结(十二)对象数组/Collection/List/ArrayList/Vector/LinkedList/并发修改异常/泛型/新式for循环/可变参数/asList()/集合嵌套
一、对象数组(一)概述数组元素可以是基本数据类型,数组元素也可以是类对象,这样的数组称为对象数组。在这种情况下,数组的每一个元素都是一个对象的引用。(二)使用案例演示需求:我有3个学生,请把这3个学生的信息存储到数组中,并遍历数组,获取得到每一个学生信息。 //定义学生类class Student { private String name; private int age; public Student() { } public Student(S原创 2020-10-17 16:32:43 · 406 阅读 · 3 评论 -
JavaSE学习总结(十一)常见八大排序算法/冒泡排序/选择排序/直接插入排序/希尔排序/归并排序/快速排序/基数排序/堆排序
排序一、冒泡排序(一)原理比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。(二)代码实现public class MyTest { public static void main(String[] args) { int[] a={24,69,80原创 2020-09-25 13:17:55 · 341 阅读 · 0 评论 -
JavaSE学习总结(十)常用类(下)/正则表达式/Math/Random/System/BigDecimal/Date/SimpleDateFormat/Calendar/BigInteger
常用类(下)一、正则表达式(一)概述正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。先举个例子来理解正则表达式:案例演示需求:校验qq号码.1:要求必须是5-15位数字2:0不能开头import java.util.Scanner;public class MyTest { public static void main(String[] args) {原创 2020-09-25 13:17:24 · 288 阅读 · 0 评论 -
JavaSE学习总结(九)常用类(中)/StringBuffer类/StringBuilder与StringBuffer的区别/二分查找/Arrays类/包装类/Integer类/自动装箱与自动拆箱
常用类(中)一、StringBuffer类(一)概述我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题,当对字符串进行修改的时候,需要使用 StringBuffer类(或StringBuilder类)。StringBuffer是线程安全的可变字符序列。和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。(二)StringBu原创 2020-09-13 12:54:06 · 235 阅读 · 0 评论 -
JavaSE学习总结(八)常用类(上)/Object类/==与equals方法的区别/浅克隆的特点/Scanner类/String类/String两种创建对象方式的区别/String类的各种功能
常用类(上)一、Object类(一)概述是类层次结构的根类,所有类都直接或者间接的继承自该类(二)构造方法public Object();(三)常见成员方法1.hashcode()public int hashCode();(1)返回该对象的哈希码值。默认情况下,该方法会根据对象的地址来计算哈希码值。(2)不同对象的hashCode()一般来说不会相同。但是,同一个对象的hashCode()值肯定相同。(3)不是对象的实际地址值,可以理解为逻辑地址值。案例演示public cl原创 2020-08-18 20:30:07 · 295 阅读 · 0 评论 -
JavaSE学习总结(七)面向对象(下)抽象类/接口/接口的默认方法/抽象类和接口的区别/链式编程/成员内部类/局部内部类/匿名内部类/类中定义接口/函数式接口/Lambda表达式
面向对象(下)一、抽象类(一)抽象类概述 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 在Java中,一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,该类必须定义为抽象类。(二)抽象类特点1.抽象类和抽象方法必须用abstract关键字修饰抽象类格式:abstract class 类名 {}抽象方法格式:public abstract void eat原创 2020-08-08 16:43:06 · 310 阅读 · 0 评论 -
JavaSE学习总结(六)面向对象(中)代码块/继承/this和super/父类没有无参构造子类怎么办/方法重写/重写和重载的区别/final关键字/多态/多态成员访问特点/向上转型向下转型/孔子装爹
面向对象(中)一、代码块(一)代码块概述在Java中,使用{}括起来的代码被称为代码块。(二)代码块分类根据其位置和声明的不同,可以分为局部代码块、构造代码块、静态代码块和同步代码块(多线程部分讲解)。(三)常见代码块的应用1.局部代码块在方法中出现;限定变量生命周期,及早释放,提高内存利用率2.构造代码块在类中方法外出现;多个构造方法方法中相同的代码存放到一起,每次调用构造方法都执行,并且在构造方法前执行3.静态代码块在类中方法外出现,并加上static修饰;静态代码块用于给类进行原创 2020-07-28 21:02:08 · 586 阅读 · 0 评论 -
JavaSE学习总结(五)面向对象(上)面向对象的思想/类与对象/成员变量和局部变量区别/匿名对象/private、this、static关键字/构造方法/静态变量和成员变量区别/Math类获取随机数
面向对象(一)面向过程思想与面向对象思想1.面向过程思想概述 面向过程就是分析出解决问题所需要的步骤,然后用方法把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 而具体的每一步都需要我们去实现和操作。这些步骤相互调用和协作,完成我们的需求。在上面的每一个具体步骤中我们都是参与者,并且需要面对具体的每一个步骤和过程,这就是面向过程最直接的体现。 那么什么是面向过程开发呢?...原创 2020-02-11 00:41:37 · 388 阅读 · 0 评论 -
JavaSE学习总结(四)二维数组概述/二维数组动态初始化/二维数组静态初始化/二维数组遍历/递归解决问题的思想
一、二维数组(一)二维数组概述二维数组其实就是每一个元素为一维数组的数组。(二)二维数组初始化格式1.动态初始化1.1 二维数组格式1数据类型[][] 变量名 = new 数据类型[m][n];m表示这个二维数组有多少个一维数组 必须写上n表示每一个一维数组的元素个数 可选举例:int[][] arr = new int[3][2];定义了一个二维数组arr这个二维数组有3...原创 2020-02-05 12:26:12 · 714 阅读 · 0 评论 -
JavaSE学习总结(三)方法概述和格式/方法重载/数组概述和定义格式/动态初始化/静态初始化/Java中的内存分配/数组中两个常见异常/数组的基本操作
一、方法(一)方法概述和格式说明1.为什么要有方法? 举个例子,假设“植物大战僵尸”程序的实现代码中,每个豌豆射手发射炮弹的代码为100行,那么每种植一个豌豆射手都需要重复编写这100行的代码,这样程序会变得很臃肿,可读性也非常差。 为了解决代码重复编写的问题,可以将发射炮弹的代码提取出来放在一个{}中,并为这段代码起个名字,这样在每次发射炮弹的地方通过这个名字来调用发射炮弹的代码就可...原创 2020-02-04 00:01:35 · 256 阅读 · 0 评论 -
JavaSE学习总结(二)键盘录入数据/流程控制语句——顺序结构/选择结构(if/switch)/循环结构(for/while/循环嵌套/控制跳转语句)
一、键盘录入数据为什么要使用键盘录入数据a:为了让程序的数据更符合开发的数据b:让程序更灵活一点如何实现键盘录入呢?格式:导包import java.util.Scanner;位置:在class上面。创建键盘录入对象格式:Scanner sc = new Scanner(System.in);通过对象获取数据 格式:int x = sc.nextInt();...原创 2020-01-20 13:49:36 · 437 阅读 · 0 评论 -
Java 网络编程
网络编程一、网络编程基础概念首先理清一个概念:网络编程不等于网站编程,网络编程即使用套接字来达到进程间通信,现在一般称为TCP/IP编程。计算机网络:把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大,功能强的网络系统,从而使众多的计算机可以方便的互相传递信息,共享硬件,软件,数据信息等资源。计算机网络的主要功能:资源共享信息传输与集中处理均衡负荷与分布处理...原创 2019-05-30 23:07:18 · 64768 阅读 · 27 评论 -
Java之GUI(图形界面接口)编程
GUI概念:图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。Swing和AWT 都是java开发GUI常用的技术,本篇主要介绍AWT技术。AWT一、AWT介绍AWT(Abstract Window Toolkit)包括了很多类和接口,用于Java Application的GUI编程。GUI的...原创 2019-05-30 20:40:02 · 11863 阅读 · 0 评论 -
JavaSE学习总结(一)计算机相关基础概念/DOS命令/Java语言特性/JDK、JRE、JVM的区别/注释/关键字/标识符/常量/变量/数据类型转换/字符和字符串的运算/运算符
DOS命令:计算机术语,是指DOS操作系统的命令我们在控制台可以输入这些DOS命令怎么打开控制台:windows+R 打开运行窗口 输入 cmd 回车常见的DOS命令:命令解释例子mspaint打开画图calc打开计算器notepad打开记事本cls清屏exit退出盘符号:切换到哪个盘符D:dir查看该目录...原创 2020-01-15 23:52:11 · 510 阅读 · 0 评论