Day7-JAVA

数组:

数组就是存放数据的一个容器

特点:

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]);

}

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容