自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HashMap的底层实现原理biubiubiu

HashMap的实现原理和底层结构 哈希表 哈希表也叫散列表,是一种重要的数据结构,应用场景比较丰富。 和其他的数据结构相比,在哈希表中进行添加,删除,查找等操作,性能十分之高,不考虑哈希冲突的情况下,仅需一次定位即可完成,时间复杂度为O(1),接下来我们就来看看哈希表是如何实现达到惊艳的常数阶O(1)的。 哈希表的主干是数组 假如我们要查找某个元素的关键字,可以通过函数映射带数组中的某个位置,这个函数就是hash函数 哈希冲突 如果两个不同的元素,通过哈希函数得出的实际存储地址相同怎么办?也就是说,当我们

2020-07-12 12:09:37 155

原创 Linkedlist、Linklist、Vector的区别

/* List 接口的实现 AarryList : 底层实现: 可变数组实现的,内部 通过数组拷贝实现根据内容可变长 优点 : 根据索引查询效率高 缺点 :错增加删除时效率低,因为要通过数组拷贝实现 应用场景: 存储耽搁数据,有序可以重复–>大量做查询,少量增删,推荐使用ArrayList 扩容: 在第一次添加数据时候初始容量10 , 通过Arrays.copyof方法进行动态扩容,每次扩容原容量的1.5倍 int newCapacity = oldCapacity + (o

2020-07-08 21:19:14 308

原创 Lambda表达式的所有写法

Lambda表达式 jdk1.8 新增Lambda表达式 作用: 简化匿名内部类的 使用前提: 函数式接口 函数式接口: 只有一个必须被重写的抽象方法的接口 强制检测是否为函数式接口: 注解@FunctionalInterface 语法: () -> {} ():匹配要重写的抽象方法的参数列表 ->:lambda符号 箭头符号 具有上下文推倒的作用

2020-07-06 20:55:05 823

原创 equals和==的故事

== 和equals的比较 这两个比较的都是地址,但是为什么说一般比较字符串是使用equals方法呢? 因为在String类下,重写了equals方法 public boolean equals(Object anObject) { if (this == anObject) { return true; } else { if (anObject instanceof String) { String aString = (Strin

2020-07-06 20:42:36 112

原创 抽象类的故事

抽象类 1.抽象类的产生 分析事物时,发现了共性内容,就出现向上抽取。会有这样一种特殊情况,就是方法功能声明相同,但方法功能主 体不同。那么这时也可以抽取,但只抽取方法声明,不抽取方法主体。那么此方法就是一个抽象方法。 比如我们要声明一个人类class,人类包含很多种,美国人和中国人。那么人类肯定会说话,但是说的是英语还是汉 语需要具体的看是那种人,因为这个人类class就可以声明为抽象类,声明一个说话的抽象方法,美国人和中国人分 别继承然后重写说话的犯法实现自己的说话方式。 2.抽象类的定义 用 abst

2020-06-30 21:00:25 165

原创 Javax小白成长日记之面向对象三大特性

面向对象三大特性 封装 理解: 比如生活中我们的背包,我们总想着把一些东西放在背包里,怕把他弄丢了,或者说可以放在背包李更方便。封装呢就是把一些功能封装在方法里。 概念: 程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴 露少量的方法给外部使用。利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立 实体,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。 系统的其他部分只有通过包裹在数据

2020-06-30 20:46:53 173

原创 java小白日记第七天之美女谈面向对象

面向对象 一、面向对象和面向过程的区别 让我们先来比较一下面向对象和面向过程 面向过程 面向过程更看重过程,按照步骤一步一步去完成,这个适合简单的事情,比如开车 点火–>挂挡–>踩油门–>起飞 面向对象 面向对象则是想着如何去设计,比如车,我们想着如何车是如何设计的,有什么部件组成,,面向对象可以帮助我们从宏观上把握、从整体上分析整个系统。 我们千万不要把面向过程和面向对象对立起来。他们是相辅相成的。面向对象离不开面向过程!** 二、类和对象 1.类和对象概念的总结 生活中,比如我们在街上

2020-06-29 17:45:41 193

原创 java小白日记第六天

数组 在之前呢,我们学习了变量,假如我们要定义十个或者一百个甚至更多呢,那样定义起来就相对麻烦了,所以今天我学习了数组哈哈哈,下面带你们进入数组的world。 一、数组的定义 在Java里,定义一个数组我们要用下面的基本格式 数据类型[] 数组名 = new 数据类型[元素个数或数组长度]; int[] x = new int[100]; 假如我们定义了一个a数组,那么第一个变量的名称就是a[0],在编程的世界里很多都是从0开始的,所以大家要慢慢接受。以此类推,往下a[1]等等。 我们可以尝试定义一个数组来

2020-06-28 15:47:18 197

原创 java小白日记第五天

day05 1.方法 1.1无参数无返回 public static void printHelloWorldMethod01() { System.out.println("HelloWorld"); } 1.2无参数有返回 public static String printHelloWorldMethod02() { return "HelloWorld"; } 1.3有参数无返回 public static void printRectang

2020-06-26 19:33:10 2030 3

原创 小白日记

@ java小白成长日记day03 1.byte越界问题 byte类型的数据进行运算时超过其存储范围怎么办? System.out.println(byte(128)); 数据在计算机中是以补码的形式存储的,首先我们得了解原码,补码,反码 简单理解一下,正数的时候原反补码都一样,下面的适合负数第一位是符号位0代表正数,1代表负数。 原码:例如7用二进制表示就是0000 0111。 反码:就是符号位不变,其他全部去反。 补码:在反码的基础上末位加1. [外链图片转存失败,源站可能有防盗链机制,建

2020-06-25 22:27:34 165

空空如也

空空如也

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

TA关注的人

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