1.5 J2SE基础知识复习之数组

数组


数组中的元素可以是任何数据类型,包括基本数据类型和引用数

据类型


数组属引用类型,数组型数据是对象(object),数组中的每个元

素相当于该对象的成员变量


一维数组的声明方式


type  var[] 或 type[]  var;


初始化的两种方式


1)动态初始化:数组声明且为数组元素分配空间与赋值的操作分开进行


int[] arr = new int[3];

arr[0] = 3;

arr[1] = 9;

arr[2] = 8;


MyDate dates[];

dates = new MyDate[3];

dates[0] = new MyDate(22, 7, 1964);

dates[1] = new MyDate(1, 1, 2000);

dates[2] = new MyDate(22, 12, 1964);



2)静态初始化:在初始化数组的同时为数组元素赋值

int a[] = new int[]{ 3, 9, 8};

int a[] = {3,9,8};

//int a[];a = {3,9,8}; error


MyDate dates[] = {

        new MyDate(22, 7, 1964);

        new MyDate(1, 1, 2000);

        new MyDate(22, 12, 1964);
}


数组长度:

数组名.length


数组一旦初始化,长度就不可变


长度不够 只能重新创建数组,把原数组值复制过来




数组元素默认值


根据不同数据类型变量创建的数组默认值(同类的属性默认值)

可理解为未给数组元素显式赋值时的值


对于int,byte,short,long,其默认值为0

对于float,double,其默认值为0.0

对于char,其默认值为空格

对于boolean类型,其默认值为false


对于引用数据类型,其默认值为null(如String)


数组的内存结构


静态域:静态变量

方法区:类名,包名,方法的定义

常量池:字符串常量池




关注栈先进后出,数组元素首地址值


S1:在栈上创建引用类型变量并指向对应位置

   在堆上开辟对应数量空间,赋default值(一定会有该过程)

S2:数组元素显式赋值


练习


1)

定义类Pritimive,在类中定义一个有3个元素的boolean类型的

数组t作为其成员变量。数组元素未赋值。

定义类Array1,在Array1的main()方法中创建Pritimive对象d,

输出其成员变量t的三个元素值。

练习目的:检验基本数据类型数组创建时的自动赋值。

给对象d的成员变量t赋值为{true,true,true},并输出t的三个

元素值。




2)





多维数组


int[][] a = new int [3][2];

等价于

int[] a[] = new int [3][2];




静态初始化



二维数组的内存结构


数组为引用数据类型


两维数组的元素为一维数组



左图确定一维数组元素个数,右图一维数组元素个数可变


二维数组长度


int[][] a = new int [3][2];

a.length//二维数组长度为行数,即3

a[0].length//二维数组某个元素的长度,即2


遍历二维数组并求和(嵌套循环)

int sum = 0;

for(m = 0;m<a.length;m++){

  for(n = 0;n<a[m].length;n++){

     sop(a[m][n]+" ");

     sum += a[m][n];

  }

  sopl();//换行

}


二维数组内存结构




动态初始化


第一行:栈空间创建引用类型变量并赋值,堆空间二维数组元素初始化为null(元素为一维数组,即引用数据类型,默认为null)  【new出来都在堆空间】


第二行:堆空间另外开辟区域,创建一维数组,元素默认值为0(int类型),二维数组元素指向一维数组的首地址值


数组异常类型



quiz

声明:int[] x,y[];  以下选项允许通过编译的是:


a )   x[0] = y;  //no

b)    y[0] = x; //yes

c)    y[0][0] = x;//no

d)    x[0][0] = y;//no

e)    y[0][0] = x[0];//yes

f)    x = y; //no


一维数组:int[] x  或者int x[] 

 

二维数组:int[][] y 或者  int[] y[]  或者 int  y[][]


int[] x,y[];//x为一维数组,int[]x,y为二维数组,int[]y[]



杨辉三角


使用二维数组打印一个 10 行杨辉三角.

1
1 1
1 2 1
1 3 3  1
1 4 6  4  1
1 5 10 10 5 1
 ....
 
【提示】
 1. 第一行有 1 个元素, 第 n 行有 n 个元素
 2. 每一行的第一个元素和最后一个元素都是 1
 3. 从第三行开始, 对于非第一个元素和最后一个元素的元素.

    yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];






常见数组算法实现

1.求数组元素的最大值、最小值、平均数、总和等

2.数组的复制、反转

3.数组元素的排序

syso(main)+Alt+/:快捷键

Ctrl+shift+F:







如上图,反转的两种写法


数组元素排序








猜你喜欢

转载自blog.csdn.net/lwz45698752/article/details/80286944
1.5