java基础(SE)
记录基础知识,持续更新
香辣奥利奥
不积跬步无以至千里,不积小流无以成江海。
展开
-
二叉查找树 红黑树 B-Tree B+Tree 的区别
二叉查找树 红黑树 B-Tree B+Tree 的区别 二叉查找树: 又称为二叉搜索树, 优点查找快,但是在某些情况下会退还为链表, 他是所有高效查找树的基础; 红黑树: 内存查找高效树, 不适合大数据量 也不适合磁盘存储;具体分析就是IO浪费以及读取资源浪费, 还有就是树的深度会很大; 适合一些底层系统做内存运算; B-Tree(B 树): 可以认为是B+Tree的过渡; 只需要知道BTree就可以; B+Tree(毕加索): 最适合大数据的磁盘索引, 经典的MySql, 所有的数据都存在叶子结点; 其他原创 2021-03-08 17:23:59 · 244 阅读 · 1 评论 -
一个Java对象占多少内存
运行环境 windows 10 CPU Intel® Core™ i7-9750H CPU @ 2.60GHz 内存 16.0 GB 结论 这里首先给出结论 一个什么都没有的空对象 占用16字节 空对象 : 对象头(object header)4B*3 + 内存对齐4B = 12 + 4 = 16; 验证 导入Maven依赖 这里推荐openjdk的jol工具,它可以帮助你查看对象内存的占用情况。 <dependency> <groupId>o原创 2022-03-18 16:02:45 · 247 阅读 · 0 评论 -
java关键字 之instanceof volatile
关键字也称为保留字,是指java语言中规定了 特定含义的标示符。对于保留字,用户只能按照系统规定的方式使用,不能自行定义。 instanceof instanceof 实例 判断对象类型 左边是对象,右边是类,返回类型是Boolean类型。 它的具体作用是测试左边的对象是否是右边类或者该类的子类创建的实例对象,是,则返回true,否则返回false。 instanceof 应用场景 需要用到对象的强制类型转换时,需要使用instanceof进行判断。 public static void main原创 2021-07-07 15:55:55 · 66 阅读 · 0 评论 -
java注解
@Deprecated 弃用注解 Java 中 @Deprecated 可以用来注解类、接口、成员方法和成员变量等,用于表示某个元素(类、方法等)已过时。当其他程序使用已过时的元素时,编译器将会给出警告。原创 2021-07-07 15:41:57 · 55 阅读 · 0 评论 -
String常用方法
一. String构造方法 java.lang.String类 String 类代表字符串。Java 程序中的所有字符串字面值(如 "abc" )都作为此类的实例实现。 字符串是常量;它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。 因为 String 对象是不可变的,所以可以共享。 字符串底层就是一个数组,数组被final修饰,数组的地址值不能改变,所以字符串就是一个常量 private final char value[]; String类的构造方法:(IO流的时候用到)原创 2021-03-06 18:51:50 · 1462 阅读 · 0 评论 -
去掉字符串中多余的 - 号
将一字符串复制至另一字符串,要求去掉字符串中多余的 - 号; 无论有几个 - 号,都输出为1个 - 号。 public class Test { public static void main(String[] args) { String msg = "1-2--3---4----5------12-------10"; System.out.println(msg.replaceAll("-{2,}", "-")); } } 输出结果: 1-2-3-4-原创 2021-01-08 01:33:41 · 1891 阅读 · 0 评论 -
ArrayList基于StreamApi去重操作
public class ArrayListAddInteger { public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<Integer>(); list.add(1); list.add(1); list.add(2); list.add(2); list.add(n原创 2021-03-10 20:10:04 · 695 阅读 · 0 评论 -
基础数据类型
基本数据类型包括 数值型: byte(占一字节) short(占两字节) int(占四字节) long(占八字节) float(占四字节) double(占八字节); 字符型: char(占一字节); 布尔型:Boolean(返回值:true或false)。 基本类型对应的引用类型 - byte Byte - short Short - int Integer - long Long原创 2021-03-06 18:30:30 · 362 阅读 · 0 评论 -
面向对象特征
一. 什么是面向对象(OOP) 我理解的面向对象,是一种编程思想,代码的书写格式,面向对象编程思想指导我们写出复用性更高,更简洁的代码. 举个例子:把大象装进冰箱 面向过程:总共分三个过程, -第一个过程:把冰箱门打开 (关着门的冰箱) 返回值是开着门的冰箱 -第二个过程:把大象装进去 (开着门的冰箱) 返回值是开着门,装着大象的冰箱 -第三个过程:把冰箱门关上 (开着门,装着大象的冰箱) 返回值是关着门,装着大象的冰箱 面向过程就是什么事我们都要亲力亲为,我们要自己打开冰箱,装大象,关门. 面向对象:原创 2021-03-06 18:16:36 · 105 阅读 · 0 评论 -
函数式接口
一. 函数式编程 函数式编程思想: 我们只需要关心结果,不关心过程,以及谁来实现。 函数式接口:它指的是有且只有一个未实现的方法的接口,一般通过@FunctionalInterface这个注解来表明某个接口是一个函数式接口。函数式接口是Java支持函数式编程的基础。 二. 函数式接口能做什么 可以使用函数式接口作为方法的参数类型和返回值类型使用 参数和返回值就可以使用Lambda表达式简化代码了 三. 函数式接口的使用 1. 自定义函数式接口 函数式接口:接口中有且仅有一个抽象方法的接口 注意:原创 2021-02-09 08:01:54 · 1124 阅读 · 1 评论 -
Lambda快速入门
一. Lambda是什么 Lambda是JDK8新的特性,一个比较有趣的语法格式,我们还称为函数式编程。 函数式编程思想: 我们只需要关心结果,不关心过程,以及谁来实现。 二. Lambda能做什么 极大的减少代码冗余(最主要的体现就是使用Lambda表达式简化匿名内部类) 顺序和并行执行支持(使用lambda表达式的另一个好处是,我们可以受益于Stream API的顺序和并行操作支持) 下面我们就来快速的了解Lambda表达式的使用。 三. Lambda表达式的使用 Lambda表达式的基本格式原创 2021-02-09 05:46:29 · 450 阅读 · 0 评论 -
Java HashMap 源码浅析 二
一. resize()扩容方法 final Node<K,V>[] resize() { Node<K,V>[] oldTab = table; //当前hash桶 //当前hash桶的大小 int oldCap = (oldTab == null) ? 0 : oldTab.length; //获取原始HashMap数组的长度。 int oldThr = threshold; //容量扩展的临界值原创 2021-01-13 00:08:27 · 153 阅读 · 0 评论 -
Java HashMap 源码浅析 三
一. get()方法 public V get(Object key) { Node<K,V> e; //定义临时节点用于返回结果 //先调用hash(key)方法获得key的hash值,再调用getNode方法找到Node节点 //如果Node节点不存在返回null,存在的话返回Node节点的value return (e = getNode(hash(key), key)) == null ? null : e.value;原创 2021-01-13 00:05:27 · 91 阅读 · 0 评论 -
Java HashMap 源码浅析 一
一. HashMap概述 HashMap是Java程序员用于映射(键-值对)处理的最常用数据类型。随着JDK(Java Developmet Kit)的更新,JDK 1.8使用数组+链表+红黑树优化了HashMap底层的实现。当链表的长度超过阈值(8)时,链表将转换为红黑树,从而大大减少了搜索时间。 二. HashMap继承关系 public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V&g原创 2021-01-12 00:36:20 · 200 阅读 · 0 评论