自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 LinkedList源码剖析及理解

LinkedList 源码剖析 基于jdk1.7 一、继承关系 public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.Serializable 实现了List接口、Deque接口、Cloneable接口和Serializable接口,所以LinkedList可以实现克隆,序列化,

2020-11-15 23:11:15 73

原创 ArrayList源码分析

ArrayList源码分析 基于JDK1.7 一、继承关系 public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable public abstract class AbstractList<E> extends AbstractCollection<E> i

2020-11-12 20:24:13 56

原创 Java的可重入锁(ReentrantLock)

可重入锁(ReentrantLock) 介绍ReentrantLock类就需要讲到AQS(AbstractQueuedSynchronizer,抽象队列同步器)了,因为ReentrantLock内部加锁操作的实现是调用的内部类Sync及其子类NonfairSync和FairSync的lock()方法,而Sync是直接继承的AbstractQueuedSynchronizer类。 以下是ReentrantLock的lock()方法的源码和内部类Sync的继承关系: public void lock() {

2020-11-09 23:00:19 78

原创 String、StringBuilder和StringBuffer的区别

String、StringBuilder和StringBuffer的区别 1. 可变性 String 不可变 StringBuffer 和 StringBuilder 可变 2. 线程安全 String 不可变,因此是线程安全的 StringBuilder 不是线程安全的 StringBuffer 是线程安全的,内部使用 synchronized 进行同步 String 查看String类的继承关系: public final class String implements java.io.

2020-11-08 20:36:05 99 2

原创 Java的类加载顺序

Java的类加载顺序 单的类的加载顺序 测试在没有明确声明继承类的时候的加载顺序。 代码如下: class People { static int b = loadStatic(); int a = load(); static { System.out.println("静态代码块"); } { System.out.println("实例代码块"); } public People() { Sys

2020-11-07 17:54:51 58

原创 Java的基本特性

面向对象 面向对象和面向过程的区别 面向过程主要是把问题分解成不同的步骤,然后把各个步骤转换成方法,最后根据步骤调用相应的方法,它更加强调过程 面向对象会把问题分解成各个对象,然后各个对象之间进行交互,每个对象内部进行了封装 通过不同对象之间方法的调用来完成一个项目或者是解决一个问题(但是这样直接在调用方里面创建对象会造成代码耦合度过高) 面向过程注重过程,面向对象注重对象之间的交互。面向对象将复杂的事情简单化,我们从行动者变成了指挥者。面向对象开发就是去创建对象,指挥对象做事情。 跨平台 Java的跨平台

2020-11-06 21:35:41 129 2

原创 Windows 10下载安装Java

Windows 10下载安装Java Java是一门面向对象编程语言,吸收了C++语言的各种优点,同时也摒弃掉了C++难以理解的一些概念。因此Java语言具有简单这个特征。 Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。 Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等 。 1. 下载JDK JDK全称是Jav

2020-11-05 20:35:13 1180

原创 判断一个序列是否是另外一个序列的出栈序列(java实现)

判断一个序列是否是另外一个序列的出栈序列 在各种刷题网站上刷题时,如果刷的是单选题的话,常常会遇到这样一个问题: 如果进栈序列为1,2,3,4,则可能的出栈序列是() 注:一个元素进栈后可以马上出栈,不用等全部进栈 正确答案: B C A.3,1,4,2 B.2,4,3,1 C.2,3,4,1 D.任意顺序都有可能 如果单纯的做选择题的话,是挺简单的,一个选项一个选项的对比,观察是否能够通过进栈序...

2019-12-07 22:32:24 249 1

原创 常见的七种排序方式(java实现)

一、 冒泡排序: 稳定性:稳定 空间复杂度:O(1) 平均时间复杂度:O(n的平方) 最优情况时间复杂度:O(n) 最坏情况下时间复杂度:O(n的平方) public static void bubbleSort(int[] arr){ for(int i = 0;i<arr.length;i++){ boolean flag = false; ...

2019-12-03 17:41:02 97

原创 两个栈实现一个队列和两个队列实现一个栈(java实现)

两个栈实现一个队列: 首先要清楚栈的特点是后进先出,然后队列的特点是先进先出,这样的话,用两个栈就可以实现队列的特性。 public class TwoStackToQueue { private Stack stack1; private Stack stack2; public TwoStackToQueue(){ stack1 = new Stack<>(); stack2 = ...

2019-10-09 22:16:30 74

原创 多态

多态可分为编译时多态即静多态和运行时多态即动多态 静多态 方法的重载,方法名相同但是返回值或者参数列表不同 动多态 运行时多态,顾名思义,就是在程序运行的过程中才会被发现的多态,动多态需要三要素:继承、方法重写、向上造型 ①继承 Java的类之间的继承关系只能是单继承,而不能是多重继承,否则会出现棱形继承的结果,可能存在重复定义现象,有重复的变量存在,作为Java语言的四大特征之一,继承关系遍及...

2019-09-15 16:57:20 61

原创 Java的类加载过程

类的加载过程可分为五个阶段:1.加载2.链接3.初始化阶段4.使用5.卸载 1.加载 .java文件 java编译器 编译阶段 语法语义词法解析 .class java解释器 加载到JVM上运行 通过类加载器将字节码文件加载到JVM上运行 2.链接 在链接阶段又可以分为3个小阶段 1.验证 验证是链接阶段的第一步,这一阶段的目的是为了确保Class文件的字节流中包含的信息符合当前虚拟机的要求,...

2019-09-06 11:27:32 112

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除