Java
文章平均质量分 94
stable_阿甘
用心学习,用心做事
展开
-
java io
本文介绍了java io和java nio,以及io模型原创 2023-12-19 08:47:23 · 971 阅读 · 0 评论 -
Set
一、Set 概述 Set 是继承自 Collection 的接口,它的实现结构如下: |----Set:存储无序的(元素的遍历顺序与添加的顺序无关),不可重复的数据 |-----HashSet:Set 的主要实现类,线程不安全 |-----LinkedHashSet:HashSet 的子类,遍历时可以按照添加的顺序遍历 |-----TreeSet:二、HashSet 的存储过程 HashSet 的底层实现是 HashMap,所以这里就主要讲一下大概过程,而不涉及原创 2020-05-19 11:52:00 · 266 阅读 · 0 评论 -
HashMap
文章目录一、HashMap1.1 JDK 71.2 JDK 81.3 HashMap 源码中的重要常量1.4 JDK 7 中的头插法在多线程扩容的时候容易成环一、HashMap1.1 JDK 7 底层数据结构:数组 + 链表 调用构造器初始化:初始化的时候会创建一个长度为 16 的数组 存储过程:通过 hashCode 计算出该元素在数组中的存储位置,如果该位置没有元素,就直接添加(如果 map 中的元素个数大于临界值,就扩容);如果有元素,先和该元素比较 hashCode 是否相同,如果相原创 2020-05-19 11:49:10 · 193 阅读 · 0 评论 -
File 与 IO 流
File 概述 File 类中有很多关于文件/目录的操作,基本能包含自己想要的全部功能,所以在使用的时候要查 apiIO 概述按操作数据单位不同分为:字节流和字符流按数据流的流向不同分为:输入流和输出流按流的角色不同分为:节点流和处理流(抽象基类)字节流字符流输入流InputStreamReader输出流OutputStreamWriterJava 的 IO 流共涉及 40 多个类,都是从这四个抽象基类派生出来的。 节点流:直接是程原创 2020-05-19 11:42:58 · 85 阅读 · 0 评论 -
String
一、String 不同方式创建的区别1.1 使用字面量创建 使用字面量赋值就是最常用的方式:String s1 = “abc”,因为 String 不是基本数据类型,所以 s1 中存储的是 “hello” 的地址值,而字符串的底层是一个 final 类型的数组,final char[] value,所以它存储在了常量池中,s1 指向的就是常量池中的某一个地址,而且常量池中相同值的 Strin...原创 2020-04-19 22:04:06 · 171 阅读 · 0 评论 -
注解
一、注解概述(Annotation)1.1 注解是什么 注解就是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过注解,程序员可以在不改变原有代码逻辑的情况下,在源文件中嵌入一些补充信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证或者进行部署。 注解可以用来修饰包、类、构造器、方法、成员变量、参数、局部变量的声明。1.2 用途 1、...原创 2020-04-19 21:59:07 · 820 阅读 · 0 评论 -
单例模式
一、什么是单例模式 单例模式就是在整个软件系统中,只允许存在一个类的实例的设计模式。二、单例模式的两种实现方式 为了保证一个类中只有一个类的实例,自然而然地就想到了 static 关键字,static 就是保证一个类全局只有一个某种变量或函数。2.1 饿汉式 饿汉式就是在类加载的时候就创建一个静态的类的实例放在方法区中,当有线程要使用这个类的实例时,通过某个方法来获得这个静态实例。...原创 2020-04-19 21:56:12 · 152 阅读 · 0 评论 -
ArrayList、LinkedList、Vector对比
一、整体对比 ArrayList : 存储方式:底层是使用 Object[] 存储的 插入和删除的效率:插入和删除元素的效率低 扩容机制:默认扩容至原来的 1.5 倍 线程安全:线程不安全(可以使用 Collections 的 synchronizedList 来保证线程安全) Vector :(已经不用了) 存储方式:底层是使用 Object[] 存储 插入...原创 2020-04-19 21:48:17 · 87 阅读 · 0 评论 -
Java 多线程
文章目录一、多线程概述1.1 程序、进程、线程1.2 为什么使用多线程1.3 何时使用多线程二、多线程的创建与使用2.1 继承 Thread 类(JDK 5 以前)2.2 实现 Runnable 接口 (JDK 5 以前)2.3 实现 Callable 接口 (JDK 5 新增)2.4 使用线程池(JDK 5 新增)2.4.1 背景2.4.2 使用线程池的好处2.4.3 实现三、线程的生命周期3....原创 2020-04-19 21:46:11 · 305 阅读 · 0 评论 -
Lambda 表达式
文章目录一、什么 Lambda 表达式二、Lambda 表达式使用2.1 基本语法2.2 代码示例三、Java 内置四大核心函数式接口3.1 练习使用 Consumer 接口3.2 练习使用 Supplier 接口3.3 练习使用 Function 接口3.4 练习使用 Predicate 接口四、方法引用五、Lambda 表达式的作用一、什么 Lambda 表达式 Lambda 是一个匿...原创 2020-04-05 12:59:42 · 97 阅读 · 0 评论 -
反射与动态代理
文章目录一、反射概述1.1 反射是什么1.2 反射的作用二、对 Class 类的理解2.1 初步认识2.2 深入理解三、反射与封装性的个人理解3.1 反射和封装性是站在不同的层面的3.2 更深层次的理解封装性四、反射的应用——动态代理4.1 代理设计模式的原理4.2 静态代理4.3 动态代理4.1 动态代理的引入4.2 动态代理的实现一、反射概述1.1 反射是什么 反射式 Java 被视为...原创 2020-04-05 12:57:42 · 214 阅读 · 0 评论 -
static 关键字
一、定义 Java 编程思想中的定义:static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。 我们可以这样理解:在一个类中可能有一些属性或方法是所有类的实例都具备的相同的特性,如:public class Chinese { ...原创 2020-03-21 19:56:36 · 254 阅读 · 0 评论 -
final 关键字与保证集合的域安全
一、final 关键字1.1 定义 final 关键字用来修饰不再发生变化的量,可以用来修饰类,属性,方法,局部变量。1.2 使用 修饰类:final 修饰类表示该类无法被继承,表明该类已经很完善了,我们很难再对该类进行扩充。 典型应用:String,StringBuffer,System 修饰属性:final 修饰属性表示该属性一旦被初始化则无法改变,所以 final 修饰的...原创 2020-03-21 19:55:51 · 269 阅读 · 0 评论 -
面向对象(中)
一、子类对象实例化的过程 从结果上看 子类继承父类后,就获取了父类中声明的属性和方法。 创建子类的对象,在堆空间中,就会加载父类中声明的属性。 从过程上看 我们通过调用子类的构造器构造子类对象是,我们一定会直接或间接的调用其父类的构造器,进而调用父类的父类的构造器…直到调用到了 java.lang.Object 类中的空参构造器为止,所以构造顺序是先构造好父类,再构造子类。...原创 2020-03-04 08:21:25 · 155 阅读 · 0 评论 -
面向对象(上)
目录一、面向对象程序设计的三条主线二、面向对象的三大特点三、如何理解类和对象在 Java 中,万事万物皆对象四、创建一个类的内存解析五、对象数组的内存解析六、属性(成员变量)和局部变量七、方法的重载八、可变个数的形参九、对构造器的理解十、属性赋值十一、this 关键字一、面向对象程序设计的三条主线 一、设计类 二、新建类的对象。 三、通过对象来调用类的属性和方法二、面向对象的三大特...原创 2020-03-04 08:03:11 · 260 阅读 · 0 评论 -
多态
一、如何理解多态 多态可以理解成为事务的多种形态。二、什么是多态 对象的多态性:父类的引用指向子类对象。三、如何使用多态 虚方法调用:在编译期间,只能调用父类中声明的方法;在运行期间,执行子类中重写的方法。四、多态的使用前提1、继承2、重写3、父类的引用指向子类对象五、属性没有多态package Polymorphic;import java.util.Random...原创 2020-03-04 07:57:35 · 94 阅读 · 0 评论