写在最前边:
研究生一枚,为后端实习和未来工作打基础。无意间发现韩顺平老师的课程,细心细致,讲课和吴恩达老师一样,都是保姆式讲解,各种基础知识都会补充,爱了。
韩顺平老师课程地址:https://www.bilibili.com/video/BV1fh411y7R8?spm_id_from=333.999.0.0
阅读提醒:本笔试适合有编程语言基础的伙伴阅读,因为本兔兔是本专业的,有c、c++、python 、sql基础,笔记中特别的基础的内容就没有记录。完全零基础的小伙伴建议跟着韩老师的课程自己记录。
Java 基础
第二阶段 java编程
第六章 数组、排序和查找
一、数组
属于
引用类型
,且存放的是同一类型
的元素,这些元素的类型可以是基本类型也可以是引用类型。
1、创建数组的方式
1、动态分配方式
格式:数据类型 数组名[] = new 数据类型[大小]//2种小方式也都可以 int a[] = new int[5]; 或 = new int[]{1,2,3,4,5}; int[] a = new int[5]; 或 = new int[]{1,2,3,4,5};
2、动态分配方式
格式:
数据类型 数组名[] ;//声明数组
数组名 = new 数据类型[大小]; //需要操作数组时再分配空间
//两种小方式也都可以 //声明数组,内存中并没有分配空间 int[] a; int a[]; //使用前再分配空间。不分配空间会报错指针指向为空 a = new int[5];
3、静态初始化
格式:
数据类型 数组名[] = {元素 , 元素 ,…};
适用于事先知道数组元素且数组规模不大int a[] = {1,2,3}; int[] a = {1,2,3};
注意:
1、数组创建后,如果没有人为赋值,java会有默认赋值。int[] 、short[] 、byte[] 、long[] 、
-->0
float[]、double[]、-->0.0
char[]-->\u0000
boolean[]-->false
String[]-->null
2、数组赋值机制
数组默认使用引用传递,用=赋值是赋值的数组地址。
int[] a1 = {1,2,3}
int[] a2 = a1;
a2 = [0];
–>a1[0] = 0;
因为数组名就是保存了数组地址,数组名之间的赋值操作就是指向通用语地址空间,所以a2的操作也会改变这块内存的值。
注:1、基本数据类型赋值方式是 值传递,操作的是不同的内存空间,所以赋值以后各自的操作不影响对方
2、若另一个有数据的数组变量赋值为另一个数组变量,那么就代表要 销毁 这个数组
3、数组元素拷贝到一个新的数组空间
对数组的操作
1、数组反转
方法一
原地操作,将数组从头至中 ,依次进行首尾交换
方法二
开辟一个性的数组空间,将原数组从后往前,逆序复制给新数组,然后令原数组指向新数组的地址空间,这样便销毁了原数组指向的内存空间。
2、数组扩容
方法
:开辟更大的新数组空间,原数组指向新数组,销毁原数组空间。
但是这样很慢,后续 链表 其实是更好的选择
2、数组缩减*
方法
:开辟更小的新数组空间,原数组指向新数组,销毁原数组空间。