什么是数组?
数组(array)是一种最简单的复合数据类型,它是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和不同的下标来确定数组中唯一的元素。根据数组的维度,可以将其分为:
一维数组
二维数组
多维数组等
数组:
回顾一下变量 : 可以存储单个数据,
学习一下数组 : 可以存储多个数据。
数组在内存中是一段连续的内存空间,
相同类型数据的有序集合。
数组的特点:
1.数组是一个容器,是一个引用数据类型,在堆中;
2.一致性:数组中的所有数据被要求数据类型相同;
3.不可变性:长度一旦确定就不可改变;
4.有序性:根据序号使用(索引|下标)。
5.jdk5 没有下标
数组的声明和创建
变量的类型 变量名 = 变量值
给数组赋值
遍历数组 arrays.length获取数组长度
package com.whs.day06array;
/**
* @Author: 阿波罗
* @Date: 2021/11/27 20:44
* @oath: 不分白天黑夜的征途 淦!
* @Version: 1.0.0
*/
public class Demo43Array {
public static void main(String[] args) {
//变量的类型 变量名 = 变量值
//数组
/*
//一、声明、创建
int[] numbers;//定义一个数组 或是 声明一个数组
numbers = new int[10];//创建一个数组*/
/*
* 二、声明和创建写一起
* */
int[] numbers = new int[10];
//给数组赋值
numbers[0] = 1;//数组的元素是通过索引访问 索引从0开始 (也可以这样去理解,数组就是从下标开始的 0就是下标指向的第一个数)
numbers[1] = 2;
numbers[2] = 3;
numbers[3] = 4;
numbers[4] = 5;
numbers[5] = 6;
numbers[6] = 7;
numbers[7] = 8;
numbers[8] = 9;
numbers[9] = 10;
// System.out.println(numbers[0]);
int sum = 0;
// arrays.length获取数组长度
for (int i = 0; i < numbers.length; i++) {
sum = sum + numbers[i];
}
System.out.println(sum);
}
}
静态初始化 创建 + 赋值
动态初始化
数组边界 合法边界[0,length-1] length-1 -->最大长度
int[] c= new int[2];//声明 但未赋值 默认值为0
System.out.println(c[2]);//输出 出错下标越界**
package com.whs.day06array;
/**
* @Author: 阿波罗
* @Date: 2021/11/29 12:45
* @oath: 不分白天黑夜的征途 淦!
* @Version: 1.0.0
*/
public class Demo44Array {
public static void main(String[] args) {
//静态初始化 创建 + 赋值
int[] a = {1,2,3,4,5,6};
System.out.println(a[0]);
//动态初始化
int[] b = new int[3];
b[0]=10;
b[1]=20;
b[2]=30;
System.out.println(b[2]);
}
}
JDK1.5没有下标
反转数组的方法
public static void main(String[] args) {
// JDK1.5没有下标
int[] arrays = {1, 2, 3, 4, 5};
//遍历输出 arrays.for 回车
for (int array : arrays) {//这里是取不到下标的 缺陷取不到下标
System.out.println(array);
}
System.out.println("===============================================================");
//调用printArrays方法 输出 arrays
printArrays(arrays);
System.out.println("===============================================================");
//反转数组 //调用printArrays方法 输出 reverse
int[] reverse = reverse(arrays);
printArrays(reverse);
System.out.println("===============================================================");
}
//反转数组的方法
public static int[] reverse(int[] arrays) {
int[] result = new int[arrays.length];
for (int i = 0, j = result.length - 1; i < arrays.length; i++, j--) {
result[j] = arrays[i];
}
return result;
}
//写一个方法 打印数组元素 返回值是void 不需要写 return ? ; 直接返回 传的参
public static void printArrays(int[] arrays) {
for (int i = 0; i < arrays.length; i++) {
System.out.println(arrays[i]+" ");//控制方法中换行与不换行输出
}
}
多维数组
package com.whs.day06array;
import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;
/**
* @Author: 阿波罗
* @Date: 2021/11/29 21:17
* @oath: 不分白天黑夜的征途 淦!
* @Version: 1.0.0
*/
public class Demo48 {
public static void main(String[] args) {
int[][] arr = {{1,2},{3,4},{5,6},};
System.out.println(arr.length);//外面的长度
System.out.println(arr[1].length);//里面的长度
System.out.println(arr[2][arr.length-2]);//拿到里面的最后一个值
System.out.println("====================================================================");
//多维数组
int [][] array = {{1,2,3,4,5,6},{11,22,33,44,5,6},{111,222,333,444,555,666},{1111,2222,3333,4444,5555,6666}};
for (int i=0;i<array.length;i++){
for (int j=0;j<array.length;j++){
System.out.println(array[i] [j]);
}
}
}
}
内存分析?
堆
栈
方法区