Java
文章平均质量分 82
Airsaid
“改变世界的不是技术,是技术背后的梦想和责任。”
展开
-
详解 Java 泛型(Generic)机制
泛型可以指定类型变量,从而让代码可以对不同类型的对象进行重用。以及,还可以让编译器更好的了解类型,从而避免强制类型转换,提升代码的安全性。原创 2022-11-08 15:57:24 · 1202 阅读 · 0 评论 -
Java 位运算系列之通过位运算操作状态
回顾首先来回顾一下这些运算: - &(与运算):只有当两方都为 true 时,结果才是 true,否则为 false。 - |(或运算):只要当一方为 true 时,结果就是 true,否则为 false。 - ^(异或运算):只要两方不同,结果就是 true,否则为 false。以 true、false 为例:true & true = truetrue & false原创 2017-12-21 11:50:11 · 4480 阅读 · 2 评论 -
Java 集合体系之 AbstractMap 源码分析
AbstractMap 是一个实现了 Map 接口的抽象类,该类提供了 Map 接口的骨架实现,以最大限度的减少实现此接口所带来的工作量。原创 2016-04-18 11:49:14 · 2841 阅读 · 0 评论 -
Java 集合体系之 Map 源码分析
大家好,在之前的文章中,我们分析了 List 接口下的实现类 ArrayList 和 LinkedList 的源码。但是其中还有一个实现类 Vector 并没有说到,该类的实现与 ArrayList 基本相同,都是采用数组实现,区别就是其中的大量方法,如 add()、get() 等都是采用 synchronized 进行修饰,保证了线程安全。而 ArrayList 我们之前就分析过了,所以这里就不对 Vector 进原创 2016-04-05 17:44:15 · 2176 阅读 · 0 评论 -
Java 集合体系之 LinkedList 源码分析
前言在上一篇文章中我们分析了 ArrayList 的源码,知道了原来 ArrayList 内部是由数组来维护的。这篇文章再来分析分析 LinkedList 的源码。为了看起来方便,这篇会对源码进行拆分分析。分析之前,先来大概了解下 LinkedList。LinkedList 的继承结构如下:LinkedList 是 List 和 Deque 接口的双向链表实现。实现了所有可原创 2016-03-01 14:35:02 · 2165 阅读 · 0 评论 -
Java 集合体系之 ArrayList 源码分析
前言ArrayList 的底层我们都知道,是通过数组来实现的,那么其内部又是如何做到可动态扩展的呢?下面就来扒开源码一探究竟。源码分析直接上代码,注释写的很清晰了已经:public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.原创 2016-02-25 13:25:36 · 4213 阅读 · 0 评论 -
Java 8 之接口中的默认方法与静态方法
在 Java 8 中,接口引入了一些新的语言特性:默认方法(Default Methods)以及静态方法(Static Methods)。本篇文章就来了解下这两个特性。原创 2016-03-30 17:30:55 · 2968 阅读 · 1 评论 -
Integer 和 int 的比较
## 前言在 Java 中有两种类型,分别为:> 基本数据类型:存储的是数据本身。> 引用数据类型:存储的是数据在内存地址中的引用。## Integer 和 int 的区别Integer 和 int 的定义分别如下:```javaint i = 10;Integer i1 = 10;// 实际等于:Integer i1 = Integer.valueOf(10)原创 2016-01-07 15:53:45 · 3121 阅读 · 0 评论 -
JVM 内存基础概念之程序计数器与 Java 虚拟机栈和本地方法栈
前言在上篇文章中,我们了解到 JVM 运行时数据区有五个区域,分别是:程序计数器、Java 虚拟机栈、本地方法栈、Java 堆、方法区。在这篇文章中,我们就来了解下程序计数器与 Java 虚拟机栈和本地方法栈。程序计数器程序计数器(Program Counter Register)区域是所有 Java 运行时数据区中最小的一块,它是一块很小的内存空间,它的作用可以看作是当前原创 2016-02-01 17:10:51 · 3682 阅读 · 0 评论 -
JVM 内存基础概念之 Java 堆
前言在上篇文章中,我们了解了 Java 虚拟机栈、本地方法栈 以及 程序计数器。这篇再来了解下 Java 堆。Java 堆Java 堆是被所有线程所共享的一块区域,在 Java 虚拟机创建的时候创建,在 Java 虚拟机退出的时候销毁。通常情况下,Java 堆是 Java 虚拟机中最大的一块内存区域。其作用就是作为 Java 对象的主要存储区域。在《Ja原创 2016-02-14 17:11:52 · 1534 阅读 · 1 评论 -
JVM 内存基础概念之初识虚拟机与 Java 虚拟机运行时数据区
什么是虚拟机?什么是 Java 虚拟机?虚拟机:是值模拟某种计算机体系结构,执行特定指令集的软件。提起虚拟机,可能大家第一印象是 Virtual Box、VMware 等系统虚拟机。但是 JVM 并不属于系统虚拟机,而是属于进程虚拟机。进程虚拟机:进程虚拟机并不会完整的模拟一个操作系统的运行环境,而仅仅提供特定指令集的运行环境。Java 虚拟机就属于进程虚拟机。除了 JVM 之外,还有 A原创 2016-01-26 17:23:27 · 4337 阅读 · 1 评论 -
JVM 内存基础概念之 方法区和运行时常量池
方法区和运行时常量池方法区方法区和 Java 堆一样,是被所有线程所共享的一块内存区域。 方法区的作用是存储已经被 JVM 加载到方法区之中的 Java 类的类型信息。 前面我们多次提到了类的实例数据和类型数据,实例数据指的是在类中定义的各种实例对象以及它们的值。 类信息值的是定义在类中的常量、静态变量、以及类中所申明的各种方法、字段等等。还包括了即时编辑器编译之后产生的代码数据。原创 2016-02-23 16:28:03 · 2997 阅读 · 0 评论 -
== 和 eqalus() 的区别
前言“请说说 == 和 equals() 的区别?“ 相信大家伙对这句话肯定很熟了,这是一道经典的面试题。 今天这篇文章咱们就来刨析一下其中的区别,首先来了解下这两个分别是作什么用的。== 的作用分为两种情况: 1,基础数据类型中:用于比较两个变量的值是否相等。 2,引用数据类型中:用于比较两个对象的地址值是否相等。equals() 的作用equals() 在 Object 类中的默认实现作用是:用于比较两个对象是否相同。 equals() 方法在超类也就是 Object 中的实现如下原创 2016-01-20 15:26:09 · 2154 阅读 · 0 评论 -
String.intern() 方法解析
最近在网上看到一个很有意思的题目,如下:String s1 = new StringBuilder("Air").append("said").toString();System.out.println(s1.intern() == s1);// 在 JDK 1.6 或之前返回 false, 1.7 或以后返回 trueString s2 = new StringBuilder("Airsaid2原创 2016-03-29 18:01:03 · 869 阅读 · 0 评论