Java
文章平均质量分 89
以Java基础为核心,提高你编写代码和对源码分析的能力,为后续的学习打下坚实的基础。
七月J
从事后端(做过前端),不断积累经验,学习新的技术。
展开
-
String.format()的详细用法
String.format() 的用法原创 2022-10-21 16:50:44 · 61148 阅读 · 3 评论 -
int和Integer有什么区别
面试中会问道int和Integer的区别,这里我们详细说一下Integer是int的包装类;int是基本数据类型。Integer变量必须实例化后才能使用;int变量不需要。Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值。Integer的默认值是null;int的默认值是0关于Integer和int的深入比较1、由于Integer变量实际上是对一个Integer对象的引用,所以两个通过new生成的Integer变量永.原创 2021-07-02 14:31:49 · 28158 阅读 · 3 评论 -
ConcurrentHashMap实现原理及源码分析
ConcurrentHashMap是Java并发包中提供的一个线程安全且高效的HashMap实现(若对HashMap的实现原理还不甚了解,可参考我的另一篇文章 HashMap实现原理及源码分析),ConcurrentHashMap在并发编程的场景中使用频率非常之高,本文就来分析下ConcurrentHashMap的实现原理,并对其实现原理进行分析。ConcurrentHashMap实现原理众所周知,哈希表是中非常高效,复杂度为O(1)的数据结构,在Java开发中,我们最常见到最频繁使用的就是HashMa转载 2020-12-09 20:04:01 · 247 阅读 · 0 评论 -
HashMap中对红黑树、CAS等知识的补充
一、红黑树1. 概念是一种自平衡二叉查找树,它是复杂的,但它的操作有着良好的最坏情况运行时间,并且在实践中是高效的:它可以在 O(logn)时间内做查找,插入和删除,这里的 {\displaystyle n} n是树中元素的数目。2. 图示3.红黑树的特性(1) 每个节点或者是黑色,或者是红色。(2) 根节点是黑色。(3) 每个叶子节点是黑色。 [注意:这里叶子节点,是指为空的叶子节点!](4) 如果一个节点是红色的,则它的子节点必须是黑色的。(5) 从一个节点到该节点的子孙节点的所有路原创 2020-07-05 09:12:12 · 1287 阅读 · 0 评论 -
Java JUC
Java JUC1 Java JUC简介在 Java 5.0 提供了 java.util.concurrent (简称 JUC )包,在此包中增加了在并发编程中很常用的实用工具类,用于定义类似于线程的自定义子系统,包括线程池、异步 IO 和轻量级任务框架。 提供可调的、灵活的线程池。还提供了设计用于多线程上下文中的 Collection 实现等。2 volatile 关键字-内存可见性2.1 内存可见性Java 内存模型规定,对于多个线程共享的变量,存储在主内存当中,每个线程都有自己独立的工作内存原创 2020-07-12 19:57:08 · 387 阅读 · 0 评论 -
Synchronized、Lock、ReentrantLock详解
一、synchronized的缺陷synchronized是java中的一个关键字,也就是说是java语言内置的特性。那么为什么会出现Lock呢?如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待,等待获取锁的线程释放锁,而这里获取锁的线程释放锁只会有两种情况:获取锁的线程执行完了该代码块,然后线程释放对锁的占有;线程执行发生异常,此时JVM会让线程自动释放锁。因此就需要有一种机制可以不让等待的线程一直无期限地等待下去(比如只等待原创 2020-07-07 09:43:13 · 1035 阅读 · 0 评论 -
JDK8新特性(Lambda、Stream、Optional)
1.Lambda表达式Lambda表达式的使用1.举例: (o1,o2) -> Integer.compare(o1,o2);2.格式:-> :lambda操作符 或 箭头操作符。->左边:lambda形参列表 (其实就是接口中的抽象方法的形参列表)。->右边:lambda体 (其实就是重写的抽象方法的方法体)。3.Lambda表达式的使用:(分为6种情况介绍)总结:->左边:lambda形参列表的参数类型可以省略(类型推断);如果lambda形参列表只有一个原创 2020-07-11 10:29:40 · 1172 阅读 · 0 评论 -
IO流详解
不理解的可以看我写的注释,非常详细!!File类1.File类的使用File类的一个对象,代表一个文件或一个文件目录(俗称:文件夹)File类声明在java.io包下。File类中涉及到关于文件或文件目录的创建、删除、重命名、修改时间、文件大小等方法,并未涉及到写入或读取文件内容的操作。如果需要读取或写入文件内容,必须使用IO流来完成。后续File类的对象常会作为参数传递到流的构造器中,指明读取或写入的"终点"。2.如何创建File类的实例1.如何创建File类的实例File(St原创 2020-07-07 08:31:43 · 1205 阅读 · 2 评论 -
泛型的使用与通配符
泛型的使用1.jdk1.5新特性泛型把元素的类型设计成一个参数,这个参数类型叫做泛型。2.为什么要使用泛型?类型无限制,类型不安全。类型强制转换时,容易出现异常。ClassCastException3.在集合中使用泛型集合接口或类在jdk5.0时都修改为带泛型的结构。在实例化集合类时,可以指明具体的泛型类型。指明完以后,在集合类或接口中凡是定义接口或类时,内部结构使用到类的泛型位置,都指定为实例化的泛型。泛型的类型必须是一个类。使用基本数据类型时,需要转换为包装类。如果实例化时,原创 2020-07-06 09:21:17 · 531 阅读 · 0 评论 -
集合框架(5):LinkHashMap | TreeMap | Properties | Collections工具类
目录五、LinkedHashMap底层实现原理六、TreeMap1. 自然排序2. 定制排序七、Properties八、Collections 工具类1. 工具类中常用的方法2. 代码演示五、LinkedHashMap底层实现原理HashMap中的内部类:Nodestatic class Node<K,V> implements Map.Entry<K,V> { final int hash; final K key; V value; Node<K,V>原创 2020-07-05 09:09:55 · 512 阅读 · 0 评论 -
集合框架(4):HashMap底层原理分析
Map接口继承树原创 2020-07-05 09:08:34 · 889 阅读 · 0 评论 -
集合框架(3):set | HashSet | LinkedHashSet | TreeSet的底层源码
目录一、Set练习题:在list内去除重复数据值。二、HashSet三、LinkHashSet四、TreeSet1.自然排序2.定制排序一、Set1.Set接口的框架结构:存储无顺序的,不可重复的数据。HashSet:作为set接口的主要实现类,线程不安全,可以存储null值。底层为数组+链表。LinkedHashSet:作为HashSet的子类。遍历其内部数据时,可以按照添加的顺序遍历。对于频繁遍历的操作,LinkedHashSet的效率高于HashSet。TreeSet:采用红黑树的存储原创 2020-07-04 08:26:39 · 679 阅读 · 0 评论 -
集合框架(2):List | ArrayList | LinkedList | Vector的底层源码
目录好了,我亲爱的读者朋友,以上就是本文的全部内容了!!!觉得有点用记得给我点赞哦!通过坚持不懈地学习,持续不断地输出,你的编程基本功算得上是突飞猛进。为了帮助更多的程序员,专注于分享有趣的 Java 技术编程和有益的程序人生。一开始,阅读量寥寥无几,关注人数更是少得可怜。但随自己的不断努力,阅读量和关注人都在猛烈攀升。绝对不容错过,期待与你的不期而遇。...原创 2020-07-04 08:23:34 · 634 阅读 · 0 评论 -
集合框架(1):Collection | Iterator | 增强for
ArrayList和LinkedList比较原创 2020-07-04 08:21:55 · 399 阅读 · 0 评论 -
常用类String、时间日期类
七,常用类1.String1)String内存解析[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A3GHmZwk-1598586863526)(E:\Typora笔记\images/QQ截图20200624101555.png)]2)String的使用/* String:字符串,使用一对 "" 引起来表示。 1.String声明为final的,不可被继承 2.String实现了Serializable接口:表示字符串是支持序列化的。原创 2020-08-30 10:34:06 · 1500 阅读 · 0 评论 -
多线程(2/2)
主要包括:单例模式之懒汉式,死锁问题,Lock锁方式解决线程安全问题,线程的通信,实现Callable接口,线程池原创 2020-07-02 11:51:20 · 1177 阅读 · 0 评论 -
多线程(1/2)
主要介绍了程序、线程、进程,单核cpu和多核cpu,继承Thread类,实现Runnerable接口,线程的生命周期,线程的同步原创 2020-07-02 10:09:17 · 898 阅读 · 0 评论 -
面向对象(3/3)抽象类,接口、内部类、代码块
5.java.lang.Object1.Object类是所有java类的根父类2.如果在类的声明中未使用extends关键字指明其父类,默认类的父类为java.lang.Object类。3.Object类中的功能(属性,方法)具有通用性。属性:无。方法:equals()/toString()/getClass()获取当前对象的所属类/hashCode()/clone()克隆/finalize()垃圾回收wait()/notify()/notifyAll()4.Object类只声明了一个空参构造原创 2020-08-27 19:54:51 · 565 阅读 · 0 评论 -
面向对象(2/3)封装性、继承性、多态性
2.面向对象特征一:封装性封装和隐藏:特点:高内聚:类的内部数据操作细节自己完成,不允许外部干涉。低耦合:仅仅对外暴漏少量方法用于使用。体现:私有化属性,设置公有的方法来获取和设置属性。需要权限修饰符来配合。隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性、可维护性。通俗的说,把该隐藏的隐藏起来,该暴露的暴露出来。这就是封装性的设计思想权限修饰符:修饰符类内部同一个包不同包的子类同一工程privateyes缺省ye原创 2020-08-27 13:46:32 · 903 阅读 · 0 评论 -
面向对象(1/3)类和对象
面向过程(POP)与面向对象(OOP)二者都是一种思想,面向对象是相对于面向过程而言的。面向过程,强调的是功能行为,以函数为最小单位,考虑怎么做。面向对象,将功能封装进对象,强调具备了功能的对象,以类/对象为最小单位,考虑谁来做。面向对象更加强调运用人类在日常的思维逻辑中采用的思想方法与原则,如抽象、分类、继承、聚合、多态等。面向对象学习的三条主线:1.Java类及类的成员:属性、方法、构造器;代码块、内部类2.面向对象的三大特征:封装性、继承性、多态性、(抽象性)3.其他关键字:this、su原创 2020-08-27 12:35:02 · 366 阅读 · 0 评论 -
一维数组 | 二维数组 | 内存解析
好了,我亲爱的读者朋友,以上就是本文的全部内容了!!!觉得有点用记得给我点赞哦!通过坚持不懈地学习,持续不断地输出,你的编程基本功算得上是突飞猛进。为了帮助更多的程序员,专注于分享有趣的 Java 技术编程和有益的程序人生。一开始,阅读量寥寥无几,关注人数更是少得可怜。但随自己的不断努力,阅读量和关注人都在猛烈攀升。绝对不容错过,期待与你的不期而遇。...原创 2020-07-01 11:23:40 · 783 阅读 · 1 评论 -
Java基本语法
主要介绍了Java的关键字与保留字,标识符,变量的定义。运算符 和 流程控制(顺序结构,分支结构,循环结构)break关键字,continue关键字原创 2020-06-30 21:09:58 · 799 阅读 · 0 评论