`
package com.company.arrays;
import java.util.Arrays;
public class ArraysTest1 {
/**
* 数组:通过连续的存储空间,存储相同类型元素的集合
* 1.数组定义
* int[] arrs;
* String strs[];不推荐使用
* 2.初始化
* 静态初始化:
* a.int arrs[] = new int[]{1,2,3,4};
* [I@5cad8086 class对象+hashcode值
* b.String[] arr = {"数据结构"};
* 动态初始化:
* int[] ars = new int[5]; 声明一个能存储5个元素的int类型数组
* 常见问题:
* a.声明数组的时候 动态数组初始化 不指定长度 int[] ars = new int[];
* b.给数组的重新赋值的时候 通过{}创建数字对象
* int[] arrs = new int[]{1,2,3,}; arr = {};//这里会编译出错
*
*/
/**
* 测试数组的常见属性
*Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
* at com.company.arrays.ArraysTest1.main(ArraysTest1.java:32)
*通过索引获取数组元素 索引不在这个范围 [0,ars.length)
* /* //1.声明一个int类型的数组
* int[] ars =new int[]{1,2,3,4};//数组长度的确定
* //2.获取当前数组的个数
* System.out.println("当前数组的长度是:"+ars.length);
* //3.通过索引获取指定位置上的元素
* System.out.println("获取索引为3的元素"+ars[ars.length-1]);
* String[] str = new String[10];
* System.out.println(str.length);
* System.out.println(str[1]);*/
/**
* 数组的内存分析
* int[] ars = new int[5];
* ars[2] = 10;//将10赋值给索引为2的位置
* System.out.println(ars.length);
* System.out.println(ars[2]);
* System.out.println(ars[0]);
*/
/**
* 为什么数组是不可变的?
* 数组长度一旦指定就不可更改
* 数组的CRUD以及迭代
* int[] ars = new int[]{2,3,1,43,432};
* System.out.println(ars[4]);
*
* ars[1] = 10;
* System.out.println(Arrays.toString(ars));
*
* ars[2] = 0;
* System.out.println(Arrays.toString(ars));
* //普通for循环 索引位置【0,length)
* for(int i = 0 ; i<ars.length;i++){
* System.out.println("索引是" + i + "位置上的元素是" +ars[i]);
* ars[i] += 2;
* System.out.println("修改后的索引"+ i+"位置上的元素是"+ars[i]);
*
* }
* System.out.println(Arrays.toString(ars));
* System.out.println();
* //foreach循环
* int index = 0;
* for (int num:ars) {
* System.out.println("每个"+index+"位置上的元素"+num);
* index++;
* }
*/
/**
* 多维数组的创建,初始,内存分析
* 在java中存在1维数组和N维数组的
* 二维数组动态初始化
* type[][] name = new tyoe[n.length][m.length];
* 其实就是一个1维数组,只不过1维数组的每个位置上的元素又是一个一位数组
*
* //二维数组的声明
* int[][] ars = new int [2][3];
*
* System.out.println(Arrays.toString(ars[0]));
* System.out.println(ars[0][1]);
*
* //创建一个1维数组,这个数组的长度为3,每个位置都是一个新的一维数组,这个数组的长度为2
* String[][] strs = new String[][]{{"zhangpeng","zhengan"},{"haha","halou"},{"hello","world"}};
* System.out.println(strs[0][1]);
* //创建一个1维数组,
* String[][] string = new String[][]{{"zhangpeng","zhengan"},{"haha","halou"},{"hello","world"}};
* System.out.println(strs[1][0]);
*
* //创建一个长度为1的1维数组,每个位置上的元素也是一个数组对象
* int[][] arrs = new int[2][];
* System.out.println(arrs.length);
* arrs[0] = new int[3];
* arrs[1] = new int[5];
* System.out.println(Arrays.toString(arrs));
* System.out.println(arrs[0][1]);
*/
/**
*
* 二维数组的迭代
* int[][] ars = new int[3][];
* ars[0] = new int[]{1,2,3};
* ars[1] = new int[]{2,3,4};
* ars[2] = new int[]{3,4,5};
*
* for(int i = 0;i<ars.length;i++){
* for(int j = 0;j<ars[i].length;j++){
* System.out.print(ars[i][j]+"\t");
* }
* System.out.println();
* }
* System.out.println("=================");
* for (int[] as:ars) {
* for (int num:as) {
* System.out.print(num+"\t");
*
* }
* System.out.println();
* }
*/
/**
*
* 关于可变参数
* 可变参数一定要保证在形式参数列表的末尾
* 对于参数列表而言,必须保证形参列表中有且只能有一个可变参数
* public static void main(String[] arg){
* int num1 = 10;
* int num2 = 30;
* int num3 = 50;
* add(new int[]{num1,num2,num3});
* adds("",num1,num2,num3,10,20);
* }
* public static void add(int[] num){
* int result = 0;
* for (int n:num) {
* result += n;
* System.out.println(result);
* }
* System.out.println("===============");
* }
* public static void adds(String str,int ... num){
* int result = 0;
* for (int n : num) {
* result += n;
* System.out.println(result);
* }
* }
*/
public static void main(String[] arg){
System.out.println();
}
}