Java进阶
文章平均质量分 60
夏至青柠
愿星河徜徉,一路有光
展开
-
注解的深入探究
一、概念 说明程序的。给计算机看的注释:用文字描述程序的。给程序员看的定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。概念描述: JDK1.5之后的新特性 说明程序的 使用注解:@注解名称作用分类: &n原创 2022-01-04 17:56:12 · 482 阅读 · 0 评论 -
深入理解Java反射机制
一、Java反射定义反射即反向探知,有点像考古学家根据发掘的物品来探知以前的事情指在Java程序运行状态中,对于给定的一个类(Class)对象,可以获得这个类(Class)对象的所有属性和方法;对于给定的一个对象(new XXXClassName<? extends Object>),都能够调用它的任意一个属性和方法.这种动态获取类的内容以及动态调用对象的方法和获取属性的机制.就叫做JAVA的反射机制如下案例package com.example.demo;public原创 2022-01-03 22:35:57 · 516 阅读 · 0 评论 -
泛型的具体使用
泛型跟我们的成员属性一样,需要先声明才能使用.泛型的声明采用 <> 进行声明.声明一般约定采用单个大写字母表示.常用的有 K E T V 等等字符错误的案例:正确案例泛型类泛型类一般指泛型的定义与类名一起.在创建实体对象时,指定泛型的类型普通Person类:public class Person { private String idCard; public Person(String idCard) { this.idCard = i原创 2022-01-02 20:32:11 · 633 阅读 · 0 评论 -
泛型通配符介绍
一个简单的基本数据类型类图无边界通配符? 通配符理解我们知道ArrayList 是典型的泛型类,可以限制存储的元素的元素类型。ArrayList< String>指定存入的元素时string类型ArrayList< Integer>指定存储元素为Integer类型但是如果只有我们在使用的时候才能明确知道存入类型时,就可以使用ArrayList<?> 来表示通用的类型.public static void main(String[] args) {原创 2022-01-02 16:35:55 · 163 阅读 · 0 评论 -
窥探Java心法-泛型
泛型(泛:广泛)—> 广泛的数据类型 将某一个类/接口/方法/变量的数据类型象使用参数一样传递给类/接口/方法/变量。 数据类型的参数化,任意化没有使用泛型的情况/** * 没有使用泛型的情况 * @param args */public static void main(String[] args) { List list = new ArrayList(); list.add(1); list.add(3); list.add("hell原创 2021-12-16 20:29:46 · 736 阅读 · 0 评论 -
深入浅出源码探究HashMap
HashMapHashMap的底层数据结构Jdk1.7及以前是采用数组+链表Jdk1.8之后采用数组+链表 或者 数组+红黑树方式进行元素的存储存储在hashMap集合中的元素都将是一个Map.Entry的内部接口的实现当数组的下标位是链表时,此时存储在该下标位置的内容将是Map.Entry的一个实现Node内部类对象当数组的下标位是红黑树时,此时存储在该下标位置的内容将是Map.Entry的一个实现TreeNode内部类对象比较重要的属性/** * The default in原创 2021-12-16 00:30:06 · 1075 阅读 · 0 评论 -
深入浅出源码探究TreeMap
Map接口Map集合的特点能够存储唯一的列的数据(唯一,不可重复) Set能够存储可以重复的数据(可重复) List值的顺序取决于键的顺序键和值都是可以存储null元素的TreeMap TreeMap底层的实现原理是红黑树,所以要搞清楚TreeMap的底层原理,前提条件就必须要搞清楚红黑树的原理红黑树原理类图结构定义TreeMap 无参构造TreeMap map = new TreeMap();源码 public TreeMap() { comparat原创 2021-12-14 22:48:13 · 417 阅读 · 0 评论 -
数据存储核心之LinkedList源码探究
类图结构 LinkedList是通过双向链表去实现的,他的数据结构具有双向链表结构的优缺点 既然是双向链表,那么它的顺序访问会非常高效,而随机访问效率比较低。 它包含一个非常重要的私有的静态内部类:Node。privat原创 2021-12-13 22:21:08 · 539 阅读 · 1 评论 -
并发场景下的FailFast机制详解
FailFast机制快速失败机制,是java集合类应对并发访问在对集合进行迭代过程中,内部对象结构发生变化一种防护措施.这种错误检测的机制为这种有可能发生错误,通过抛出java.util.ConcurrentModificationExceptionpackage com.gupao.arraylist;import java.util.Iterator;import java.util.List;public class ThreadIterate extends Thread {原创 2021-12-13 21:35:10 · 483 阅读 · 1 评论 -
从源码学习HashSet和TreeSet
HashSet 概述此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。HashSet hashSet=new HashSet();展示源码 /** * Constructs a new, empty set; the backing <tt>HashMap</tt> instance has * default initial capa原创 2021-12-12 22:13:08 · 385 阅读 · 0 评论 -
将集合转换为线程安全的对象
Collections工具类可以将List接口中线程不安全的工具类转换为线程安全的对象Collections工具类跟Vector相比,Collections的代码灵活度更好,性能更好Collections工具类同步代码本质如下 public E get(int index) { synchronized (mutex) {return list.get(index);} } public E set(int index, E element)原创 2021-12-12 20:49:50 · 2751 阅读 · 0 评论 -
为什么不推荐使用Vector
Vector的底层与ArrayList类似.都是以动态数组的方式进行对象的存储Vector与ArrayList的区别在于Vector是线程同步操作安全的Vector的并发安全保证看Vector的源码(如下)发现很多对外的方法都用Synchronized关键字进行修饰所以通过vector进行操作性能并不高,因此慢慢被放弃public synchronized void addElement(E obj) { modCount++; ensureCapacityHelper(eleme原创 2021-12-12 20:18:56 · 3801 阅读 · 0 评论 -
集合类图结构
1.集合类图结构2. Collection接口介绍3. Map接口介绍4.两大派系相互之间的关系HashSet本质上是一个HashMapTreeSet本质上是一个NavigableMap原创 2021-12-08 21:55:22 · 207 阅读 · 0 评论 -
数据存储核心之ArrayList源码探究
从ArrayList类图结构到源码分析,从源码角度学习ArrayList。探究扩容机制实现原理及深入学习各方法的实现!原创 2021-12-08 00:00:18 · 254 阅读 · 0 评论 -
数据存储容器核心之数据结构
一、数组二、链表单向链表和双向链表三、树二叉树红黑树原创 2021-12-06 22:23:19 · 595 阅读 · 0 评论