一.数组
1.数组定义: 用来一次性保存多个相同类型元素的这样一种数据结构.
2.维度上分:一维数组,多维数组
3.声明:类型 [] 数组变量名称 int [] arr 和 int arr[];
这两种形式都可以,而且没有任何的区别,不过建议我们采取第一种方式
4.初始化:
new:初始化一个对象
动态初始化:定义一个数组和对数组进行赋值的操作,我们分开来执行。
静态初始化:在定义一个数组的同时,进行数组的初始化
b. 数组保存的元素类型一旦指定,也是不可以改变,并且只能保存该类型的元素
//动态初始化
int [] arr = new int[3];
arr[0] = 0;
arr[1] = 1;
arr[2] = 2;
//静态初始化
int [] arr1 = new int[] {1,2,3};
int [] arr2 = {1,2,3,4}
注意:a. 数组长度一旦指定,是永远不可以改变的。
b. 数组保存的元素类型一旦指定,也是不可以改变,并且只能保存该类型的元素
数组元素的默认初始化:a.基本类型 0 b.引用类型null c. boolean类型:false
5.length:计算数组的长度
int [] a = new int[3]
int size = a.length
6.数组元素的访问
arr[index]: index表示数组元素的索引,注意索引是从0到length-1.
arr[1]:访问第二个元素
arr[1]:访问第二个元素
index: 可以是常量,也可以是表达式。
/**
* 一个保存10个整形元素的一维数组,其中值为1到10,我们分别求 这十个数的和,以及十个数的平均值,
以及俩俩相邻的差,最终的和。
*/
public class ArryTest {
public static void main(String[] args) {
int [] arr = new int[10];
int [] sumDel = new int[10];
int sum = 0;
int sumAll = 0;
double ave = 0;
for(int i=0;i<arr.length;i++){
arr[i] = i+1;
sum += arr[i];
}
ave = 1.0*sum/10;
System.out.println(sum);
System.out.println(ave);
for(int i=0;i<arr.length-1;i++){
sumDel[i] = arr[i+1] - arr[i];
sumAll+=sumDel[i];
}
System.out.println(sumAll);
}
}
二.二维数组
声明:类型 [][] 数组名称 int [][] arr;
初始化:a.动态初始化
int [][] arr = new int [3] [];
b.静态初始化
int [][] arr = {{1,2,3},{4,5,7,8}};
/*
选择排序:
选择特定的数,之后进行交换.
特定得数: 小的数
交换:
int a0 = arr[0];
a[0] = a[2];
a[2] = a0;
算法:
从左至右,依次比较当前的数和后面的数的大小关系,如果满足我们的排序条件,那么保持不变,否则做一次交换操作
*/
public class ArrayDemo2{
public static void main(String[] args){
int[] arr = {3,4,1,7,4,4,9,1,2};
for(int i=0;i<arr.length;i++){
for(int j=i+1;j<arr.length;j++){
if(arr[i]<arr[j]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
}
/*二维数组的遍历输出*/
public class DoubleArry {
public static void main(String[] args){
int [][] arr ={{1,3,2},{90,3},{12,45,67,8}};
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
System.out.print(" " + arr[i][j] + "");
}
}
}
}
重点理解学会内存模型的分析(自行体会)