学习视频:https://www.bilibili.com/video/BV18J411W7cE?p=63&spm_id_from=pageDriver
数组
是一种用于存储多个相同类型数据的存储模型。
数组定义格式:
推荐使用格式1定义数组
- 格式1
数据类型[] 变量名
eg: int[] arr
读作:定义了一个int类型的数组,数组名是arr。 - 格式2
数据类型 变量名[]
eg: int arr[]
读作:定义了一个int类型的变量,变量名是arr数组
数组初始化:
- 动态初始化:
初始化时只指定数组长度,由系统分配初始值。
格式:数据类型[] 变量名 = new 数据类型[数组长度]
eg: int[] arr = new int[3];
public class arraydemo{
public static void main (String[] args){
int[] arr = new int[3];
/*
左边:
int:元素类型为int
[]:说明这是一个数组
arr:这是数组名称
右边:
new:为数组申请内存空间
int:说明数组中元素类型为int
[]:说明这是一个数组
3:数组长度,即数组元素个数
*/
}
}
- 静态初始化:
初始时指定每个数组元素的初始值,由系统决定数组长度
格式:数据类型[] 变量名 = new 数据类型[] {数据1,数据2,数据3,…};
eg:int[] arr = new int[] {1,6,89,54,56};
简化格式:数据类型[] 变量名 = {数据1,数据2,数据3,…};
eg:int[] arr ={1,6,89,54,56};
public class arraydemo{
public static void main (String[] args){
int[] arr = {
1,2,3};
System.out.println(arr); //输出为arr的地址
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
}
}
数组元素访问:
- 数组变量访问方式:
格式:数组名 - 数组内部的数据的访问方式
格式:数组名[索引] - 索引是数组中数据的编号方式
作用:索引用于访问数组中的数据使用,数组名[索引]等同于变量名,是一种特殊的变量名
特征:- 索引从零开始
- 索引是连续的
- 索引逐一增加,每次加1
Java中的内存分配
在数组初始化时,会为存储空间添加默认值
- 整数:默认值0
- 浮点数:默认值0.0
- 布尔值:默认值false
- 字符:默认值是空字符
- 引用数据类型:默认值是null
- 栈内存:存储局部变量,定义在方法中的变量,使用完之后立即消失
- 堆内存:存储new出来的内容(对象,实体),数组初始化时,会为存储空间添加默认值,每个new‘出来的东西都有一个地址值,使用完毕之后,会在垃圾回收器空闲时被回收。
数组内存图:
单个数组内存图
多个数组内存图
多个数组指向相同内存图
数组操作常见的两个小问题
-
索引越界
数组中不存在的索引对应的元素int[] arr = new int[3]; System.out.println(arr[3]);//越界
-
空指针异常
访问的数组已经不再指向,堆内存数据,造成空指针异常。
数组常见操作
- 遍历
int[] arr = {
1,2,3};
for(int i = 0 ;i < 3 ;i ++){
System.out.println(arr[i]);
}
-
获取数组元素数量:
格式: 数组名.length
eg: arr.length -
获取数组最值
package javacode;
public class max {
public static void main(String[] args) {
int[] arr = {
165,178,165,173,180,167,175};
int max = arr[0];
for(int i = 0; i < arr.length ; i++){
if(max < arr[i])
max = arr[i];
}
System.out.println(max);
}
}
方法
方法是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集
- 方法只有定义后才可使用
- 方法创建后不是直接运行,需手动使用,即方法的调用
方法的定义和调用
-
方法的定义
格式:public static void 方法名 (){ //方法体 }
eg:
public static void isEvenNumber() { //方法体 }
-
方法调用(注意先定义后调用)
格式:方法名();
eg:isEvenNumber();
package javacode;
public class max {
public static void main(String[] args) {
max();
}
public static void max () {
int[] arr = {
165,178,165,173,180,167,175};
int max = arr[0];
for(int i = 0; i < arr.length ; i++){
if(max < arr[i])
max = arr[i];
}
System.out.println(max);
}
}