一、语言基础---5.数组高级
(一)方法参数的值传递机制
097、main方法的数组参数
public class Hello
{
/*
main方法是static修饰的,说明直接使用类名Hello类调用即可
在底层是JVM通过Hello.main(new String[]{});
main方法的String数组参数,其实是暴露给程序运行者的,用于给程序传递一个数据信息。
*/
public static void main(String[] args) //参数:参数类型String[] 参数名称args
{
System.out.println(args.length);
for (int index = 0; index < args.length ; index ++ )
{
System.out.println(args[index]);
}
}
}
用法: java [-options(执行类)] class [args...]
098、参数的值传递机制-基本数据类型
在栈里面(不需要垃圾回收器),方法调用完毕后就栈帧销毁了,所以调用完change()方法后,change方法的栈帧就移出栈了,main方法的栈帧就到了栈的顶部,继续执行
//参数的值传递机制-基本数据类型
class ParameterDemo
{
public static void main(String[] args)
{
int x = 10;
System.out.println("main方法前,x:" + x); //10
change(x); //改变x变量
System.out.println("main方法后,x:" + x); //10
}
static void change(int x) //修改变量方法
{
System.out.println("change方法前,x:" + x); //10
x = 50;
System.out.println("change方法后,x:" + x); //50
}
}
099、参数的值传递机制-引用数据类型
//参数的值传递机制-引用数据类型
class ParameterDemo1
{
public static void main(String[] args)
{
int[] arr = new int[]{10,99};
printArray(arr); //[10,99]
swap(arr); //交换第一个和最后一个元素的值
printArray(arr);
}
static void swap(int[] arr)
{
int temp = arr[0]; //把第一个元素赋值给temp
arr[0] = arr[arr.length - 1]; // 把最后一个元素赋值给第一个元素位置
arr[arr.length - 1] = temp;
}
//打印数组的方法
static void printArray(int[] arr) //String[] arr = null;
{
if (arr == null)
{
System.out.println("null");
return; //结束方法
}
String ret = "[";
for (int index = 0; index < arr.length ; index ++ )
{
ret = ret + arr[index];
if (index != arr.length - 1) //如果当前index不是最后一个索引,则拼接“,”
{
ret = ret + ",";
}
}
ret = ret +"]";
System.out.println(ret);
}
}
(二)多维数组
100、数组中的数组-多维数组
数组的语法:数组元素类型[] 数组名
一维数组:数组中的每一个元素都是一个值(基本类型和引用类型的值)
二维数组:数组中的每一个元素又是一个一维数组
三维数组:数组中的每一个元素又是一个二维数组
严格上说,在java中不存在多维数组的概念,和C语言做区分,一般称之为数组中的数组
int[] arr1 = {1,2,3};
int[] arr2 = {4,5};
int[] arr3 = {6};
//把上述的每一个数组都作为一个元素,那么此时元素的类型为int[]
int[][] arr = new int[][] {arr1,arr2,arr3}; //二维数组 int[][] arr = new int[][] {
{1,2,3},{4,5},{6}};
101、多维数组的操作
二维数组的初始化操作:
静态初始化: int[][] arr = new int[][] { {1,2,3},{4,5},{6}};
动态初始化:int[][] arr = new int[3][5]; 创建一个长度为3的二维数组,每一个元素(一维数组)的长度为5
class ArrayInArrayDemo
{
public static void main(String[] args)
{
int[][] arr = new int[][] {
{1,2,3},
{4,5},
{6}
};
System.out.println(arr.length); //3
for (int i = 0; i < arr.length ; i ++ )
{
System.out.println(arr[i]); //打