![](https://img-blog.csdnimg.cn/20200226092037615.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
JAVA
文章平均质量分 72
整理JAVA的重要知识,配合例题加强理解
Jesslili
java小小白
展开
-
常见的设计模式详解
设计模式的类型模式可以分为三大类:创建型模式、结构型模式、行为型模式。GoF的23种设计模式:设计模式的七大原则1、开闭原则(Open Close Principle)开闭原则的意思是:对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。2、里氏代换原则(Liskov Substitution Principle)里氏代换原创 2022-03-06 13:43:01 · 982 阅读 · 1 评论 -
JAVA中的集合都是线程安全的吗?
原创 2021-07-24 09:56:30 · 314 阅读 · 0 评论 -
java集合源码分析②----LinkedList添加元素的过程
LinkedList底层是一个双向链表由下图源码看看出LinkedList实现了Deque接口,所以LinkedList还可以作为队列和栈来使用。静态内部类Node,表示双向链表的结点:LinkedList添加元素的过程(add过程)final Node l = last; //当前节点的最后一个节点final Node newNode = new Node<>(l, e, null); 定义新节点示例: LinkedList<String> list =原创 2021-08-12 11:41:27 · 444 阅读 · 0 评论 -
java集合源码分析①----ArrayList
ArrayList集合ArrayList底层就是一个长度可以动态调整的Object数组有一个记录数组长度的size字段数组是默认长度是10,还准备有一个空的数组。ArrayList有一个父类,并实现了List等多个接口(RandomAccess, Cloneable, java.io.Serializable接口中一个方法也没有)无参创建:ArrayList list = new ArrayList();JDK1.7中,使用无参数构造方法创建ArrayList对象时,默认底层数组长度原创 2021-08-08 13:57:55 · 143 阅读 · 0 评论 -
Java 深入理解及常见易错点整理
1. 什么是java字节码?它是程序的一种低级表示,可以运行在java的虚拟机上。将程序抽象成字节码可以保证java程序员的代码能够运行在各种设备上。2. Math.abs(-2147483648)的返回值是什么?返回值是-2147483648。这是个奇怪的结果,但是是真的,这是一个整数溢出的典型例子。3. 将double变量初始化为无穷大可以使用java的内置常数Double.POSITIVE_INFINITY//或者Double.NEGATIVE_INFINITY4. 变量使用前未进行原创 2020-11-09 20:41:55 · 751 阅读 · 0 评论 -
当finally遇上return,finally还会执行吗?
在 try-catch-finally 语句中,finally一定会被执行吗?在 try 没有被执行到时,finally语句不会执行在 try 中有 System.exit(0),时finally不会执行。因为 System.exit(0) 终止了 java 虚拟机JVM 。若在try中出现return语句,finally语句什么时候执行?public class prac...原创 2020-03-30 08:20:06 · 355 阅读 · 0 评论 -
java 重写与重载的区别
方法的重写和重载是java多态的不同表现重写重写是父类和子类多态的表现。实质是对父类函数进行重新定义。如果在子类中的方法与父类有相同的名称和参数,则该方法被重写了规则:参数列表相同返回值类型相同若子类重写了父类方法,父类方法将被覆盖访问修饰符权限必须大于等于(>=)被重写方法重写方法不能抛出新的异常,不能申明更广泛的异常(只能抛出一样的异常或其子类)若方法已经被重写...原创 2020-03-19 17:35:56 · 114 阅读 · 0 评论 -
Java 多线程详解
文章目录第一章:多线程1 .1 多线程原理1.2 Thread类1.3 创建线程的方式二1.4 Thread和Runnable的区别1.5 匿名内部类方式实现线程的创建第二章 线程安全2.1 线程安全2.2 线程同步2.3 同步代码块2.4 同步方法2.5 Lock锁第三章 线程状态3.1 线程状态概述3.2 Timed Waiting(计时等待)3.3 BLOCKED(锁阻塞)3.4 Wait...原创 2020-03-03 14:10:57 · 539 阅读 · 0 评论 -
IntelliJ Idea 常用快捷键
Alt+回车 导入包,自动修正Ctrl+N 查找类Ctrl+Shift+N 查找文件Ctrl+Alt+L 格式化代码Ctrl+Alt+O 优化导入的类和包Alt+Insert 生成代码(如get,set方法,构造函数等)Ctrl+E或者Alt+Shift+C 最近更改的代码Ctrl+R 替换文本Ctrl+F 查找文本Ctrl+Shift+Space 自动补全代码Ctrl...转载 2020-02-24 13:10:46 · 321 阅读 · 0 评论 -
Java 自定义注解
文章目录一. 注解的基本定义二. 注解的作用三. 自定义注解四. 在程序中的使用一. 注解的基本定义概念:说明程序的,是给计算机看的注释:用文字描述程序的,是给程序员看的定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行...原创 2020-02-18 16:28:45 · 297 阅读 · 0 评论 -
Java中加载配置文件的三种方式
文章目录一、通过文件路径加载二、直接通过getResourceAsStream进行加载三、通过类加载的方式进行加载一、通过文件路径加载该方式必须知道文件的真实路径。1、配置文件放置位置2、具体代码如下package cn.sunft.day01.reflect; import java.io.FileInputStream;import java.io.InputStream;...转载 2020-02-18 15:06:21 · 2652 阅读 · 0 评论 -
Java 反射机制
文章目录1.基本概念2.获取Class对象的方式3. Class对象功能4.案例1.基本概念反射:框架设计的灵魂框架:半成品软件。可以在框架的基础上进行软件开发,简化编码反射:将类的各个组成部分封装为其他对象,这就是反射机制好处:1. 可以在程序运行过程中,操作这些对象。2. 可以解耦,提高程序的可扩展性。2.获取Class对象的方式获取Class对象的方式:Class.f...原创 2020-02-18 14:41:30 · 243 阅读 · 0 评论 -
java Junit单元测试
文章目录1.测试的分类2. Junit使用1.测试的分类黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。白盒测试:需要写代码的。关注程序具体的执行流程。2. Junit使用之前的方法:package cn.itcast.junit;/** * 计算器类 */public class Calculator { /* * 加法 ...原创 2020-02-18 11:15:59 · 321 阅读 · 0 评论 -
Java 方法引用
文章目录1. 冗余的Lambda场景2. 用方法引用改进代码3. 方法引用符4. 通过对象名引用 成员方法5. 通过类名称引用静态方法6. 通过super引用成员方法7. 通过this引用成员方法8. 类的构造器引用9. 数组的构造器引用1. 冗余的Lambda场景来看一个简单的函数式接口以应用Lambda表达式:@FunctionalInterfacepublic interface P...原创 2020-02-16 15:40:52 · 271 阅读 · 0 评论 -
java Stream流
文章目录1.引言2. 流式思想概述3.获取流4.常用方法5. 练习:集合元素处理(传统方式)6.练习:集合元素处理(Stream方式)1.引言传统集合的多步遍历代码 :几乎所有的集合(如 Collection 接口或 Map 接口等)都支持直接或间接的遍历操作。而当我们需要对集合中的元素进行操作的时候,除了必需的添加、删除、获取外,典型的就是集合遍历。例如:import java.util...原创 2020-02-16 13:57:26 · 313 阅读 · 1 评论 -
Java Map集合、斗地主案例
文章目录第一章 Map集合1.1 概述1.2 Map常用子类1.3 Map接口中的常用方法1.4 Map集合遍历键找值方式1.5 Entry键值对对象1.6 Map集合遍历键值对方式1.7 HashMap存储自定义类型键值1.8 LinkedHashMap第二章 模拟斗地主洗牌发牌2.2 案例需求分析3.3 实现代码步骤第一章 Map集合1.1 概述现实生活中,我们常会看到这样的一种集合...原创 2020-02-15 17:40:45 · 617 阅读 · 2 评论 -
java List、Set集合
文章目录集合的遍历第一章 List集合1.1 List接口介绍1.2 List接口中常用方法第二章 List的子类2.1 ArrayList集合2.2 LinkedList集合第三章 Set接口3.1 HashSet集合介绍3.2 HashSet集合存储数据的结构(哈希表)3.3 HashSet存储自定义类型元素3.3 LinkedHashSet第四章 Collections工具类4.1 常用功能...原创 2020-02-15 17:04:05 · 329 阅读 · 0 评论 -
java Arrays.sort()排序
1、Arrays.sort(int[] a)这种形式是对一个数组的所有元素进行排序,并且是按从小到大的顺序。2、Arrays.sort(int[] a, int fromIndex, int toIndex)这种形式是对数组部分排序,也就是对数组a的下标从fromIndex到toIndex-1的元素排序,注意:下标为toIndex的元素不参与排序3、public static <T&...转载 2020-02-15 14:23:31 · 3008 阅读 · 0 评论 -
java 函数式接口
文章目录第一章 函数式接口1.1 概念1.2 格式1.3 @FunctionalInterface注解1.4 自定义函数式接口第二章 函数式编程2.1 Lambda的延迟执行2.2 使用Lambda作为参数和返回值第三章 常用函数式接口3.1 Supplier接口3.2 练习:求数组元素最大值3.3 Consumer接口3.4 练习:格式化打印信息3.5 Predicate接口3.6 练习:集合信...原创 2020-02-15 15:44:30 · 279 阅读 · 0 评论 -
java 网络编程--C/S
文章目录第一章 网络编程入门1.1软件结构1.2 网络通信协议1.3 协议分类**1.4 网络编程三要素**第二章 TCP通信程序2.1 概述2.2 Socket类2.3 ServerSocket类2.4 简单的TCP网络程序第三章 综合案例3.1 文件上传案例3.2 模拟B\S服务器第一章 网络编程入门1.1软件结构C/S结构 :全称为Client/Server结构,是指客户端和服务器结...原创 2020-02-14 16:25:45 · 434 阅读 · 0 评论 -
eclipse常用快捷键
代码助手:Ctrl+Space(简体中文操作系统是Alt+/)source的快捷键是:Alt + Shift + s (get set 生成)注释:Ctrl+/快速修正:Ctrl+1单词补全:Alt+/显示搜索对话框:Ctrl+H快速Outline:Ctrl+O打开资源:Ctrl+Shift+R打开类型:Ctrl+Shift+T显示重构菜单:Alt+Shift+T删除行:Ctr...原创 2020-02-13 15:20:32 · 256 阅读 · 0 评论 -
java 序列化流、打印流
文章目录第一章 序列化1.1 概述1.2 ObjectOutputStream类1.3 ObjectInputStream类1.4 练习:序列化集合第二章 打印流2.1 概述2.2 PrintStream类第一章 序列化1.1 概述Java 提供了一种对象序列化的机制。用一个字节序列可以表示一个对象,该字节序列包含该对象的数据 、对象的类型和对象中存储的属性 等信息。字节序列写出到文件之后,...原创 2020-02-13 14:58:21 · 396 阅读 · 0 评论 -
Java 缓冲流、转换流
文章目录第一章 缓冲流1.1 概述1.2 字节缓冲流1.3 字符缓冲流1.4 练习:文本排序第二章 转换流2.1 字符编码和字符集2.2 编码引出的问题2.3 InputStreamReader类2.4 OutputStreamWriter类2.5 练习:转换文件编码第一章 缓冲流1.1 概述缓冲流,也叫高效流,是对4个基本的 FileXxx 流的增强,所以也是4个流,按照数据类型分类:字...原创 2020-02-13 14:06:18 · 290 阅读 · 0 评论 -
Java IO流(字节流、字符流),Properties
文章目录第一章 IO概述1.1 什么是IO1.2 IO的分类1.3 IO的流向说明图解1.4 顶级父类们第二章 字节流2.1 一切皆为字节2.2 字节输出流【OutputStream】2.3 FileOutputStream类2.4 字节输入流【InputStream]2.5 FileInputStream类2.6 字节流练习:图片复制第三章 字符流3.1 字符输入流【Reader】3.2 Fil...原创 2020-02-12 17:24:58 · 345 阅读 · 0 评论 -
java File类 递归
文章目录第一章 File类1.1 概述1.2 构造方法1.3 常用方法1.4 目录的遍历第二章 递归2.1 概述2.2 递归累加求和2.3 递归打印多级目录第三章 综合案例3.1 文件搜索3.2 文件过滤器优化3.3 Lambda优化第一章 File类1.1 概述java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作1.2 构造方法publi...原创 2020-02-12 14:35:11 · 819 阅读 · 0 评论 -
java Lambda表达式
文章目录1. 函数式编程思想概述2. 冗余的Runnable代码3. 编程思想转换4. 体验Lambda的更优写法5. 回顾匿名内部类6. Lambda标准格式7. 练习:使用Lambda标准格式(无参无返回)8. Lambda的参数和返回值9. 练习:使用Lambda标准格式(有参有返回)10. Lambda省略格式12. Lambda的使用前提1. 函数式编程思想概述在数学中,函数就是有输...原创 2020-02-11 19:30:54 · 269 阅读 · 0 评论 -
java 多线程---等待唤醒机制
文章目录1.线程间的通信2.等待唤醒机制3 .生产者与消费者问题1.线程间的通信概念:多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同。比如:线程A用来生成包子的,线程B用来吃包子的,包子可以理解为同一资源,线程A与线程B处理的动作,一个是生产,一个是消费,那么线程A与线程B之间就存在线程通信问题。为什么要处理线程间通信:多个线程并发执行时, 在默认情况下CPU是随机切换线...原创 2020-02-11 16:36:24 · 635 阅读 · 2 评论 -
java 线程池
文章目录1.线程池思想概述2 线程池概念3. 线程池的使用1.线程池思想概述我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任...原创 2020-02-11 17:56:40 · 223 阅读 · 0 评论