—— Java ——
文章平均质量分 86
Java学习手册
_之桐_
一万年太久,只争朝夕,为博学而专精。
展开
-
Java | IO 模式之 JavaNIO 应用
Java | IO 模式之 JavaNIO 应用原创 2023-03-01 16:56:59 · 1456 阅读 · 0 评论 -
Java | IO 模式之 JavaBIO 应用
IO 模式之 JavaBIO原创 2023-03-01 14:33:45 · 696 阅读 · 0 评论 -
【Java自顶向下】ConcurrentHashMap面试题(2021最新版)
文章目录1 ConcurrentHashMap默认初始容量是多少?2 ConCurrentHashmap 的key,value是否可以为null。3 ConCurrentHashmap 每次扩容是原来容量的几倍4 ConCurrentHashmap的数据结构是怎么样的?(后面会具体分析它的put方法)5 存储在ConCurrentHashmap中每个节点是什么样的,有哪些变量6 ConCurrentHashmap的put过程是怎样的?7 java1.8中ConCurrentHashmap节点是尾插还是头插?原创 2021-03-03 22:31:38 · 4763 阅读 · 11 评论 -
【Java自顶向下】试手小公司,面试官问我ConcurrentHashMap,我微微一笑……
文章目录ConcurrentHashMap一、ConcurrentHashMap初始化的剖析1.1 ConcurrentHashMap初始化1.2 理解sizeCtl二、JDK8的添加安全2.1 putVal源码分析2.2 putVal源码程序流程图2.3 putVal阅读源码总结2.4 initTable源码分析2.5 initTable源码程序流程图2.6 JDK8中ConcurrentHashMap添加安全总结三、JDK8扩容安全3.1 transfer源码分析3.2 扩容安全图解3.3 JDK8中C原创 2021-03-04 08:47:44 · 8417 阅读 · 18 评论 -
【Java自顶向下】面试官:HashMap源码看过吗?我:看过!面试官:好极了,那么来扒一扒吧!
HashMap关于hash表的基础内容,请看文章【数据结构-查找】3.散列表详解顶层应用public class HashMapTest { public static void main(String[] args) { HashMap<String, String> stringStringHashMap = new HashMap<>(); // 1.put存储键值对 stringStringHashMap.put原创 2021-02-26 13:20:58 · 3823 阅读 · 12 评论 -
【Java自顶向下】HashMap面试题(2021最新版)
文章目录1.HashMap的底层数据结构?2.为啥需要链表,链表又是怎么样子的呢?3.新的Entry节点在插入链表的时候,是怎么插入的么?4.Java7中的HashMap和Java8中的HashMap的区别?5.java8之后为啥改为尾部插入呢?6.为啥会线程不安全?7.有什么线程安全的类代替么?8.那你知道ConcurrentHashMap的分段锁的实现原理吗?9.默认初始化大小是多少?为啥是这么多?为啥大小都是2的幂?10.HashMap的扩容方式?负载因子是多少?为什是这么多?11.HashMap是怎原创 2021-02-21 15:05:24 · 3296 阅读 · 4 评论 -
UML | 类图详解
UMLUML ——Unified modeling language UML(统一建模语言),是一种用于软件系统分析和设计的语言工具,它用 于帮助软件开发人员进行思考和记录思路的结果UML图有哪些用例图静态结构图∶类图、对象图、包图、组件图、部署图动态行为图∶ 交互图(时序图与协作图)、状态图、活动图UML类图详解UML 本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他 们之间的关系,比如类、接口、实现、泛化、依赖、组合、聚合等。类图主体类原创 2023-09-20 14:13:48 · 171 阅读 · 1 评论 -
【图解Java】这下可以真的弄懂Java IO了~
文章目录写在前面Java IO(Stream)一、IO流的分类和概念1.1 流的分类流的原理和解析二、IO流的常见用法2.1 这里是输入流的一些读取方法2.2 提供的一些移动指针的方法2.3 这里是输出流的一些写出方法2.4 缓冲流的使用2.5 转换流的使用2.6 对象流的使用三、何为NIO,和传统Io有何区别?四、在开发中正确使用Io流五、总结(图解)5.1 节点流5.2 字符流六、补充一些面试题参考资料(同致谢!)写在前面本文是建立在网上各类关于IO博客、经验;学习中的实体书以及自己的感悟总结的。原创 2020-08-03 13:54:00 · 510 阅读 · 1 评论 -
【Java】使用Java调用Python的四种方法
写在前面为啥一个好好的岗位是Java开发工程师要去做写python呢?因为产品经理安排的(突然多少有点明白为啥程序员和产品经理会一直开撕)。由于在选择企业的时候没看清企业性质,看了要求以为就是互联网企业,现在看看初为社畜的我还是太天真了。不过既然这几天已经在写python脚本了,那也不能浪费这段时间的经历了,毕竟python的闪光点也不少。于是想一下如何与老本行Java联系起来,就有了这篇博文。文章目录写在前面一、在java类中直接执行python语句二、在java中直接调用python脚本三、★★★使原创 2020-07-30 11:31:55 · 75490 阅读 · 31 评论 -
【Java】15 输入输出
文章目录一、File类1.访问文件和目录2.文件过滤器二、理解Java的IO流1.流的分类①按数据流向分类②按数据单元的长度划分③按流的角色来分类2.流的概念模型三、字节流和字符流1.输入流中的字节流和字符流2.输入流中的字节流和字符流四、输出/输出流体系1.处理流用法2.输入/输出流体系3.转换流4.推回输入流五、重定向标准输入输出六、Java虚拟机读写其他进程的数据七、RandomAccess...原创 2020-05-05 16:11:18 · 296 阅读 · 1 评论 -
【Java】14 JDBC编程学习总结
文章目录一、JDBC是什么?二、为什么要使用JDBC?三、DDL、DML、DCL分别代表什么四、JDBC有三个操作步骤实例代码实例代码实例代码五、使用PreparedStatement执行SQL语句实例代码六、使用CallableStatement调用存储过程实例代码七、可滚动、可更新结果集实例代码八、处理Bob类型的数据九、 Java7新增的RowSetFactory与RowSet实例代码十、离...原创 2020-04-07 23:56:13 · 255 阅读 · 1 评论 -
【Java】7.5 正则表达式 & 7.6 Java 8 新增的日期、时间格式器
Pattern类Pattern类的实例是将一个编译好的正则表达式封装起来。因此正则表达式字符串必须先被变异成Pattern对象,然后根据Pattern对象创建相应的Matcher对象。执行匹配所涉及的状态保留在Matcher对象里,多个Matcher对象共用一个Pattern对象。Pattern类的实例是不变的,各个实例与对应的正则表达式绑定,无法修改。Pattern对象也是线程安全的,可被多...原创 2020-03-16 22:17:05 · 247 阅读 · 0 评论 -
【Java】7.3 基本类 & 7.4 Java 8 的日期、时间类
1原创 2020-03-16 20:56:57 · 189 阅读 · 0 评论 -
【Java】7.1 与用户互动 & 7.2 系统相关
Scanner类重要的是三个方法:nextInt() : it only reads the int value, nextInt() places the cursor in the same line after reading the input. (此方法只读取整型数值,并且在读取输入后把光标留在本行) next() : read the input only till the...原创 2020-03-13 13:45:48 · 173 阅读 · 0 评论 -
【Java】6.9 枚举类
枚举类简介【什么是枚举类?】枚举类就是实例有限且固定的类。且在定义时,枚举类要在第一行全部列出【为什么要是用枚举类?】使用枚举类可以使代码更高效、更简洁、更安全,也更容易维护。比如可以使用枚举类来代替常量(publicstaticfinal ...),限定数据的取值范围等。【什么时候需要使用枚举类?】当一个类的实例有限且固定的时候,需要使用枚举类【如何实现枚举类?】...原创 2020-03-03 21:26:37 · 126 阅读 · 0 评论 -
【Java】6.8 Lambda学习
Lambda 表达式简介Lambda表达式Lambda语法精简Lambda方法引用Lambda构造方法引用Lambda综合练习Lambda闭包原创 2020-03-03 16:18:27 · 166 阅读 · 0 评论 -
【Java】6.7 内部类
内部类 ——就是把一个类放在类里面定义内部类 -寄生类外部类 -宿主类内部类,由于踏上一级程序单元是类,因此他完全可以使用private |protected |默认 |public这四个访问控制符由于内部的上一级程序单元是类,可以用 static修饰。有static修饰的类属于外部类本身;没有static修饰的类属于外部类的实例。非静态内部类...原创 2020-02-29 18:41:57 · 161 阅读 · 0 评论 -
【Java】6.6 Java 8 改进的结构
接口的作用是非常丰富的,接口往往与设计模式接口在一块接口的概念: - 可以认为接口是一种“彻底”的抽象类接口:是从多个相似的类中抽取出来的一种规范。接口体现的是规范接口的体现:通信规范接口定义的语法[修饰符] interface 接口名{ // 0 ~ N 个 Field 定义 // 0 ~ N 个 抽象方法 // 0 ~ N 个 内部类、内...原创 2020-02-26 20:57:21 · 168 阅读 · 0 评论 -
【Java】6.5 抽象类
抽象类和抽象方法抽象类:使用abstract修饰的类就是抽象类。总结起来,抽象类的特性就是有得有失:得:就是可以设置抽象方法 失:就是不能创建实例 其他的普通类可以有的抽象类也可以有【抽象类的注意点】虽然抽象类不能创建实例,但他依然有构造器,它的构造器主要是供其子类构造器调用的 抽象类自己完全没有抽象方法 抽象类总是不能创建实例的 ——即使它没有包含任何抽象方法抽象方法:...原创 2020-02-14 13:16:43 · 146 阅读 · 0 评论 -
【Java】6.4 final 修饰符
【final】关键字可以用来修饰【类】、【变量】(包括成员变量和局部变量)、【方法】final成员变量Java成员(Field)默认是可以由系统执行初始化,程序员可以不指定初始化。而final修饰过的成员变量【必须由程序员执行初始化】,final修饰变量 ——该变量值只能赋值一次,不可改变。(原因见注释1)【注意】若final修饰实例变量,可以再如下三个地方为final实例变量的初...原创 2020-02-13 00:16:20 · 178 阅读 · 0 评论 -
【Java】6.3 类成员
一个Java类中只能包括:成员变量、方法、构造器、初始化块、内部类(包括接口、枚举)单例类单例类:某些时候要为某一个类仅允许创建一个实例(注释1)要实现单例类构造器不能暴露,用private修饰,否则就可以创建多个实例 要暴露一个方法,用public修饰,让这个方法去创建实例。由于程序必须通过该方法来获取实例,所以在调用该方法之前,肯定没有实例(这个时候要用过一个判断实例是否为n...原创 2020-02-11 13:17:16 · 212 阅读 · 0 评论 -
【Java】6.2 处理对象
目录打印对象和toString方法==和equals()方法打印对象和toString方法【toString()方法】负责把返回把该对象的“描述性字符串”打印输出成一个对象时,实际上打印的是该对象的toString()方法的返回值。可以说就是toString()方法的重写(@override)Object类提供飞toString()方法返回值就是:类名@hashcode值 ...原创 2020-02-05 21:22:37 · 153 阅读 · 0 评论 -
【Java】6.1 Java 8增强的包装类
Java的基本类型包装 所有的类都是Object的子类,除了8个基本类型,因为8个基本类型不能当做对象使用。但是Java为这8个基本类型提供了相应的包装类:其本质仍然是8个基本类型但是已经被包装过了,所以可以当做对象使用。表6-1 基本类型数据和包装类之间的对应关系 基本数据类型 包装类 int Integer char Char...原创 2020-02-02 14:44:33 · 154 阅读 · 0 评论 -
【Java】 5.9 初始化块
目录初始化块的语法静态类的初始化初始化块的语法[修饰符] {//可执行语句}【注意】修饰符只能出现static有static,说明它是类初始化块/静态初始化块 没有static,说明它是实例初始化块/非静态初始化块 由于初始化块没有名字,所以他只能被“隐式”执行【将初始化代码提取成初始化块】【一些细节】实例初始化到底何时会被执行? 实例初始化块...原创 2020-01-31 23:08:16 · 120 阅读 · 0 评论 -
【Java】 5.8 继承和组合
目录继承注意的问题通过组合实现复用使用组合或继承的时机继承注意的问题【继承带来的问题和解决的方式】继承是实现类复用的重要手段,但继承带来了一个最大的坏处:破坏封装性。相比较之下,组合也是实现类复用的重要方式,而且使用组合方式来实现类的复用则能提供更好的封装性。【继承中设计父类的注意点】尽量隐藏父类内部数据。尽量把父类的所有成员变量设置成 private类型,不要让子...原创 2020-01-31 20:12:58 · 176 阅读 · 0 评论 -
【Java】 5.7 多态
目录多态(ploymorphism)变量引用的强制类型转换instanceof 运算符多态(ploymorphism)【定义】Java引用变量有两种类型:一种是编译时类型,另一种是运行时类型。如果编译时类型和运行时类型不一致时,就能出现所谓的多态。即同一个类型的变量,在执行同一个方法时,表现出多种行为特征。【多态的类型】Java的引用变量,有两个类型编译时类型:有声明他...原创 2020-01-31 10:47:25 · 202 阅读 · 0 评论 -
【Java】 5.6 类的继承
目录Java的继承:实现代码复用的手段之一方法重写(Override,也叫覆盖):两同、两小、一大super限定调用父类构造器Java的继承:实现代码复用的手段之一一个类与另一个人类的关系 extends - 拓展而非继承 “is a” 从“一般到特殊”的关系(人 → 老师 → IT老师 → Java老师)//Java中子类继承父类的语法格式为修饰符 clas...原创 2020-01-30 11:33:23 · 201 阅读 · 0 评论 -
【Java】5.5 深入构造器
目录构造器构造器重载this的作用构造器构造器是一个特殊的方法,用来进行实例初始化的无需声明返回值类型,如果声明了返回值类型,他就变成了普通的方法 构造器的作用:构造器是用来初始化实例的属性,new是用来创建对象的 构造器重载 —— 完全类似于方法重载。 两同:同一个类,构造器名相同 一不同:形参不同 public class ConstructorTest...原创 2020-01-27 22:20:32 · 106 阅读 · 0 评论 -
【Java】5.4 隐藏和封装
目录一、封装二、封装的目的三、控制符的使用原则四、局部变量五、Java源程序的定义规则六、Java的常用包三大特征:封装、继承、多态================================================================一、封装——合理隐藏——合理暴露隐藏不想被外界操作的field,方法和构造器暴露一...原创 2020-01-27 16:52:52 · 239 阅读 · 0 评论 -
【Java】5.1 类和对象
目 录总诀:定义类,创建对象,调用方法成员变量(field):[修饰符]类型 变量名 [=初始值]方法定义:[修饰符] 返回值类型 方法名 (0~N个形参声明)构造器定义:初始化对象,创建对象用new局部变量:方法里的局部变量、形参、代码块里的局部变量this关键字总诀:定义类,创建对象,调用方法定义类:修饰符 class 类名{}类体 /...原创 2019-12-29 11:37:54 · 239 阅读 · 0 评论 -
【Java】5.2 方法详解
目录方法递归方法方法重载====================================================方法1.从语义定义的角度来看必须定义在类中,类.方法||实例.方法2.方法到底属于累还是属于对象:若有static修饰的方法,属于类本身,而不是属于实例(可以用类调用也可以用实例调用);若无static修饰的方法,属于实例(仅可以用实例...原创 2020-01-01 15:08:21 · 481 阅读 · 0 评论 -
【Java】5.3 成员变量和局部变量
目录成员变量局部变量static的标志变量:成员变量和局部变量成员变量:有static修饰:类变量,属于类本身无static修饰:实例变量,属于实例局部变量:方法块里的局部变量。仅在该方法内有效代码块里的局部变量。仅在代码块内有效形参。在整个方法内有效=============================================...原创 2020-01-08 21:20:56 · 180 阅读 · 0 评论