![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
文章平均质量分 92
Single_YAM
九和诸侯,一匡天下
展开
-
从源码解析TreeMap
上篇文章我们介绍了HashMap集合,这是一个键值对集合,可以高效的按照键查找数值。但是它有一个缺陷:数据如果是无序的可以是很高效的,但是如果数据需要排列有顺序就不适合了。本篇将要介绍的一个集合是树集键值对(TreeMap),它能够对数据按照键值有序的存储。 在介绍TreeMap之前,我们来了解一种数据结构:排序二叉树。相信学过数据结构的同学知道,这种结构的数据存储形式在查找的时候效率非原创 2017-03-02 19:52:12 · 412 阅读 · 0 评论 -
揭秘 HashMap 实现原理(Java 8)
HashMap 作为一种容器类型,无论你是否了解过其内部的实现原理,它的大名已经频频出现在各种互联网面试中了。从基本的使用角度来说,它很简单,但从其内部的实现来看(尤其是 Java 8 的改进以来),它又并非想象中那么容易。如果你一定要问了解其内部实现与否对于写程序究竟有多大影响,我不能给出一个确切的答案。但是作为一名合格程序员,对于这种遍地都在谈论的技术不应该不为所动。本篇文章主要从 jdk 1.原创 2017-12-07 09:14:19 · 265 阅读 · 0 评论 -
深入理解Java内部类
内部类就是定义在一个类中的另外一个类,是一种从属关系。在没有实际了解内部类之前,我始终困惑,为什么要在一个类中定义另外一个类,这不是增加代码结构复杂度么?现在才大致能知道这种设计的优势是大于其劣势的。比如,我们可以通过内部类解决类的单继承问题,外部类不能再继承的类可以交给内部类继承。我们可以通过定义内部类来实现一个类私属于一个类,实现更好的封装性。具体的我们接下来介绍,本文主要通过介绍内部类的四种不原创 2017-07-21 15:16:13 · 356 阅读 · 0 评论 -
深入理解Java常用类----String
Java中字符串的操作可谓是最常见的操作了,String这个类它封装了有关字符串操作的大部分方法,从构建一个字符串对象到对字符串的各种操作都封装在该类中,本篇我们通过阅读String类的源码来深入理解下这些字符串操作背后的原理。主要内容如下:繁杂的构造器属性状态的常用函数获取内部数值的常用函数比较大小的相关函数局部操作等常用函数一、繁杂的构造器 在学会操作字符串之前,我们应先原创 2017-05-13 21:19:07 · 345 阅读 · 0 评论 -
java基础之继承 (一)
虽然说java中的面向对象的概念不多,但是具体的细节还是值得大家学习研究,java中的继承实际上就是子类拥有父类所有的内容(除私有信息外),并对其进行扩展。下面是我的笔记,主要包含以下一些内容点:构造方法重写和重载final关键字new的背后(内存分析)理解方法调用一、构造方法 正如我们所知道的,构造方法的方法名与类名相同,主要的作用是实现对实例对象的初始化工作,实际上每个子类原创 2017-02-19 10:46:34 · 435 阅读 · 1 评论 -
java基础之继承(二)
上篇我们介绍了java中的构造方法,了解了关键字this和super在继承中所起到的作用,this可以显式调用重载的构造方法,super可以显式的调用父类中的任意可见方法。了解方法重载和重写的区别,知道了关键字final的作用,本篇将以一段代码介绍实例化对象时内存的状态。 如果你能看懂以下代码,那本篇你就不用浪费时间了。/*这是父类*/public class Base {原创 2017-02-19 14:57:59 · 534 阅读 · 0 评论 -
全面理解java异常机制
在理想状态下,程序会按照我们预想的步骤一步一步的执行,但是即使你是大V,你也不可避免出错,所以java为我们提供了异常机制。本文将会从以下几个方面介绍java中的异常机制:异常机制的层次结构异常的处理过程抛出异常捕获异常异常机制的实现细节一、异常机制的层次结构 在java程序设计语言中,所有的异常对象都是派生于Throwable类,一般情况下,如果java中内置的异常类不能原创 2017-02-22 17:13:15 · 322 阅读 · 0 评论 -
解析java泛型(一)
对于我们java中的泛型,可能很多人知道怎么使用并且使用的还不错,但是我认为想要恰到好处的使用泛型,还是需要深入的了解一下它的各种概念和内部原理。本文将尽可能的囊括java泛型中的重要的概念。主要内容如下:泛型的定义及为什么要使用泛型定义一个简单的泛型类定义一个简单的泛型方法类型参数的限定泛型内部实现的基本原理泛型通配符(难点)泛型的其他实现细节 一、何谓泛型 泛原创 2017-02-24 15:45:24 · 395 阅读 · 0 评论 -
解析java泛型(二)
上篇我们简单的介绍了java中泛型的最基本的内容,知道了什么是泛型以及泛型对我们的程序编写有什么好处,最后一类型限定收尾。本篇将从类型限定开始阐述java泛型中很重要的概念:通配符 一、何为通配符 首先我们看一段代码:/*我们声明了一个泛型方法*/public class Pair<T> { public static <T extends Double> void show原创 2017-02-24 23:18:03 · 325 阅读 · 0 评论 -
从源码看ArrayList
可能大家都知道,java中的ArrayList类,是一个泛型集合类,可以存储指定类型的数据集合,也知道可以使用get(index)方法通过索引来获取数据,或者使用for each 遍历输出集合中的内容,但是大家可能对其中的具体的方法是怎么实现的不大了解,本篇就将从jdk源码的角度看看什么是动态扩容数组(毕竟我们不应该停留在会用的层面上)。本篇主要从以下几个角度看看ArrayList:add及其重载原创 2017-02-26 14:34:10 · 521 阅读 · 0 评论 -
从源码解析LinkedList
上篇文章我们介绍了ArrayList类的基本的使用及其内部的一些方法的实现原理,但是这种集合类型虽然可以随机访问数据,但是如果需要删除中间的元素就需要移动一半的元素的位置,效率低下。并且它内部是用数组来实现的,数组要求连续的存储空间,当数据量大的时候就极耗内存。本篇我们介绍使用链表实现的集合LinkedList,这种类型不需要连续的存储空间,删除数据方便,但是不支持随机访问并且查找效率低下,几乎是A原创 2017-02-27 21:04:27 · 356 阅读 · 0 评论 -
从源码看HashMap
之前我们看过了两种类型的集合,ArrayList集合和LinkedList集合,两种集合各有优势,我们不具体说了,但是本篇要看的集合可以完成它们完成不了的任务。比如:现有一篇文章,要你统计其中出现了哪些单词,每个单词总共出现了几次。这个问题很明显需要记录两个变量(某单词及其出现次数),但是我们之前介绍的集合都只能同时存储一种类型的变量,无法实现对应的效果。 我们的HashMap又可以叫做原创 2017-03-01 20:28:04 · 383 阅读 · 0 评论 -
java 线程及synchronized关键字
从本篇开始,我们将会逐渐总结关于java并发这一块的内容,也可以理解为是我的笔记,主要来自于一些博客和java书籍中的内容,所有的内容都是来自于他们之中并且加上了我自己的理解和认识。 我们将会从以下的几点理解java线程的一些概念:线程的基本概念和优劣之处创建一个线程的两种方式线程的属性线程的状态synchronized可修饰的方法synchronized的重要特性 一原创 2017-03-07 17:20:34 · 372 阅读 · 0 评论 -
java 线程中断机制
上一篇文章我们了解过了java有关线程的基本概念,有线程的属性,线程可能处于的状态,还有线程的两种创建的方式,最后还说了一个关键字synchronized,解决了高并发导致数据内容不一致问题,本篇文章就介绍线程的中断机制。 首先我们需要知道,java中的每个对象都是有内部对象锁的,其实每个java对象不止包含一个内部对象锁,还包含了一个等待队列和一个条件队列。public synchro原创 2017-03-08 20:13:37 · 297 阅读 · 0 评论