一
二维数组:一维数组的数组。
动态初始化方式一(指定有多少个长度相同的一维数组):数据类型[][] 变量名 = new 数据类型[m][n];
m表示这个二维数组有多少个一维数组
n表示每一个一维数组的元素个数
数据类型[][] 变量名 = new 数据类型[m][];
注意:
m这个数据必须给出,后面的数据可以不给
需求:定义一个有3个一维数组的二维数组
1.给这个二维数组的每一个一维数组的元素赋值
仅可用此种方式:
arr[0] = new int[2];
arr[0][0] = 1;
arr[0][1] = 2;
不能用此种方式:
/*
arr[0] = {1,2};
arr[1] = {5,6,7};
arr[2] = {4};
*/
二维数组的静态初始化:
静态初始化:
数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}};
简化格式:
数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};
二维数组的遍历:一般用两个for循环就可以了
二、形式参数问题看程序写结果
class ArgsDemo {
public static void main(String[] args){
int a = 10;
int b = 20;
System.out.println("a:"+a+",b:"+b); //a:10,b:20
change(a,b);
System.out.println("a:"+a+",b:"+b);//a:10,b:20 a:20,b:40 a:10,b:20
int[] arr = {1,2,3,4,5};
change(arr);
System.out.println(arr[1]); //4
}
public static void change(int a,int b) {
System.out.println("a:"+a+",b:"+b);
a = b;
b = a + b;
System.out.println("a:"+a+",b:"+b);
}
public static void change(int[] arr) {
for(int x=0; x<arr.length; x++) {
//如果数组的元素值是偶数,就变为以前的2倍。
if(arr[x]%2==0) {
arr[x]*=2;
}
}
}
}
结论:
如果形式参数是基本类型:
形式参数的改变,不影响实际参数。
如果形式参数是引用类型:
形式参数的该变,直接影响实际参数。
三、.数组的高级操作(冒泡排序,选择排序,数组工具类,练习)
public class ArraysDemo {
//sort() 对数组中的元素进行排序
int[] arr = {2,4,1,8,7};
//调用方法对数组进行排序
Arrays.sort(arr);
//打印数组中的元素
//printArr(arr);
char[] chs = {'c','d','a','e'};
Arrays.sort(chs);
//printArr(chs);
//toString()方法
String s1 = Arrays.toString(arr);
System.out.println(s1);
String s2 = Arrays.toString(chs);
System.out.println(s2);
}
private static void printArr(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]+"\t");
}
}
private static void printArr(char[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]+"\t");
}
}
}
相邻的两个元素进行比较,小的放前面,大的放后面
public class maopaoSort {
public static void main(String[] args) {
int[] a={5,9,3,6,1,0};
for (int i = 0; i < a.length-1; i++) {
for (int j = 0; j < a.length-1-i; j++) {
if(a[j]>a[j+1]){
int temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
for (int k = 0; k < a.length; k++) {
System.out.print(a[k]+" ");
}
//排一行输出一行
System.out.println();
}
//一次性排序完输出
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+" ");
}
}
}
2.1 选择排序概念:
* 选择排序:
* 从0索引开始,依次和后面的每一个元素进行比较
* 第一次比较完毕,最小值出现在了最小索引处
* 第二次比较完毕,次小值出现在了次小索引处
* ...
* 完毕后,就排序了。
public class SelectSort {
public static void main(String[] args) {
int[] a={0,23,15,9,26,7,2};
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+" ");
}
System.out.println();
System.out.println("*******************************");
for (int i = 0; i < a.length; i++) {
for (int j = i+1; j < a.length; j++) {
if(a[i]>a[j]){
int temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
for (int k = 0; k < a.length; k++) {
System.out.print(a[k]+" ");
}
System.out.println();
}
System.out.println();
for (int i = 0; i < a.length; i++) {
System.out.print(a[i]+"\t");
}
}
}
三:Arrays数组工具类
3.1 针对数组进行操作的工具类。提供了排序,转换等功能。
3.2
* 成员方法:
* public static String toString(int[] a):把数组转成字符串
* public static void sort(int[] a):对数组进行排序(有重载)