Java基础知识--第五篇

二维数组:一维数组的数组。

动态初始化方式一(指定有多少个长度相同的一维数组):
数据类型[][] 变量名 = 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):对数组进行排序(有重载)
































猜你喜欢

转载自blog.csdn.net/Jacson_Wangx/article/details/69218511