笔记内容:数组笔记来源:刘意java视频第5天
内容:上课的时候,跟着夯哥做的,后面还有学API 的时候,超哥给补充的选择排序。
找了半天,代码太多了。翻不到。只提交理论知识啦。。
数组:
概述:存储多个,同一种类型的元素的容器。
好处:可以对数组的元素进行编号,从0开始。
数组的定义格式:
元素类型[] 数组名 = new 元素类型[数组长度和个数]
new; 申请内存空间。
怎么获取数组中的元素:
第一个:arr[0];
第二个:arr[1];
第三个:arr[2];
内存的划分:
栈:存的是局部变量。
局部变量;定义在方法中,或者方法的形式参数上的。
特点:当变量使用完毕后(超出了变量的作用域。),直接从内存中释放。
堆:存的是new出来的东西(实体)。
1、每一个实体都有地址值。
2、每一个实体都有默认初始化值。
整数:0
浮点:0.0
字符:'\u0000'
布尔:false
3、在不确定的时间被垃圾回收器( GC)回收掉。
方法区:里面存储的:方法,String常量池,静态区。byte常量池。
本地方法区:和系统相关的内容。
寄存器:有CPU来分配资源的。
定义数组的四种方式:此处以Int类型举例
A: int[] arr = new int[5];//定义一个int类型的数组 arr
B: int arr[] = new int[5];//定义一个int类型的 arr数组
c: int[] arr = new int[]{1,2,3,4};
D: int[] arr = {1,2,3,4,5};
推荐 A D
数组的常见操作:
1、数组的遍历:
数组名怎么求: 数组名.length
长度:从1-数组名 .length
索引: length-1
for (x =0 ;x <arr.length;x++)
{
System.out.println(arr[x]);
}
2、数组的求最大值:
数组的求最大值:
1、定义一个变量max记录最大值。
2、遍历数组,拿到每一个元素,然后依次来跟最大值比较。
如果遍历到的元素,比最大值大,把该元素的值赋值给max。
3、将最大值返回。
int[] arr = {1,2,3,4,5};
int max = arr[0]; //我们假设数组中的第一个元素是最大值。
for(int x=0;x<arr.length;x++)
{
//arr[x]就是数组中的元素
if(arr[x]>max) //判断当前遍历到的元素是否比max大,
//如果比最大值还大,就将该值赋值给max
{
max = arr[x];
}
}
System.out.println(max); //输出最大值。
3、数组的基本查找功能:
1、定义一个变量记录要查找的值。key
2、遍历数组,拿到每一个元素,然后依次来跟key来比
如果相等,即返回该元素的索引(下标)
如果不相等,返回 -1
数组常见错误:- /*
- 数组操作的常见问题:
- A:数组越界异常。访问了不存在的索引。
- ArrayIndexOutOfBoundsException
-
- B:空指针异常。一个实例(对象)已经不存在
- NullPointerException
- */
- class ArrayDemo3
- {
- public static void main(String[] args)
- {
- //定义数组
- int[] arr = {1,2,3,4,5};
- //使用元素
- System.out.println(arr[3]);
- //System.out.println(arr[5]);
-
- //错误的
- //int x = null;
- arr = null;
- System.out.println(arr[2]);
- }
- }
复制代码
二维数组:
概述;就是每个元素都是一维数组。
A:int[][] arr = newunt[n][m];
n:可以看做是行,代表arr这个二维数组有多少元素。
m:可以看做是列。代表每一个一维数组中有多少个元素。
B:int [][]arr = new int[n][];
n:可以看作是行。代表arr这个二维数组中有多少个一维数组。
第二个括号的意思是,每一个一维数组的长度不固定。
C:int[][]arr = {{1,2,3}{1,2}{7,54}};
二维数组的遍历:
二位数组的长度:
arr.length
每一个以为数组的长度:
arr[x].length
二维数组的元素。
arr[x][y]
应用:
计算上场的年销售额
|