Java小白-3数组

1. 数组

1.1定义数组

int[] arr = new int[]{20,5,100,30,5}

int[] arr = {20,5,100,30,5}

int arr[] = new int[4];//源码中经常会看到的定义方式

数组定义格式:

数据类型[] 数组名 = new 数据类型[数据长度/元素个数];

访问数组中指定编号的元素:数组名[索引]

给数组中的元素赋值: 数组名[索引] = 数据值;

使用数组名.length可以获取数组长度。

直接打印数组名是获取了数组的堆内存地址值(内存图详细了解)

数据类型

默认初始化值

byte、short、int、long

0

float、double

0.0

char

一个空字符(空格),即’\u0000’

boolean

false

引用数据类型

null,表示变量不引用任何对象

//1.数据类型[] 数组名 = new 数据类型[数据长度/元素个数];
int[] arr1 = new int[3];//定义一个长度为3的数组1

//int[] arr2 = new int[]{1,2,3,4,5};
int[] arr2 = {1,2,3,4,5};//索引0 1 2 3 4

//2.访问数组中指定编号的元素:数组名[索引]
System.out.println("数组的第一个元素:" + arr2[0]);
int x = arr2[0];//获取组中元素
System.out.println("数组的第一个元素:" + x);

//3.给数组中的元素赋值: 数组名[索引] = 数据值;
arr2[1] = 100;
System.out.println("arr2[1]:" + arr1[1]);

//4.使用数组名.length可以获取数组长度。
int length1 = arr1.length;
System.out.println("数组arr1的长度:" + length1);

int length2 = arr2.length;
System.out.println("数组arr2的长度:" + length2);

//5.直接打印数组名是获取了数组的堆内存地址值
System.out.println(arr1);
System.out.println(arr2);

char[] ch = new char[4];

System.out.println(ch);//[I@3fa5ac

1.2 数组遍历

int[] arr = {1,2,3,4,5);//定义数组
for(int i=0; i<arr.length; i++) {//for循环遍历数组元素
    System.out.println(arr[1]);//通过索引访问元素
}

例1:数组遍历

String[] arr = {"a","b","c"};//定义数组
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[3]);

for(int i=0; i<4; i++) {
    System.out.println(arr[i]);
}
//或者
for(int i=0; i<arr.length; i++) {
    System.out.println(arr[i]);
}

/*
一个String数组中存储一些人名,奇偶报数
String[] arr = {“a”,”b”,”c”,”d”};
奇数同学为: a,c
偶数同学为: b,d
*/
String name1 = "奇数同学为:";
String name2 = "偶数同学为:";
for(int i=0; i<arr.length; i++) {
    if(i%2 == 0) {
        name2 = name2 + "" + arr[i];//输出:"偶数同学为:" + "+" + "a" + "c"
    } else {
        name1 = name1 + "" + arr[i];//输出:"偶数同学为:" + "+" + "b" + "d"
    }
}
System.out.println(name1);
System.out.println(name2);

例2:数组遍历

int[] arr = {11,22,33,44}
for(int x=0; x<4; x++) {
    System.out.println(arr[x]);
}
System.out.println("数组共有:" + arr.length + "个元素");
for(int x=o; x<arr.length; x++) {
    System.out.println(arr[x]);
}

例3:比大小

//思路:定义第一个元素为参照物,后面的每个元素和参照物比较。大于参照物就留下来

//定义数组
int[] arr = {1,2,3,4,5};
//定义参照物
int max = arr[0];
//遍历数组,获取0以外元素
for(int x=1; x<arr.length; x++) {
    if(arr[x] >max) {
        max = arr[x];
    }
}
System.out.println("数组中的最大值是:" + max);

1.3二维数组

  • 二维数组定义格式

    • 数据类型[][] 数组名;

    • 数据类型 数组名[][]; 不推荐

    • 数据类型[] 数组名[]; 不推荐

  • 初始化方式

    • 数据类型[][] 变量名 = new 数据类型[m][n];

    • 数据类型[][] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}};

    • 简化版格式:数据类型[][] 变量名 = {{元素…},{元素…},{元素…}};

int[][] arr = {{1,2,3},{10,20,30},{100,200,300}};

System.out.println(arr);
System.out.println(arr.length);
System.out.println(arr[0]);
System.out.println(arr[0].length);
System.out.println(arr[1]);
System.out.println(arr[2]);

//获取二维数组的元素
System.out.println(arr[0][0]);
System.out.println(arr[1][1]);
System.out.println(arr[2][0]);

1.3.1二维数组的访问

//定义一个长度为3,每个数组元素都是一个长度为4的数组的二维数组
int[][] arr = new int[3][4];
System.out.println(a);
System.out.println(a.length);
System.out.println(a[0]);
System.out.println(a[1]);
System.out.println(a[2]);

//访问二维数组中的第一个元素的第一个值
System.out.println(a[0][0]);//0
//赋值
a[0][0] = 100;
System.out.println(a[0][0]);//100


int[][] b = {{1,2},{3,4,5,6},{7,8,9}};
System.out.println(b);//
System.out.println(b.length);//3
System.out.println(b[0]);
System.out.println(b[1]);
System.out.println(b[2]);

System.out.println(b[0][0]);//1
System.out.println(b[2][2]);//9

int[][] c = new int[3][];
System.out.println(c);
System.out.println(c.length);//3
System.out.println(c[0]);//null
System.out.println(c[1]);//null
System.out.println(c[2]);//null

//System.out.println(c[0][0]);//NullPointerException
c[0] = new int[]{1,2,3};

System.out.println(c[0][0]);//1

1.3.2二维数组的遍历

int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};
for(int y=0; y<arr.length; y++) {
    for(int x=0; x=arr[y].length;x++) {
        System.out.println(arr[y][x] + "");
    }
System.out.println();//换行
}
/*
输出:
1  2  3  
4  5  6  
7  8  9
*/

1.4练习

1.4.1随机点名器

import java.util.Random;
public class Test {
	public static void main(String[] args) {
		//存储所有同学姓名->String
		String[] names = {"a","b","c","d","e");
		
		//总览全班同学姓名->遍历数组
		for(int i=0; i<names.length; i++) {
			System.out.println("第" + (i+1) + "个同学的姓名是:" + names[i]);
		}
		System.out.print("全班同学姓名:");
		for(int i=0; i<names.length; i++) {
			System.out.print("" + names[i]);
		}
		
		//随机点名->Random类
		Random r = new Random();
		int number = r.nextInt(name.length);//长度为5
		String name = names[number];//0 1 2 3 4
		System.out.println("随机点到的同学姓名是:" + name);
	}
}

2.斐波那契数列(兔子)

有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?

//定义数组
int[] arr = new arr();
//初始化第一个月和第二个月兔子的对数
arr[0] = 1;
arr[1] = 1;
//从第三个月开始,每个月的兔子对数是前两个月的兔子对数之和
for(int x=1; x<arr.length; x++) {
    arr[x] = arr[x-2] + arr[x-1];
}
//打印
System.out.println("第二十个月的时候兔子对数是:" + arr[19]);

//自java帮帮

猜你喜欢

转载自blog.csdn.net/WMY10001/article/details/82022308