JAVA基础(JAVA SE)学习笔记(五)数组

 前言 

1. 学习视频:

尚硅谷Java零基础全套视频教程(宋红康2023版,java入门自学必备)_哔哩哔哩_bilibili

2023最新Java学习路线 - 哔哩哔哩

正文

第一阶段:

JAVA基础(JAVA SE)学习笔记(一)JAVA学习路线、行业了解、开发环境JDK17安装配置 和 JDK8同时配置

JAVA基础(JAVA SE)学习笔记(二)变量与运算符

JAVA基础(JAVA SE)学习笔记(三)流程控制语句

JAVA基础(JAVA SE)学习笔记(四)IDEA安装、使用、设置、断点、乱码汇总-CSDN博客

第二阶段

6. 方法

6.1 声明一个方法

修饰符 返回值类型 方法名( [参数类型 参数名1,参数类型 参数名2, ...] ) {

       执行语句

     

        return 返回值

}

修饰符:有很多,例如对访问权限进行设定的(private、protected、public),有静态修饰符static,最终修饰符final等。

返回值类型:用于限定方法返回值的数据类型。没有返回值时,类型声明为void,return省略。

6.2 方法的重载

java允许在一个程序中定义多个名称相同的方法,但是参数类型个数必须不同,这就是方法的重载。(方法的重载和返回值的类型无关。)

6.3 方法的递归

方法的递归是指在一个程序的内部调用自身的过程。递归必须要有结束条件,不然就会陷入无限递归的状态,永远无法结束调用。

5. 数组

5.1 数组的概念:

JAVA基础(JAVA SE)学习笔记(五)数组_第1张图片

JAVA基础(JAVA SE)学习笔记(五)数组_第2张图片

JAVA基础(JAVA SE)学习笔记(五)数组_第3张图片

JAVA基础(JAVA SE)学习笔记(五)数组_第4张图片

double[] a; //声明一个double[]类型的变量
a = new double[100]; //创建一个长度为100的数组
或
int[] b = new int[100];
只定义数组的长度,由系统自动为元素赋初始值叫动态初始化。

定义数组的同时,为数组的每个元素都赋值叫静态初始化。
int[] c = new int[]{1,2,3,4,5};
或
int[] c = {1,2,3,4,5};

这样是动态初始化:
int[] c = new int[5];
c={1,2,3,4,5};

不能写为:int[] c = new int[5]{1,2,3,4,5}; 
会报错。因为编译器会认为数组限定的元素个数[5]
与
实际存储的元素{1,2,3,4,5}个数可能不一致,存在安全隐患。

数组中最小索引是0,最大索引是长度-1数组名.length 获得数组的长度,即元素个数。

int a[ ] = new int[5];中括号和数组名写在一起也是正确写法。

数组的遍历:

for(int i = 0; i < a.length-1; i++){
    System.out.println(a[i]);
}
数组元素的默认初始化值
数据类型 默认初始化值
byte、short、int、long 0
float、double 0.0
char 一个空字符,即   '\u0000'
boolean false
引用数据类型

null,表示变量不引用任何对象

5.2 数组(一维、二维、多维数组)的使用

初始化方式:

int[][] a = new int[2][3];
int[][] b = new int[2][];
int[][] c = {(1,2),(3,4,5,6),(1,6,5),5};
int[][] d = new int[][]{(1,2),(3,4,5,6),(1,6,5),5};

其中:c[0] = {1,2};     c[1] = {3,4,5,6};    c[1][0] = 3;     c[3] = {5};

还可以写为int[] d[] = new int[][]{(1,2),(3,4,5,6),(1,6,5),5};

int d[][] = new int[][]{(1,2),(3,4,5,6),(1,6,5),5};

可以发现声明一个数组变量的时候,必须要定义行的个数,列可以暂时不写。

不同行的列的个数也可以不相同。

二维数组的元素默认值
数据类型 
byte、short、int、long 地址值 0
float、double 地址值 0.0
char 空字符集,即 '\u0000'  一个空字符,即   '\u0000' 
boolean 地址值 false
引用数据类型 地址值 null,表示变量不引用任何对象

特殊情况下int[][] b = new int[2][];,行的默认地址值都是null,列则没有分配地址或值。

JAVA基础(JAVA SE)学习笔记(五)数组_第5张图片

这里的地址值其实是“类名+@+地址”。显示是“[C@179d3b25”这样的值。

JAVA基础(JAVA SE)学习笔记(五)数组_第6张图片

JAVA基础(JAVA SE)学习笔记(五)数组_第7张图片

内存解析:

JAVA基础(JAVA SE)学习笔记(五)数组_第8张图片

JAVA基础(JAVA SE)学习笔记(五)数组_第9张图片

5.3 数组的常见异常

  • 数组越界异常ArrayIndexOutOfBoundsException:

        在使用索引访问数组的元素时超出了数组的索引范围0~length-1

  • 空指针异常NullPointerException:

       在使用变量引用一个数组时,变量没有指向一个有效的数组对象,变量的值是null。在访问该数组时,就会出现空指针异常。注意:动态初始化二维数组不写列的个数int[][] z = new int[2][];,就访问某列也会报错空指针异常。(因为列没有分配内存空间,根本不存在)

JAVA基础(JAVA SE)学习笔记(五)数组_第10张图片

引用数据类型未赋值,默认为null,调用arr3[0]=null时,也会空指针异常:

JAVA基础(JAVA SE)学习笔记(五)数组_第11张图片

5.4 常见算法

杨辉三角:

JAVA基础(JAVA SE)学习笔记(五)数组_第12张图片

回型数:

回形数格式方阵的实现_数字回转方阵_时时师师的博客-CSDN博客

数组的反转:JAVA基础(JAVA SE)学习笔记(五)数组_第13张图片

JAVA基础(JAVA SE)学习笔记(五)数组_第14张图片JAVA基础(JAVA SE)学习笔记(五)数组_第15张图片

5.5 扩容缩容

可以采取将新建数组(跟原来相比更大或更小)的地址值赋值给原有数组,实现扩容、缩容。

JAVA基础(JAVA SE)学习笔记(五)数组_第16张图片

JAVA基础(JAVA SE)学习笔记(五)数组_第17张图片JAVA基础(JAVA SE)学习笔记(五)数组_第18张图片

5.6 查找与排序

5.6.1 查找

查找分为线性查找(O的n次方)和二分查找(O的(log2N)次方)。

JAVA基础(JAVA SE)学习笔记(五)数组_第19张图片二分查找要求数组元素有序

JAVA基础(JAVA SE)学习笔记(五)数组_第20张图片

JAVA基础(JAVA SE)学习笔记(五)数组_第21张图片

JAVA基础(JAVA SE)学习笔记(五)数组_第22张图片

JAVA基础(JAVA SE)学习笔记(五)数组_第23张图片

5.6.2 排序:

JAVA基础(JAVA SE)学习笔记(五)数组_第24张图片

JAVA基础(JAVA SE)学习笔记(五)数组_第25张图片

JAVA基础(JAVA SE)学习笔记(五)数组_第26张图片

JAVA基础(JAVA SE)学习笔记(五)数组_第27张图片

排序的目的是快速查找,排序有很多种,其中冒泡排序和快速排序最常用。

JAVA基础(JAVA SE)学习笔记(五)数组_第28张图片

JAVA基础(JAVA SE)学习笔记(五)数组_第29张图片5.6.2.1 冒泡排序思想:

多种排序动态演示网址:排序(冒泡排序,选择排序,插入排序,归并排序,快速排序,计数排序,基数排序) - VisuAlgo 

JAVA基础(JAVA SE)学习笔记(五)数组_第30张图片

JAVA基础(JAVA SE)学习笔记(五)数组_第31张图片

JAVA基础(JAVA SE)学习笔记(五)数组_第32张图片

JAVA基础(JAVA SE)学习笔记(五)数组_第33张图片

JAVA基础(JAVA SE)学习笔记(五)数组_第34张图片

5.2.6.2 快速排序:(面试 复杂度   O(nlog(n) )

JAVA基础(JAVA SE)学习笔记(五)数组_第35张图片

JAVA基础(JAVA SE)学习笔记(五)数组_第36张图片

JAVA基础(JAVA SE)学习笔记(五)数组_第37张图片

JAVA基础(JAVA SE)学习笔记(五)数组_第38张图片

JAVA基础(JAVA SE)学习笔记(五)数组_第39张图片

5.7 数组工具类

JAVA基础(JAVA SE)学习笔记(五)数组_第40张图片

JAVA基础(JAVA SE)学习笔记(五)数组_第41张图片

JAVA基础(JAVA SE)学习笔记(五)数组_第42张图片

JAVA基础(JAVA SE)学习笔记(五)数组_第43张图片

Arrays.sort(arr3);

Arrays.binarySearch(arr3);

使用二分法排序的时候,要先使用sort方法进行数组排序,然后再使用Arrays.binarySearch(arr3);

二分法找不到数的时候,就会输出打印一个比最小值还小的负数:

JAVA基础(JAVA SE)学习笔记(五)数组_第44张图片

可以添加友好提醒:

JAVA基础(JAVA SE)学习笔记(五)数组_第45张图片

企业真题:

JAVA基础(JAVA SE)学习笔记(五)数组_第46张图片

JAVA基础(JAVA SE)学习笔记(五)数组_第47张图片

你可能感兴趣的:(Java基础,java)