龙空技术网

2.基本语法(数组)

异现场调查科 630

前言:

目前同学们对“java语言中数组在静态和动态赋值时都判越界”大概比较珍视,你们都想要学习一些“java语言中数组在静态和动态赋值时都判越界”的相关资讯。那么小编在网上搜集了一些有关“java语言中数组在静态和动态赋值时都判越界””的相关知识,希望咱们能喜欢,姐妹们快快来学习一下吧!

数组

数组:相同数据类型的数据的组合。

如: int score1 = 72;

int score2 = 90;

int score3 = 59;

使用数组:

1.数组的初始化

int[] scores1 = new int[]{72,90,59};//静态初始化:在声明并初始化数组与给数组相应的元素赋值操作同时进行。

int scores2[] = new int[3];//动态初始化:在声明并初始化数组与给数组相应的元素赋值操作分开进行。

scores2[0] = 72;

scores2[1] = 90;

scores2[2] = 59;

//声明数组的错误写法:

1)String[] names = new String[5]{"AA","BB","CC"};

2)int i[10];

3)int i = new int[];

注:不管是动态还是静态初始化数组,一定在创建的时候,就指明了数组的长度!

2.如何引用数组元素:通过数组的下角标的方式。下角标从0开始,到n-1结束。其中n为数组的长度。

3.数组的长度:通过数组的属性length来调用。

System.out.println(scores2.length);//3

4.如何遍历数组

for(int i = 0;i < scores1.length;i++){

System.out.println(scores1[i]);

}

5.关于数组元素的默认初始化值

1)byte short int long 而言:0

2)float double 而言:0.0

3)char而言:空格

4)boolean而言:false

5)引用类型变量而言:null

6.数组的内存结构

对于数组来讲:

二维数组

1.声明并初始化

//一维:

int[] i = new int[12];

i[0] = 12;

int[] j = new int[]{12,3};

//二维:

1)String[][] str = new String[4][3]; //4行3列

2)String[][] str1 = new String[4][];

str1[0] = new String[3];

...

str1[3] = new String[5];

3)

int[][] arr = new int[][]{{1,2,3},{4,5},{6}};

2.如何引用二维数组的元素:arr[1][0] = 12;

3.二维数组的长度:arr.length;//3

arr[1].length;//2

4.遍历二维数组

for(int i = 0;i < arr.length;i++){

for(int j = 0;j < arr[i].length;j++){

System.out.print(arr[i][j] + "\t");

}

System.out.println();

}

5.二维数组的结构:

数组的常见异常

1.数组下标越界的异常:java.lang.ArrayIndexOutOfBoundsException

int[] i = new int[10];

i[0] = 90;

i[10] = 99;

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

System.out.println(i[m]);

}

2.空指针的异常:NullPointerException

第一种:

boolean[] b = new boolean[3];

b = null;

System.out.println(b[0]);

第二种:

String[] str = new String[4];

str[3] = new String("AA");//str[3] = "AA";

System.out.println(str[3].toString());

//第三种:

int[][] j = new int[3][];

j[2][0] = 12;

数组的常见的算法问题

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

2.数组的复制和反转

情况1:

情况2:(如何实现复制)

数组的反转:

// 数组元素的反转

// for(int i = 0;i < arr.length/2;i++){

// int temp = arr[i];

// arr[i] = arr[arr.length-1 - i];

// arr[arr.length - 1 - i] = temp;

// }

for (int x = 0, y = arr.length - 1; x < y; x++, y--) {

int temp = arr[x];

arr[x] = arr[y];

arr[y] = temp;

}

拓展:String str = "abcdefg";

数组的排序:

插入排序

直接插入排序、折半插入排序、Shell排序

交换排序

冒泡排序、快速排序(或分区交换排序)

选择排序

简单选择排序、堆排序

归并排序

基数排序

// 使用冒泡排序使数组元素从小到大排列

// for (int i = 0; i < arr.length - 1; i++) {

// for (int j = 0; j < arr.length - 1 - i; j++) {

// if (arr[j] > arr[j + 1]) {

// int temp = arr[j];

// arr[j] = arr[j + 1];

// arr[j + 1] = temp;

// }

// }

// }

// //使用直接选择排序使数组元素从小到大排列

// for(int i = 0; i < arr.length - 1; i++){

// int t = i;//默认i处是最小的

// for(int j = i;j < arr.length;j++){

// //一旦在i后发现存在比其小的元素,就记录那个元素的下角标

// if(arr[t] > arr[j]){

// t = j;

// }

// }

// if(t != i){

// int temp = arr[t];

// arr[t] = arr[i];

// arr[i] = temp;

// }

// }

还可以调用:Arrays工具类:Arrays.sort(arr);

标签: #java语言中数组在静态和动态赋值时都判越界