1.数组
(1)构成:数组名称、数组元素、数据类型、元素索引(下标)
数据类型[]数组名;
数组名=new 数据类型[长度];
int[]x;
x=new int[100];
为了方便获得数组的长度,Java提供了一个length属性,在程序中可以通过"数组名.length"的方式获得数组的长度,即元素的个数。
(2)数组的简单使用
为元素赋值
法一:单个赋值
package boke;
public class Boke {
public static void main(String[] args) {
int[]arr=new int[4]; //定义可以存储4个元素的整数类型数组
arr[0]=1; //为第一个元素赋值1
arr[1]=2; //为第二个元素赋值2
System.out.println("arr[0]="+arr[0]);
System.out.println("arr[1]="+arr[1]);
System.out.println("arr[2]="+arr[2]); //没赋值的初始化为0
System.out.println("arr[3]="+arr[3]);
}
}
法二:一起赋值
package boke;
public class Boke {
public static void main(String[] args) {
int[] arr= {1,2,0,0}; //静态初始化
System.out.println("arr[0]="+arr[0]);
System.out.println("arr[1]="+arr[1]);
System.out.println("arr[2]="+arr[2]);
System.out.println("arr[3]="+arr[3]);
}
}
(3)数组遍历
作用:用来获取数组内的全部信息
使用循环语句完成数组遍历
(4)数组中最值的获取
package boke;
public class Boke {
public static void main(String[] args) {
int[] arr= {1,5,3,8,0}; //定义一个int类型的数组
int max = arr[0]; //max为最大值,首先假设第一个元素为最大值
for(int i=1;i<arr.length;i++) { //for循环遍历数组
if(arr[i]>max) { //比较arr[i]和max的值
max=arr[i]; //将最大值赋给max
}
}
System.out.println("数组arr中的最大值为:"+max);
}
}
(5)在数组的指定位置插入一个数据
思路:1.创建一个数组长度比之前多一的数组
2.再将原数组中的值复制到新的数组中,同时将指定位置的元素依次向后移动一个元素的位置
3.最后将目标元素保存到指定位置即可。
package boke;
public class Boke {
public static void main(String[] args) {
int[]arr = {10,11,13,14,15};
int score = 12;
int[]arr2=new int [arr.length+1]; //定义一个比arr数组长度大一的新数组
for(int i=0;i<3;i++) {
arr2[i]=arr[i];
} //将arr拆分成两部分,将12插入到拆分后的两个数组中间
arr2[2]=score;
for(int i=3;i<arr2.length;i++) {
arr2[i]=arr[i-1];
}
System.out.println("添加新元素之前的arr数组:");
for(int i=0;i<arr.length;i++) {
System.out.println(arr[i]+",");
}
System.out.println("");
System.out.println("添加新元素之后的arr2数组:");
for(int i=0;i<arr2.length;i++) {
System.out.println(arr2[i]+",");
}
}
}
(6)数组排序
冒泡法
package maopao;
public class Maopao {
public static void main(String[] args) {
// TODO Auto-generated method stub
//冒泡排序
int[]arr= {3,5,6,1,8};
for(int i=0;i<arr.length;i++) { //循环打印数组
System.out.print(arr[i]+"");
}
System.out.println(); //用于换行
for(int i=1;i<arr.length;i++) { // 外层循环定义需要比较的轮数
for(int j=0;j<arr.length-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;i++) { //完成冒泡排序,再次循环打印数组元素
System.out.print(arr[i]+"");
}
}
}
思想:一轮排查找出最大,剩下的依次两两比较,知道没有任何一对元素需要比较为止。
(7)二维数组
1.三种方式
1.数据类型[][]数组名=new 数据类型[行数][列数];
int[][]xx=new int[3][4];
2.数据类型[][]数组名=new 数据类型[行数][];
int[][]xx=new int[3][]; // 给行数但不确定列数
3.int[][]xx= {(1,2),(3,4,5,6),(7,8,9)};
2.小试牛刀
package JAVA04;
import java.util.Scanner;
public class work06 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//从键盘上输入16个整数,保存在4*4的二维数组中,输出数组偶数行且偶数列中的所有元素。
int i,j=0;
int[][]a=new int[4][4];
Scanner sc=new Scanner(System.in);
System.out.println("请输入数组a的所有元素");
for(i=0;i<4;i++) {
for(j=0;j<4;j++) {
a[i][j]=sc.nextInt();
}
}
System.out.println("偶数行和偶数列的所有元素如下:");
for(i=0;i<4;i++) {
for(j=0;j<4;j++) {
if(i%2!=0&&j%2!=0) {
System.out.print(+a[i][j]+" ");
}else{System.out.print(" ");}
}
System.out.println( );
}
}
}