Java中的数组
一、数组定义格式
1、数组概述:一次性声明大量的用于存储数据的变量,要存储的数据通常都是同类型数据,例如:考试成绩
2、什么是数组:是用于存储多个相同类型数据的存储模型
3、定义格式:
-
格式一: 数据类型[] 变量名 示例: int[] arr; 定义了一个int类型的数组,数组名是arr(推荐使用格式一)
-
格式二: 数据类型 变量名[] 示例: int arr[]; 定义了一个int类型的变量,变量名是arr数组
二、数组初始化之动态初始化
1、数组初始化概述:
Java中的数组必须先初始化,然后才能使用
所谓初始化:就是为数组中的元素分配内存空间,并为每一个数组元素赋值
2、数组初始化方法:
1、动态初始化:
1、是指初始化时指定数组长度,有系统为数组分配初始值
初始值:
整数:默认值是0
浮点数:默认值是0.0
布尔值:默认值是false
字符:默认是空字符“”
引用数据类型:默认值是null
2、格式:数据类型[] 变量名 = new 数据类型[数组长度]; 示例:int[] arr = new int[3];
2、静态初始化:
1、初始化时指定每一个数组元素的初始值,由系统决定数组长度
三、数组元素访问
1、数组变量访问方式
格式:数组名
2、数组内部保存的数据的访问方式
格式:数组名[索引];
3、索引:
是数组中数据的编号方式
作用:索引用于访问数组中的数据使用,数组名[索引]等同于变量名,是一种特殊的变量名
特征:
从0开始;连续的,逐一增加;每次加一
四、内存分配
1、Java中的内存分配:
Java程序在运行时,需要在内存中分配内存空间,为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域
都有特定的处理数据方式和内存管理方式
2、内存分区:
1、栈区:
存储局部变量:
定义在方法中的变量,例如:arr,使用完毕,立即消失
2、堆区:
存储new出来的内容(实体,对象),数组初始化时,会未储存空间添加默认值(参照数组动态初始化)
每一个new出来的东西都有一个地址值,使用完毕,会在垃圾回收器空闲时被回收
3、数组内存图(单个数组):
1、代码示例(图不画了学过C++还能理解):
package com.itheima_02;
public class ArrayTest01 {
public static void main(String[] args) {
//定义一个数组
int[] arr = new int[3];
//输出数组名及数组元素
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
//给数组中的元素赋值
arr[0] = 100;
arr[2] = 200;
//再次输出数组名及元素
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
}
}
4、数组内存图(多个数组):
1、代码示例(图不画了学过C++还能理解):
package com.itheima_02;
public class ArrayTest02 {
public static void main(String[] args) {
//定义两个数组
int[] arr = new int[2];
int[] arr2 = new int[3];
//分别输出数组名即元素
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr2);
System.out.println(arr2[0]);
System.out.println(arr2[1]);
System.out.println(arr2[2]);
//然后分别给数组中元素赋值
arr[0] = 100;
arr2[0] = 200;
arr2[2] = 300;
System.out.println("------------");
//分别再输出数组名即元素
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr2);
System.out.println(arr2[0]);
System.out.println(arr2[1]);
System.out.println(arr2[2]);
}
}
5、数组内存图(多个数组指向相同)
1、代码示例(图不画了学过C++还能理解):
package com.itheima_02;
public class ArrayTest03 {
public static void main(String[] args){
//定义一个数组
int[] arr = new int[3];
//重新赋值
arr[0] = 100;
arr[1] = 200;
arr[2] = 300;
//输出对应数值
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
//定义第二个数组指向第一个数组
int[] arr2 = arr;
arr2[0] = 111;
arr2[1] = 222;
arr2[2] = 333;
//输出两个数组名与其对应地址值
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr2);
System.out.println(arr2[0]);
System.out.println(arr2[1]);
System.out.println(arr2[2]);
}
}
五、数组初始化之静态初始化
1、静态初始化:初始化时指定每一个数组元素的初始值,由系统决定数组长度
格式:数据类型[] 变量名 = new 数据类型[]{数据1, 数据2, 数据3, ......};
示例:int[] arr = new int[]{1, 2, 3}; (注意与C语言不同[]中不需要写了)
格式简化(常用) :数据类型[] 变量名 = {数据1, 数据2, 数据3};
示例:int[] arr = {1, 2, 3};
package com.itheima_03;
public class ArrayDemo {
public static void main(String[] args) {
//采用静态初始化定义一个数组
int[] arr = {1, 2, 3};
//输出数组名
System.out.println(arr);
//输出数组中的元素
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
}
}
6、数组操作的两个常见小问题
1、索引(index)越界:
访问了数组中不存在的索引对应的元素,造成索引越界问题
2、空指针异常(将null赋值给 整型数组 的变量)
访问的数组已经不在指向堆内存的数据,造成空指针异常
3、null:空值,引用数据类型的默认值,表示不指向任何有效对象
4、参考代码:
package com.itheima_04;
/*
数组操作的两个常见小问题
索引越界:ArrayIndexOutOfBoundsException
空指针异常:NullPointerException
*/
public class ArrayDemo {
public static void main(String[] args) {
//使用动态初始化一个数组
int[] arr = new int[3];
//测试输出索引越界
//System.out.println(arr[3]);
System.out.println(arr[2]);
//测试空指针异常
arr = null;
System.out.println(arr[0]);
}
}
七、数组常见操作
1、遍历(结合循环):
1、获取数组中元素个数:
格式:数组名.length
示例:arr.length
2、参考代码:
package com.itheima_05;
/*
数组常见操作之遍历
*/
public class ArrayTest01 {
public static void main(String[] args) {
//使用静态分配定义一个数组
int[] arr = {11, 22, 33, 44, 55};
//使用通用遍历格式
for(int i = 0; i < arr.length; i++){
System.out.println(arr[i]);
}
}
}
2、获取最值:
package com.itheima_05;
/*
数组常见操作之获取最值
*/
public class ArrayTest02 {
public static void main(String[] args) {
//定义一个数组
int[] arr = {12, 45, 67, 74, 80};
//定义一个变量接收数组中第一个元素 并用来接收最大值
int max = arr[0];
//定义另一个变量接收数组中第一个元素 并用来接收最小值
int min = arr[0];
//使用for循环进行比较出最大值
for(int i = 1; i < arr.length; i++){
//判断最大值
if(max < arr[i]){
max = arr[i];
}
//判断最小值
if(min > arr[i]){
min = arr[i];
}
}
//输出结果
System.out.println("arr数组中的最大值:" + max);
System.out.println("arr数组中的最小值:" + min);
}
}
标签:arr,Java,int,System,学习,数组,println,out From: https://www.cnblogs.com/fragmentary/p/16727857.html