数组
数组的概念
数组是一种容器,可以同时存储多个数据,我们平时定义只能一个变量的值,但数组可以同时存储多个数据。
数组的特点
- 数组是引用数据类型
- 数组里必须是同一种数据类型
- 数组一但被创建,长度就固定了,不能进行改
数组初始化与格式
数组的初始化:在内存中创建一个数组,并向其中赋予初始值
初始化有两种:
一种是动态初始化:(指定长度),另一种是静态初始化:(直接指定数据内容)
数组初始化的格式:
- 数组类型[] 数组名 = new 数组类型[数组长度];
数组的分类
动态数组:指定数组中的元素个数
动态初始化:数组类型[] 数组名 = new 数组类型[数组长度];
静态数组:直接指定数组中的数据内容
静态初始化:数组类型[] 数组名 = new 数据类型[]{1,2,3}
数组的索引
数组的索引是从“0”开始的
数组作为函数的参数
数组可以作为参数传递给方法。例如,下面的例子就是一个打印 int 数组中元素的方法:
public static void printArray(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
}
数组作为函数的返回值
public static int[] reverse(int[] list) {
int[] result = new int[list.length];
for (int i = 0, j = result.length - 1; i < list.length; i++, j--) {
result[j] = list[i];
}
return result;
}
下面是相关代码
数组的创建
public class Demo01Array {
public static void main(String[] args) {
//创建一个数组,里面可以存300个int数据
int[] arr = new int[300];
//创建一个数组,可以存放10个double数据
double[] arr2 = new double[10];
//存放字符串
String[] arr3 = new String[50];
}
}
两种创建方法
public class Demo02StaticArray {
public static void main(String[] args) {
int[] arrStatic = new int[]{1,2,3};//用静态初始化数组,创建int数组,存放123
String[] arr = new String[]{"hello","hi","haha"};
//静态数组还有省略格式:数组类型[] 数组名 = {1,2,3}
//静态数组正常格式:数组类型[] 数组名 = new 数据类型[]{1,2,3}
}
}
数组的索引
/*直接打印数组的结果:[I@2d98a335,是数组的内存地址哈希值
访问数组元素的格式:数组名[索引]
* */
public class Demo03ArrayUse {
public static void main(String[] args) {
int[] arr = {1,2,3,5,6,7,8,9,10};
System.out.println(arr[0]);//输出arr数组的0号下标的数据
System.out.println(arr.length);//输出arr数组的长度
}
}
数组的相关习题
1.获取数组的长度
package demo.demo01;
/*如何获取数组的长度,格式:
* 数组名称.length
* 这会得到一个int数字,代表了数组的长度
* */
public class Demon06ArrayLength {
public static void main(String[] args) {
int[] arr = {1,2,3,3,3,3,1,5,46,46,64,684,64,64,646};
int len = arr.length;
System.out.println(len);
//另外,数组一旦创建,程序运行期间,长度无法改变
int[] arr2 = new int[3];
System.out.println(arr2.length);
arr2 = new int[5];
System.out.println(arr2.length);
}
}
2.数组最大、最小值
package demo.demo01;
/*数组当中最大值最小值*/
public class Demo07ArrayMax {
public static void main(String[] args) {
int[] arr = {1,2,3,4,5,6,7};
int max = arr[0];
for(int i = 1;i < arr.length;i++){
if(max < arr[i]){//如果当前元素大,max的值就被他替换
max = arr[i];
}
}
System.out.println(max);
int[] arr1 = {9,8,7,6,5,4,3,2,1};
int min = arr1[0];
for (int j = 1;j < arr1.length;j++){
if (min > arr1[j]){//如果当前元素小,min的值就被他替换
min = arr1[j];
}
}
System.out.println(min);
}
}
3.对一个数组内元素进行反转
package demo.demo02;
/*数组元素的反转
* 本来:【1,2,3,4】
* 反转后:【4,3,2,1】
* 要求:用同一个数组进行反转操作*/
public class Demo08ArrayReverse {
public static void main(String[] args) {
int[] arr = {10,20,30,40,50};
for (int i = 0; i < arr.length; i++) {
System.out.println("反转之前"+arr[i]);
}
/*初始化语句:int min = 0,max = arr.length-1;
* 判断表达式:min < max;
* 步进表达式:min++,max--;
* 循环体:temp = arr[min];arr[min] = arr[max];arr[max] = temp*/
for (int min = 0,max = arr.length-1;min < max; min++,max--){
int temp = arr[min];
arr[min] = arr[max];
arr[max] = temp;
}
for (int i = 0; i < arr.length; i++) {
System.out.println("反转之后"+arr[i]);
}
}
}