![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
JavaSE
基础
昫 灬
记录、思考
展开
-
Java8_Optional类_简介
Java8_Optional类_简介一、什么是OptionalJava 8 引入的一个新类 java.util.Opitonal。这是一个封装 Optional值的类。举个例子,假设一个人可能有车也可能没有车,那么我们在声明Person类里的 car 属性时,就不应直接声明为【Car car】,而是声明为Optional 类型。Optional 类只是对Car进行简单的封装,并未改变Car任何东西,当Car 不存在时,就是一个空的 Optional 对象,可调用方法 Optional.empty()原创 2020-10-22 14:44:27 · 514 阅读 · 0 评论 -
Java8_Stream流_详解
Java8_Stream流一、什么是Stream流?定义:流就是由支持数据处理的源数据生成的元素序列流的特点:java.util.Stream 流是一系列数据项,它不是一种数据结构。Stream 的创建需要指定一个数据源, 比如 集合、数组, 不支持Map。每次生成的流,只能使用(消费)一次。(二次使用报:stream has already been operated upon or closedStream 的操作可以串行执行或者并行执行。流与集合的区别:集合是一个内存中的数据结原创 2020-10-19 21:34:41 · 1299 阅读 · 0 评论 -
1.8_LinkedList_源码浅析
1.8_LinkedList一、简介LinkedList 继承了AbstractSequentialList,实现了 Deque和List接口,是一个双向链表内部2个指针(first / last)分别指向 链表头结点和尾节点1)类结构图2)链表结构图图片来源网络,侵删二、源码1)链表节点类 // 私有静态内部类 private static class Node<E> { E item; //节点值 Node<E> n原创 2020-10-17 13:02:58 · 166 阅读 · 0 评论 -
Iterator_Iterable和快速失败机制
Iterator、Iterable、快速失败机制先用ArrayList引出它们吧,看下关系图简述:ArrayList 有个内部类迭代器 Itr,Itr 实现了Iterator接口ArrayList 实现了Iterable接口,实现该接口。允许对象使用迭代器进行遍历和 forEach 方式进行遍历一、内部类迭代器 Itr1.几个重要的属性:cursor:返回的下一个元素的索引lastRet:最后返回的元素的索引expectedModCount:期望的modCount,用于快速失败机制原创 2020-08-23 12:30:22 · 237 阅读 · 0 评论 -
1.7_HashMap_源码
jdk1.7 HashMap源码阅读文章目录jdk1.7 HashMap源码阅读1)HashMap中的字段2)节点类Entry2)构造函数3)添加元素->1 put():入口->2 addEntry()->3 resize():扩容操作->4 createEntry():最终的插入操作4)获取元素->1 get():入口--> getEntry():获取key对应的Entry节点1.7 HashMap底层使用的是(Entry)数组+链表实现线程不安全,在多个线原创 2020-08-22 11:25:46 · 324 阅读 · 0 评论 -
1.8_HashTable_源码
HashTable源码初探类继承图:HashTable继承Dictionary类,实现Map接口。Dictionary类每个键和每个值都是一个对象。不能使用Null作为键或者值每个键至多与一个值相关联。HashTable采用"拉链法(数组+链表)"实现哈希表,几个重要的参数:table:为一个Entry<K,V>[]数组类型,Entry代表了“拉链”的节点,每一个Entry代表了一个键值对count:HashTable的大小,Entry键值对的数量。thresh原创 2020-08-22 11:20:29 · 118 阅读 · 0 评论 -
Java-注解解析
Java-注解文章目录Java-注解一、定义1.1 作用二、预定义注解三、自定义注解3.1 格式3.2 本质3.3 注解内的属性3.4 元注解四、注解解析一、定义注解(Annotation),也叫元数据。一种代码级别的说明。JDK1.5之后引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。1.1 作用①编写文档:通过代码里标识的注解生成文档【生成文档doc文档】②代码分析:通过代码里标识的注解对代码进行分析原创 2020-07-02 12:30:33 · 3779 阅读 · 0 评论 -
方法调用
方法调用文章目录方法调用一、重载解析:二、静态绑定:三、动态绑定:动态绑定过程:摘自《Java核心技术–卷一》注:方法名称+参数列表称为方法的签名一、重载解析:编译器多态当一个类中存在多个方法名称相同的方法时(比如M方法),编译器会一一列出该类中所有的M方法和其父类中public修饰的M方法方法调用时,编译器会根据方法的参数列表选择合适的M方法,这称为重载解析二、静态绑定:如果是private(),static(),final()方法或者构造方法,编译器可以准确地知道应该调用哪原创 2020-05-31 00:22:36 · 253 阅读 · 0 评论 -
单例模式
单例模式文章目录单例模式简介一、饿汉式二、懒汉式1. 直接使用同步锁2. 双重校验锁三、静态内部类四、枚举创建单例简介这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。一、饿汉式单例对象已经创建好了,直接取就完事了/** * 单例---饿汉模式 */class Res{ private Res(){} private static final Res res =原创 2020-05-30 20:53:32 · 174 阅读 · 0 评论 -
Java8_Lambda表达式_详解
Java8–Lambda表达式文章目录Java8--Lambda表达式一、Lambda基础语法二、Lambda的实质三、基本使用四、四大函数式接口1)消费者接口2)供应者接口3)判断式接口4)函数式接口五、方法引用1)静态方法引用2)实例方法引用3)对象方法引用4)构造方法引用一、Lambda基础语法1)->:箭头表达式箭头左边:参数列表 ,无参使用()箭头右边:实现接口中抽象方法的实现代码2)只有一个参数的话,可以省略参数的括号实现3)只有一条语句的话,可以省略大括号,原创 2020-05-22 14:19:16 · 335 阅读 · 2 评论 -
Java-多线程基础总结
Java-多线程基础总结文章目录Java-多线程基础总结一、线程的创建方式二、线程的状态1)状态流程2)常见方法三、线程同步1)同步方法2)同步代码块3)死锁4)Lock锁四、线程通信1)生产者-消费者问题一、线程的创建方式1)继承Thread类2)实现Runnable接3)实现Callable接口class MyThread1 implements Runnable{ @Override public void run() { System.out.printl原创 2020-05-17 16:23:39 · 221 阅读 · 0 评论 -
String,StringBuilder与StringBuffer区别及扩容
String、StringBuilder与StringBufferjdk1.8 String 底层使用的是 final 修饰的字符数组,而且 String 类本身就是使用 final 修饰的不可变类,不可以被继承StringBuilder 与 StringBuffer 都继承自AbstractStringBuilder:AbstractStringBuilder 底层使用的也是...原创 2020-05-01 15:34:41 · 398 阅读 · 0 评论 -
Java-反射基础
Java-反射基础一、概念: 将类的各个组成部分(变量、方法、构造器)封装为对象,这就是反射机制。(即:Class、Constructor、Field、Method对象)好处:可以在程序运行过程中,操作这些对象。可以解耦,提高程序的可扩展性。反射的4个对象Class对象在程序运行期间,Java运行时系统始终为所有的对象维护一个称为运行时的类型标识,该信息跟踪着每个对象所属的...原创 2019-10-20 10:49:36 · 102 阅读 · 0 评论 -
Java-时间相关类
Java-时间相关类计算机世界中,以1970年1月1日00:00:00为基准时间。用毫秒作为单位如果想要获取当前时刻::long now = System.currentTimeMills();相关类介绍:Date时间类( java.util.Date )该对象表示一个特点的瞬间,精确到毫秒该类的三个子类:java.sql.Date :表示年月日java.sql....原创 2019-06-07 15:49:47 · 215 阅读 · 0 评论 -
Java-readLine()阻塞问题
socket编程中readLine()阻塞问题readLine()的API说明:public String readLIne() throws IOException中文版:读一行文字。 一行被视为由换行符(’\ n’),回车符(’\ r’)中的任何一个或随后的换行符终止。返回:包含行的内容的字符串,不包含任何行终止字符,如果到达流末尾,则为null英文版:Rea...原创 2019-06-10 21:34:37 · 6302 阅读 · 0 评论 -
Java-环境变量配置
如何安装JDK可以直接将已经解压好jdk安装文件copy到任意盘中(以D盘为例)配置环境变量:(以window10为例)点击"此电脑"—“属性”----“高级系统设置”-----“环境变量”需要配置的是“系统变量”的3个地方:1. 新建:“变量名:JAVA_HOME"----------“变量值:jdk的安装路径”(安装路径指的是“能够看到bin,jar,lib之类的文件夹为...原创 2019-06-11 22:25:28 · 179 阅读 · 0 评论 -
Java-实现简单取色器
Java实现简单取色器最近在学前端的一部分内容,有时会用到取色器,但在网上下了几个都会产生鼠标偏移,所以打算自己用Java写一个。大致完成后,拿jar执行的时候是不会发生偏移的,就是打包成.exe后,就产生偏移了。界面是仿TakeColor写的,不是很复杂,刚好我用TakeColor的时候也会偏移,由于上面有坐标位置。所以才知道缘由。使用TakeColor能获取到的最大坐标是1280 x ...原创 2019-10-09 14:45:14 · 1233 阅读 · 0 评论 -
JList动态添加元素
JList动态添加元素转自:https://www.cnblogs.com/tianguook/archive/2012/01/31/2333992.html学Java时用到了JList不知怎么添加元素,这里说说我的经验:Jlist显示对象列表并且允许用户选择一个或多个项的组件。单独的模型 ListModel 维护列表的内容。这里要注意在把Jlist添加到容器时可以选择用JScrollPa...转载 2019-07-12 10:18:12 · 3753 阅读 · 0 评论 -
Java-格式化输出
Java格式化输出System.out.printf();: 和C语言一样的用法System.out.format();: 和上面是一样的用法@Test public void test1(){ //1.printf():和C的用法一模一样 double b = 3.14; int i = 12; int a = 1...原创 2019-08-23 11:42:32 · 813 阅读 · 0 评论 -
Java-线程交替
java 多线程–线程交替要求:借助同步机制,sleep()方法,join()方法,实现动画显示;甲线程:1、3、5、7、9乙线程:2、4、6、8、10丙线程:a、b、c、d、emain()线程输出:线程开始,线程结束输出结果:线程开始,1-a-2## 3-b-4## 5-c-6## …思考:使用多个判断标记,模拟(消费者-生产者)每线程输出一个后就等待,然后改变自己的标记临...原创 2020-05-06 22:29:43 · 1553 阅读 · 1 评论