数组:
数组就是存放数据的一个容器
特点:
1、数组只能存放同一种类型的数据
2、数组是有长度限制的
3、数组是有下标的(索引),下标是从0开始的
4、数组本身是引用数据类型
重点:
怎么声明一个数组
1、静态声明
(1)只声明不赋值
语法:
数据类型[] 数组名 ;
(2)声明并且赋值
数据类型[] 数组名 = {值1,值2,值3.....,值N} ;
2、动态声明
(1)只声明不赋值
数据类型 [] 数组名 = new 数据类型[值] ;
(2)声明并且赋值
数据类型 [] 数组名 = new 数据类型[]{值1,值2,值3.....,值N};
使用:
数组的长度: 数组名.length
【例:主入口】
public static void main(String [] args)
【静态声明数组】
【①只声明不赋值:】
byte [] a ;
【②声明并赋值:】
int [] b = {1,2,3};
【数组中数据的个数:】
int c = b.length;
System.out.println(c);
【动态声明数组】
【数据类型 [] 数组名 = new 数据类型[值] ;】
double [] d = new double[20];
System.out.println(d.length);
【数据类型 [] 数组名 = new 数据类型[]{值1,值2,值3.....,值N};】
double [] arr = new double[]{1.1 , 2.2 , 3.3 , 3.14 };
System.out.println(arr.length);
【取出数组中的某一项数据:】
double num = arr[2];
System.out.println(num);
【改变数组中的某一项数据:】
arr[3] = 10 ;
System.out.println(arr[3]);
【遍历数组】
声明一个数组:
int [] arr = {1,2,3,4,5,6,7}
for(int i = 0;i<arr.length;i++){
System.out,println(arr[i]);
}
数组的扩容
数组长度是有限制的
数组扩容需要借助另一个数组
int[] a = {1,2,3,4,5,6,7};
System.out.println(a.length);
int[] b = new int[10];
for(int c = 0 ; c < a.length ;c++ ){
b[c] = a[c];
}
a = b ;
System.out.println(a.length);
整数类型 : 0
浮点类型 : 0.0
字符类型 : 空格
布尔类型 :false
字符串类型(String): null(空)
【数组的复制】
int[] aa ={3,4,5};
int[] bb = new int[3];
System.arrayCopy(a,b,c,d,f)
a:原数组
b:起始位置
c:新数组
d:新数组的起始位置
f:要复制的数量
System.arraycopy(aa,0,bb,0,aa.length);
for(int i = 0 ; i<bb.length ; i++){
System.out.println(bb[i]);
}
【===冒泡排序===】
①声明一个数组
int[] arr ={3,1,6,2,5}
②排序的逻辑:如果前一个数比后一个数大,就交换两者的位置;
经过每一个数据的比较,使最后的一个数字成为数组中的最大值;
重复以上的过程,找到第二大、第三大的数字,使第一个数据成为最小的数。
例: 数组 arr { 3,1,6,2,5 }
嵌套for循环
外层for: 代表元数据 3,1,6,2,5
内层for: 比较相邻两个数字的大小,
如果左边的比右边的大,则交换位置
外层for第一次循环 元数据: 3,1,6,2,5
内层for第一次循环:1 3 6 2 5
内层for第二次循环:1 3 6 2 5
内层for第三次循环:1 3 2 6 5
内层for第四次循环:1 3 2 5 6 最大值 6
外层for第二次循环 元数据 1 3 2 5
内层for第一次循环:1 3 2 5
内层for第二次循环:1 2 3 5
内层for第三次循环:1 2 3 5 最大值 5
外层for第三次循环 元数据 1 2 3
内层for第一次循环: 1 2 3
内层for第二次循环: 1 2 3 最大值 3
外层for第四次循环 元数据 1 2
内层for第一次循环:1 2 最大值 2
据上述分析可知:外层for循环的次数是:arr.length-1;
内层for循环的次数为arr.length-a-1
而交换两个数据,需要通过再定义一个变量来实现。
for(int a = 0;a<arr.length-1;a++){
for(int b = 0;b<arr.length-1-a;b++){
if(arr[b]>arr[b-1]){
int c = 0;
c = arr [b];
arr [b]=arr[b-1];
arr [b-1]= c;
}
}
}
【再进行遍历数组输出一次】
for(int a =0;a<arr.length;a++){
System.out.println(arr[i]);
}
【二维数组】
二维数组:
二维数组其实就是一个特殊的一位数组
数组中存放的是数组
二维数组声明方式:
数据类型[][] 数组名 = {值1,值2.......};
数据类型[][] 数组名 = new 数据类型[][]{值1,值2.......} ;
数据类型[][] 数组名 = new 数据类型[值][值];
int [][] s = new int[3][4];
int [][] arr = {
{1,2}, {3,4,5},
{4,5,6,7},
{6,7,8},
{1}
};
//遍历数组arr -- 将arr数组中的值全部输出
for(int i = 0 ; i< arr.length ; i++){
int[] str = arr[i];
for(int k = 0 ; k<str.length ; k++ ){
System.out.println(str[k]);
}
}