JAVA基础-数组
1 数组的定义
数组为类型相同的一组数据。
1 先声明,再赋值。
//类型 [] 数组名;
//int[] score;
2 边声明,边赋值。
//类型 [] 数组名=new 类型[]{值1,值2,值3};//此处不能加长度。
2 数组的定义
2.1 静态初始化—对内容初始化
语法:类型 []数组名=new 类型[]{值1,值2…}
int [] scores=new int[]{90,88,99,77};
int [] scores2= {90,88,99,70}; //简写
2.2 动态初始化—对长度初始化
语法:类型[] 数组名 = new 类型[长度];//必须要添加长度,一旦分配长度,该数组的空间不可改变。
(1)赋值:可以通过下标给数组赋值。
(2)可使用length函数获取数组的长度。
int[] scores = new int[5];
scores[0]=90;
scores[1]=88;
int n = scores.length; //获取元素的个数
栈stack:局部变量和对象的引用。(main方法里的变量都是局部变量,如int num=10;)
堆heap:new出来的东西。
数据类型 | 默认值 |
---|---|
byte/short/int/long | 0 |
float/double(float后加f) | 0.0 |
char | 空字符(’\u0000’) |
boolean | false |
String | null,表示变量不引起任何对象。 |
3 数组的使用
数组的遍历:可以通过下标取出数组内的元素。
3.1 for循环
int []arr=new int[]{21,32,11,7,90};
for(int i=0;i<arr.length;i++) {
System.out.print(arr[i]);
}
3.2 foreach循环
语法:for(元素的类型 元素变量名:数组或集合){ //操作 }
int []arr=new int[]{21,32,11,7,90};
for(int a:arr) {
System.out.print(a+" ");
}
3 数组的操作
3.1 求数组中的最大值
设定一个最大值,与后面的值比较交换。
3.2 求数组中的最小值
设定一个最小值,与后面的值比较交换。
3.3 数组中的求和
for循环遍历出数组中的数后,求和。
3.4 求数组中的平均值
for循环遍历出数组中的数后,求和后,取数组长度,求平均值。
3.5 数组的复制
栈和堆内位置开辟方式。
3.6 数组中的反转(交换位置)
反转:对称交换。
逆序输出:for(int i=num.Length()-1;i>=0;i–)
3.7 数组的排序
(1)冒泡排序(从小到大)
原理:两两比较,交换,小在前。比较完一轮,得到最大值在后。
排序次数:num.length - 1。
public class MaopaoSort {
public static void main(String[] args) {
int[] a={9,2,7,1};
for(int i=0;i<a.length-1;i++){
for(int j=0;j<a.length-i-1;j++){
if(a[j]>a[j+1]){
int temp =a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(int num:a){
System.out.println(num);
}
}
}
(1)选择排序(从小到大)
原理:依次与后面的数据比较,交换,小在前。比较完一轮,得到最小值在前。
排序次数:num.length - 1。
public class XuanzheSort {
public static void main(String[] args) {
int[] a = {9, 2, 7, 1};
for (int i = 0; i < a.length-1; i++) {
for (int j = i + 1; j < a.length; j++) {
if (a[i] > a[j]) {
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
for (int num : a) {
System.out.println(num);
}
}
}
4 二维数组定义及应用
-
语法:
-
类型[][] 数组名=new 类型[10][20];
类型[][] 数组名=new 类型[5][];
可以看作行或列
int[][] num = new int[10][20];
一条烟 num
一包烟 num[0]
一支烟 num[0][0]
数字转为数组可采用的表达方式。
5 数组注意事项
(1)下标越界的问题:[5]包含的范围为0~4,修改下标解决。
(2)空指针异常:对数据进行初始化加以解决。
String []name=new String[] {"s","l"};
name=null;//运行会报错
System.out.println(name[1]);//java.lang.NullPointerException空指针异常