
java常用类用法
_小鱼塘
理工男,程序员
展开
-
String.format格式化浮点数保留指定小数位输出字符串
String.format格式化浮点数保留指定小数位输出字符串原创 2023-08-21 13:44:37 · 575 阅读 · 0 评论 -
JAVA语言中的代理模式
JAVA语言中的代理模式原创 2023-04-13 20:04:07 · 591 阅读 · 0 评论 -
泛型与反射机制
JAVA语言中的泛型与反射机制原创 2023-04-13 19:46:40 · 673 阅读 · 0 评论 -
Executor框架简介
核心接口Executor和ExecutorService接口。在Executor框架中有两个核心类实现了ExecutorService接口,ThreadPoolExecutor和ScheduledThreadPoolExecutor。线程被一对一映射为服务所在操作系统线程,启动时会创建一个操作系统线程;:核心接口:Runnable、Callable接口和接口实现类;Executor框架包含的核心接口和主要的实现类。:接口Future和实现类FutureTask;原创 2023-04-13 10:13:45 · 533 阅读 · 0 评论 -
Java中的日期时间
一、JDK8之前的日期时间1System.currentTimeMillis()java.lang.System中的static long currentTimeMillis() 返回当前时间与1970年1月1日00:00:00之间的时间差(以毫秒为单位)。适用于计算时间差。(时间戳)long currentTimeMillis = System.currentTimeMillis();System.out.println(currentTimeMillis);System.out...原创 2021-05-06 17:02:20 · 1003 阅读 · 0 评论 -
Gson使用过程中遇到的一个大坑
问题描述:之前一致使用fastJson,但是公司项目中统一使用Gson,在使用Gson对json文件中追加新的item的时候,基本思路是先把json转成map,然后把新增的item list put到map中去,然后再map转Json;但是对比前后的json文件发现,原本以10结尾的后面多了.0,有的甚至变成了科学计数法,譬如10000000---》1.0E+7;反复调查确认后数据本身没有问题,就开始怀疑是不是json转map再转json的过程中出了问题;问题分析:百度谷歌一段搜索.原创 2021-04-25 17:00:56 · 892 阅读 · 0 评论 -
java遍历map的几种方式
java中所有的map都实现了Map接口,因此所有的Map(如HashMap, TreeMap, LinkedHashMap, Hashtable等)都可以用以下的方式去遍历;先准备一些必要的数据:User zs=new User("zhangsan","zhangsan");User ls=new User("lisi","lisi");User ww=new User("wangwu","wangwu");Map<String,User> map=new HashMap<原创 2021-04-25 15:44:59 · 2166 阅读 · 0 评论 -
利用ToStringBuilder重写toString方法
实体类的toString()方法使用的是简单的"+",每"+"一个就会new 一个String对象,这样如果系统内存小的话,会爆内存(实体比较多的情况下);但是使用ToStringBuile 就可以避免爆内存这种问题:@Overridepublic String toString() { return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE);}使用ToStri...原创 2021-02-18 10:52:49 · 332 阅读 · 0 评论 -
面试中关于线程源码相关的面试题
关于线程方面的面试题,大部分都是概念题,我们需要大概的清楚这些概念,和面试官达成共识即可;1 创建子线程时,子线程是得不到父线程的 ThreadLocal,有什么办法可以解决这个问题?可使用 InheritableThreadLocal 来代替 ThreadLocal,ThreadLocal 和 InheritableThreadLocal 都是线程的属性,可以做到线程间的数据隔离,在多线...原创 2020-02-10 12:00:40 · 177 阅读 · 0 评论 -
java常用类-- Future、FutureTask源码解析
一、整体说明通常情况下,我们通过extendsThread 或者implementsRunnable接口来创建线程,线程没有返回值;那如何创建有返回值的线程呢?先来看一个简单的demo:// 首先我们创建了一个线程池ThreadPoolExecutor executor = new ThreadPoolExecutor(3, 3, 0L, TimeUnit.MILLISEC...原创 2020-02-10 12:00:19 · 385 阅读 · 0 评论 -
java常用类--Thread源码解析
一、基本概念从Thread类注释上可以看出,Java虚拟机允许多个线程同时运行,线程有优先级,优先级高的线程可能会先执行,每个线程都有名字,如果在初始化的时候没有指定名称,则会自动生成一个名字;线程的状态在 Java 源码中列举出的 6 种状态:每一种状态的具体含义如下:NEW 表示线程创建成功,但没有运行,在 new Thread 之后,没有 start 之前,线程的状态...原创 2020-02-10 12:00:19 · 556 阅读 · 0 评论 -
java常用类--DelayQueue
DelayQueue,顾名思义,延迟队列,可以设置延迟多久执行,从类注释上可以得到以下有用信息:队列元素将在过期时被执行,越靠近对头,越早过期 未过期的元素不能被take 不允许空元素一、类图说明public class DelayQueue<E extends Delayed> extends AbstractQueue<E> implements...原创 2020-01-21 09:09:45 · 232 阅读 · 0 评论 -
java常用类--SynchronousQueue
SynchronousQueue是一种比较独特的队列,从类注释上可以获取一下有用的信息:队列不存储数据,所以没有大小,也无法进行迭代; 插入操作的返回必须等待另一个线程完成对应数据的删除操作,反之亦然; 该队列由两种数据结构组成,即先入先出的队列和后入先出的栈; 在初始化的时候,是可以选择使用队列或者栈的,默认是栈;一、结构细节与其他队列完全不同,由两种数据结构组成,即先入先出的队...原创 2020-01-21 09:09:30 · 457 阅读 · 0 评论 -
Java编码辅助工具:Lombok
实际工作开发中,经常会涉及到一些调整很少但又必不可少的环节,比如实体类的Getter/Setter方法,ToString方法等。这时可以使用Lombok来避免这种重复的操作,减少非核心代码的臃肿,提高编码效率一、如何在IntelliJ IDEA中引入Lombok安装Lombok 插件(否则在调用setter/getter方法时IDE会提示报错): File -> Settings -...原创 2020-01-16 09:03:30 · 200 阅读 · 0 评论 -
Java虚拟机之类加载器
类加载机制是指虚拟机将描述类的数据从class文件加载到内存中,并进行数据验证、解析、初始化等过程,最终形成可以直接被虚拟机使用的java类型,java语言中类的加载、链接、初始化等过程并不是在编译时期完成,而是在运行时期进行的好处在于为语言提供了动态扩展的特性,坏处在于增加了性能的开销;一、类加载过程类在jvm中的整个生命周期包括:加载loading--->验证verifi...原创 2020-01-10 22:14:19 · 198 阅读 · 0 评论 -
java常用类--LinkedBlockingQueue链表阻塞队列
说到队列,很多人会认为没用用过,其实我们平时用到的线程池,读写锁,消息队列等,底层都是队列,学好队列,对深入学习java是非常必要和重要的;一、整体架构首先来看一下LinkedBlockingQueue链表阻塞队列的类图:从继承角度来看:AbstractQueue-->AbstractCollection-->Collection-->Iterable从实现接...原创 2020-01-09 19:34:59 · 303 阅读 · 0 评论 -
面试中关于并发List,Map相关的问题
线程安全的List,Map相关的问题是面试过程中的难点,需要结合源码仔细琢磨,理解其本质一、CopyOnWriteArrayList相关的1 与ArrayList的差异?相同点:底层的数据结构一样,都是数组,都是基于对数组结构进行操作不同点:ArrayList线程不安全,CopyOnWriteArrayList线程安全;2CopyOnWriteArrayList通过哪些手段实...原创 2020-01-06 19:59:10 · 251 阅读 · 0 评论 -
java常用类--ConcurrentHashMap
在多线程情况下,如果使用Map,第一个想到的就是ConcurrentHashMap;一、putConcurrentHashMap在put方法上整体思路与HashMap相同,但是在线程安全方面,通过数组初始化线程安全,新增槽点值的线程安全和扩容时的线程安全等来保障线程安全;public V put(K key, V value) { return putVal(key,...原创 2020-01-06 20:00:10 · 399 阅读 · 0 评论 -
java常用类--CopyOnWriteArrayList
之前学习ArrayList的时候就知道,如果把ArrayList作为共享变量的话,由于ArrayList不是线程安全的,此时就需要自己去加锁或Collections.synchronizedList()来实现,其实,Java还提供了另外一种线程安全的List,即CopyOnWriteArrayList;CopyOnWriteArrayList其本质:通过锁+数组拷贝+volatile关键字保证...原创 2020-01-06 19:59:56 · 255 阅读 · 0 评论 -
java常用类---集合类Collection学习汇总
最近一直在看集合相关类的源代码,在此统一梳理下:List:ArrayList:java常用类---ArrayList 源码分析及用法 LinkedList:java常用类---LinkedList 源码分析及用法Map:HashMap:java常用类---HashMap 源码分析及用法 TreeMap :java常用类---TreeMap源码分析及用法 LinkedHa...原创 2019-11-06 19:21:53 · 167 阅读 · 0 评论 -
java常用类---HashSet和TreeSet源码分析及用法
HashSet是在HashMap的基础上封装起来的,TreeSet是在TreeMap的基础上封装起来的;一、HashSet相关在Java中,要基于基础类进行创新,一般有两种方式:第一种:继承基础类;第二种:组合基础类,通过调用基础类的方法,复用基础类的能力;HashSet通过把HashMap作为局部变量,即组合基础类的方式进行封装,源代码如下:private transi...原创 2019-11-06 19:21:33 · 169 阅读 · 0 评论 -
面试中关于Map相关的问题
面试中涉及到Map,主要以以HashMap为主;1 HashMap底层数据结构?HashMap是key-value键值对形式,底层的数据结构为数组+链表+红黑树的组合结构,默认初始化大小为16,加载因子0.75,数组主要是为了方便快速查找,数组的下标即索引值是根据key的hashcode计算出来的,数组元素一般称之为Node,当多个key的hashcode一致,为了避免hashcode冲突...原创 2019-11-06 12:53:32 · 326 阅读 · 1 评论 -
java常用类---LinkedHashMap源码分析及用法
LinkedHashMap本身继承了HashMap,除了HashMap的特点,有两个特性:按照 插入顺序进行访问 实现了访问最少最先删除一、按照 插入顺序进行访问与HashMap相比,新增了如下属性:// 链表头transient LinkedHashMap.Entry<K,V> head;// 链表尾transient LinkedHashMap.Entry&...原创 2019-11-06 08:59:01 · 188 阅读 · 1 评论 -
java常用类---TreeMap源码分析及用法
TreeMap底层数据结构就是红黑树,与HashMap不同的是,TreeMap利用红黑树左小右大的特点,根据key进行排序,适用于key需要排序的场景;一、两种自定义排序在写此篇文章的时候,查询了很多博客,都涉及到treeMap的排序问题,因为首先要了解treeMap,就要具备基本的日常工作中的排序规则和实现方式:即分别通过Comparable和Comparator实现自定义排序;p...原创 2019-11-05 13:31:15 · 175 阅读 · 0 评论 -
java常用类---HashMap 源码分析及用法
一、整体架构HashMap从本质上来说,采用的是key--value的形式存取元素,底层实现为数组+链表+红黑树,初始容量是16,增长因子为0.75,非线程安全,允许null值;常见属性://初始容量为 16 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; //最大容量 static final int M...原创 2019-11-05 13:31:08 · 451 阅读 · 0 评论 -
java常用类---LinkedList 源码分析及用法
一 、整体理解LinkedList底层是一个双向链表;链表中的每个节点都可以向前后者向后追溯;双向链表结构如下图所示:有几个重要的概念需要注意:first是双向链表的头结点,last是双向链表的尾节点;当链表中没有数据时,first和last节点都指向同一个节点,即null;链表中的每个节点叫做node,每个node有prev属性和next属性;private sta...原创 2019-11-04 19:35:44 · 166 阅读 · 0 评论 -
java常用类---ArrayList 源码分析及用法
整体理解ArrayList就是一个数组结构;允许null值,非线程安全;常用的属性除了index和elementData外,下面几个也需要特别注意:private static final int DEFAULT_CAPACITY = 10;private int size;transient Object[] elementData; // non-private to sim...原创 2019-10-10 21:28:29 · 199 阅读 · 0 评论 -
java常用类---Objects工具类
位于java.util包下,最常用的两个场景就是相等判断和非空判断;包含以下方法:与 Object 类的区别:Object是 Java 中所有类的基类,位于java.lang包;Objects是 Object 的工具类,位于java.util包,由一些静态的实用方法组成,这些方法是null-save(空指针安全的)或null-tolerant(容忍空指针的),用于计算对...原创 2019-10-09 18:14:41 · 960 阅读 · 0 评论 -
java常用类---Collections源码解析及常用方法使用
位于java.util包下,主要为了方便使用集合类而产生的工具类;也提供了sort()和binarySearch()方法,其中sort方法底层就是调用Arrays.sort()方法,binarySearch()方法重写了二分查找算法,其逻辑与Arrays.binarySearch()本质上没有差别;它提供了一系列内部类集合,主要为以下类型:不可变集合 线程安全的集合 有类型检查的集...原创 2019-10-02 10:55:03 · 292 阅读 · 0 评论 -
java常用类--Arrays工具类
位于java.util包下,包含用于操作数组的各种方法(搜索,排序等);1、数组与集合的转换 :Arrays.asList()public class ArraysDemo { public static void main(String[] args) { String [] nameStrings= {"Larry", "Moe", "Curly"}; List<St...原创 2019-09-18 21:56:50 · 183 阅读 · 0 评论 -
java常用关键字总结
Java中的关键字很多,本文选取常用的几个进行学习总结;static一、基本概念静态,全局的,一旦被修饰,说明被修饰的东西在一定范围内是共享的,这时候要注意并发读写问题;可以用来修饰类变量,方法,代码块;1、static修饰类变量----类属性(静态属性)static修饰的类变量无需初始化,通过 类名.变量 直接访问;这时候要注意线程安全问题;当多个线程对共享变量进行读...原创 2019-09-18 16:28:27 · 419 阅读 · 0 评论 -
java常用类--包装类
一、 基本概念基本数据类型我们都很熟悉,但基本数据类型不具备对象的特征,不能调用方法,一般能实现的功能比较简单,为了让基本数据类型具备对象的特性,Java为每个基本数据类型提供了一个包装类,进而像操作对象一样,操作这些基本数据类型了;包装类均位于java.lang包;为了使用方便,Java中将8种基本数据类型进行了封装:除了Integer和Character类,其它六个类的类名和基本数据类...原创 2019-09-18 14:03:42 · 190 阅读 · 0 评论 -
java常用类--String
String类代表字符串,Java中的所有字符串(例如"abc")都为此类的实例;String类包括用于检查序列的各个字符的方法,用于比较、搜索字符串,提取子字符串以及创建将所有字符转换为大写或小写的字符串的副本; Java为字符串连接运算符(+)提供特殊支持,并为其他对象转换为字符串;字符串连接是通过StringBuilder(或StringBuffer)类及其append方法实现...原创 2019-09-17 21:10:48 · 190 阅读 · 0 评论