最常考的数据结构与算法知识点

数 据 结 构 算 法 概 念
链表 广度(深度)优先搜索 位操作
数组 递归 设计模式
二叉树 二分查找 内存管理(堆、栈等)
排序(归并排序、快速排序等)
堆(大顶堆、小顶堆) 树的插入/删除/查找/遍历等
图论
队列 Hash 法
向量 分治法
Hash 表 动态规划

Java流程控制与数组细节点

1、使用if。。。else时,一定要先处理包含范围更小的情况

2、switch控制表达式的数据类型:byte、short、char、int、枚举类型、java.lang.String​

3、do while 循环条件后必须有一个分号,表明循环结束

4、for循环中,continue结束本次循环,循环跌代体一样会得到执行​

5、break结束循环,return 结束整个方法 两者都会结束循环

6、java中的标签只有放在循环语句之前才有作用,放在break所在的循环的外层循环之前才有意义

7、break 标签:结束标签指定的循环 而不是break所在的循环

8、continue加标签如break一样

9、java的数组要求所有的数组元素具有相同的数据类型

10、定义数组时不能指定数组的长度,经过初始化才可以使用,实际开发过程中定义和初始化同时完成

11、不要同时使用静态初始化(分配初始值)和动态初始化(指定数组的长度)

12、​数组索引越界异常(索引值小于0或大于等于长度):

13、foreach循环自动遍历数组和集合的每个元素,通常用于遍历输出,通常不要对循环变量进行赋值,没有太大意义且极容易引起错误,如果希望改变数组元素的值不要用foreach循环

14、数组元素(堆内存)和数组变量(栈内存)再内存里是分开​存放的

15、方法结束,存放着 方法中定义的局部变量的内存栈都会被自然销毁

16、数组元素(对象)没有任何引用变量引用它时,系统垃圾回收机制会在合适时回收它

17、让机制回收数组所占内存空间:将数组变量赋值为null,切断变量和元素的引用关系​

18、a数组变量赋值给​b数组变量,并没有改变b的数组长度(直到消失),而是改变了b的指引,b原先指向的数组元素失去了引用,成为垃圾,等待回收

19、定义一个Object[]类型的数组可以拓展到多维数组

20、从数组底层的运行机制上看,java​没有多维数组,只是提供了支持多维数组的语法,多维数组本质上都是以为数组。(三维数组每个数组元素是二维数组)

21、char类型转换成int类型数字,直接减去48,他们的ASCII码值恰好相差48