数组
一、数组概念
1.数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。
2.数组既可以存储基本数据类型,也可以存储引用数据类型。
二、数组定义的格式
格式1:数据类型[] 数组名;
格式2:数据类型 数组名[];
三、数组的初始化
1.动态初始化
格式:数据类型[] 数组名 = new 数据类型[数组长度];
数组长度其实就是数组中元素的个数。
举例:
int[] arr = new int[3];
2.静态初始化
格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
举例:
int[] arr = new int[]{1,2,3};
解释:定义了一个int类型的数组,这个数组中可以存放3个int类型的值,并且值分别是1,2,3。
其实这种写法还有一个简化的写法
int[] arr = {1,2,3};
四、举例:
1.遍历一个数组
class ArrayDemo{
public static void main(String[] args ){
//定义一个数组
int[] arr = {12,15,8,17,5,13};
//先输出一个左中括号
System.out.print("[");
//利用for循环进行遍历
for(int x = 0; x<arr.length;x++){
//利用if语句判断是否为最后一个元素
if(x == arr.length-1){
System.out.println(arr[x]+"]");
}else{
System.out.print(arr[x]+", ");
}
}
}
}
2.冒泡排序
class ArrayDemo2{
public static void main(String[] args){
//定义一个数组
int[] arr = {12,10,18,9,13,5};
System.out.println("排序前:");
//调用遍历方法
printArray(arr);
//调用冒泡排序的方法并再次遍历
maoPaoSort(arr);
System.out.println("排序后:");
printArray(arr);
}
//创建遍历数组的方法
public static void printArray(int[] arr){
System.out.print("[");
for(int x = 0;x<arr.length;x++){
if(x == arr.length-1){
System.out.println(arr[x]+"]");
}else{
System.out.print(arr[x]+", ");
}
}
}
//创建冒泡排序的方法
public static void maoPaoSort(int[] arr){
for(int x =0;x<arr.length-1;x++){
for(int y =0;y<arr.length-1-x;y++){
if (arr[y]>arr[y+1]){
int temp = arr[y];
arr[y] = arr[y+1];
arr[y+1] = temp;
}
}
}
}
}
五、二维数组
1.概念:二维数组的元素就是一个一维数组,以及一维数组对应的长度
2.格式:
格式1:动态初始化
数据类型[][] 数组名称 = new 数据类型[m][n] ; (推荐第一种)
数据类型 数组名称[][] = new 数据类型[m][n] ;
举例:
int[][] arr = new int[3][2] ;
等号左边:
int:表示一个int类型
[][]:表示定义二维数组
arr :数组名称
等号右边:
new :在堆内存中创建对象
int :创建int类型数组
[3] :表示当前二维数组中有3个一维数组
[2] :这三个一维数组中每一个都有2个元素
格式2:
数据类型[][] 数组名称 =new 数据类型[m][] ;
举例:
int[][] arr = new int[3][] ;
当前二维数组中有m个一维数组,但是没有给定每一个一维数组的长度,长度可以动态给定!
格式3 :给定具体的元素内容,静态初始化
基本格式
数据类型[][] 数组名称 = new 数据类型[][]{{元素1,元素2..},{元素1,元素2...},{元素1,元素2...}...} ;
简写格式
数据类型[][] 数组名称 = {{元素1,元素2..},{元素1,元素2...},{元素1,元素2...}...} ;
举例:
int[][] arr = {{1,2,3},{4,5,6},{7,8,9}} ;
3.举例
1)遍历二维数组
class Array2Test{
public static void main(String[] args){
//定义一个二维数组
int[][] arr = {{1,2,3},{4,5,6},{7,8,9},{10,11,12}};
//进行遍历
for(int x = 0;x<arr.length;x++){
for(int y =0;y<arr[x].length;y++){
System.out.print(arr[x][y]+" ");
}
}
}
}
2)公司年销售额求和
某公司按照季度和月份统计的数据如下:单位(万元)
第一季度:22,66,44
第二季度:77,33,88
第三季度:25,45,65
第四季度:11,66,99
class Array2Test2{
public static void main(String[] args){
//定义最终结果变量
int sum = 0 ;
//定义二维数组,静态初始化
int[][] arr = {{22,66,44},{77,33,88},{25,45,65},{11,66,99}} ;
//遍历二维数组
for(int x = 0 ; x < arr.length; x ++){
for(int y = 0 ; y < arr[x].length; y++){
//求和
sum += arr[x][y] ;
}
}
System.out.println("该公司年销售额为:"+sum+"万");
}
}
3)键盘录入行数,输出杨辉三角形
import java.util.Scanner;
class Array2Test{
public static void main(String[] args){
//创建键盘录入对象
Scanner sc = new Scanner(System.in) ;
//提示并接收数据
System.out.println("请您录入一个行数:") ;
int n = sc.nextInt() ;
//)定义一个二维数组
int[][] arr = new int[n][n] ; //n行n列的数组
//遍历二维数组,并赋值
for(int x = 0 ; x < arr.length ; x ++){
arr[x][0] = 1 ;
arr[x][x] = 1 ;
}
for(int x = 2; x < arr.length; x ++){
for(int y = 1;y<=x-1; y++) {
arr[x][y] = arr[x-1][y]+arr[x-1][y-1] ;
}
}
for(int x = 0 ; x < arr.length ; x ++){
for(int y = 0 ; y < arr[x].length ; y++){
System.out.print(arr[x][y]+"\t") ;
}
System.out.println();
}
for(int x = 0 ; x < arr.length ; x ++){
for(int y = 0 ; y <=x; y++){
System.out.print(arr[x][y]+"\t") ;
}
System.out.println();
}
}
}