您的位置:首页 > 编程语言 > Java开发

Java学习笔记_05

2017-04-10 18:09 495 查看
一、二维数组

二维数组就是一个元素为一位数组。

初始化方式之一(指定有多少个长度相同的一位数组):

数据类型[][] 变量名 = new 数据类型[m]
;

m表示这个二维数组有多少个一位数组

n表示每一个一维数组中的元素个数

public static void main(String[] args) {
//定义一个三个长度不意义样的一位数组的二维数组,并遍历
int[][] arr = {{1,2},{3,4,5},{6,7,8,9,0}};

//利用for循环遍历二维数组
for (int i = 0; i < arr.length; i++) {
//拿到每一个一维数组之后,遍历一位数组中的每一个元素
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j]+" ");
}
System.out.println();
}

}

}
二维数组的静态初始化:
静态初始化:
数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}};
简化格式:
数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};

例子: 公司年销售额求和
某公司按照季度和月份统计的数据如下:单位(万元)
第一季度:22,66,44
第二季度:77,33,88
第三季度:25,45,65
第四季度:11,66,99

public static void main(String[] args) {		//创建对应的二维数组
int[][] arr = {{22,66,44},{77,33,88},{25,45,65},{11,66,99}};

//遍历二维数组并将每一个元素的值加起来
int sum = 0;
for (int i = 0; i < arr.length; i++) {
//拿到每一个一维数组之后,遍历每一个一维数组,加起来
for (int j = 0; j < arr[i].length; j++) {
sum+=arr[i][j];
}
}
System.out.println(sum);
}

}
二、形式参数问题

public static void main(String[] args){
int a = 10;
int b = 20;
System.out.println("a:"+a+",b:"+b); //10,20
change(a,b);
System.out.println("a:"+a+",b:"+b); //?

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); //10,20
a = b;
b = a + b;
System.out.println("a:"+a+",b:"+b);/20,40
}

public static void change(int[] arr) {
for(int x=0; x<arr.length; x++) {
//如果数组的元素值是偶数,就变为以前的2倍。
if(arr[x]%2==0) {
arr[x]*=2;
}
}
}
}




结论:
如果形式参数是基本类型:
形式参数的改变,不影响实际参数。
如果形式参数是引用类型:
形式参数的该变,直接影响实际参数。

三、数组的高级操作

冒泡排序

基本概念:相邻的两个元素进行比较,小的放前面,大的放后面。


public static void main(String[] args) {
int[] arr = { 24, 69, 80, 57, 13 };
System.out.println("--------------------");
//使用for循环改进上面的代码
for (int j = 0; j < arr.length-1; j++) {//外层循环控制比较的次数
for (int i = 0; i < arr.length - 1 - j ; i++) {
//-1是为了防止数组越界,-j是为了提高比较的效率
if (arr[i]>arr[i+1]) {
//找一个中间变量
int temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp;
}
}
}
printArr(arr);
}

//写一个方法打印数组
public static void printArr(int[] arr){
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+"  ");
}
System.out.println();
}
选择排序

从0索引开始,依次和后面的每一个元素进行比较
第一次比较完毕,最小值出现在了最小索引处
   第二次比较完毕,次小值出现在了次小索引处
   ...
   完毕后,就排序了。



public static void main(String[] args) {
int[] arr = { 24, 69, 80, 57, 13 };
for (int j = 0; j < arr.length-1; j++) {
for (int i = j+1; i < arr.length; i++) {
if (arr[j]>arr[i]) {
int temp = arr[j];
arr[j] = arr[i];
arr[i] = temp;
}
}
}
printArr(arr);

}

//写一个方法打印数组
public static void printArr(int[] arr){
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+"  ");
}
System.out.println();
}

}
Arrays数组工具类

成员方法:

  public static String toString(int[] a):把数组转成字符串

               public static void sort(int[] a):对数组进行排序(有重载)

public static void main(String[] args) {
//public static String toString(int[] a):把数组转成字符串
int[] arr = {1,2,4,5,5};
//打印上面数组的字符串表示形式
String arrStr = Arrays.toString(arr);
System.out.println(arrStr);

System.out.println("----------");
char[] chs = {'a','d','f','g'};
String chsStr = Arrays.toString(chs);
System.out.println(chsStr);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: