java快速复习05(简洁版)-数组

java快速复习05(简洁版)-数组

01.数组介绍

​ 数组可以存放多个同一类型的数据。数组也是一种数据类型,是引用类型。
​ 即:数组就是一组数据

02.数组的使用
数组的定义

​ 数据类型 数组名[] = new 数据类型[大小]
​ int a[] = new int [5];//创建了一个数组,名字是a,存放5个int类型数

数组的引用

​ 数组名[下标/索引/index]
​ 例如:你要使用这个数组的第4个数字 a[3],数组的下标从零开始。

动态初始化

​ 先声明数组
​ 语法:数据类型 数组名[]; 也可以 数据类型[] 数组名
​ 例如: int num[]; 或者int[] a;

​ 创建数组
​ 语法:数组名 = new 数据类型[大小];
​ a= new int[20];

03.数组的使用注意事项和细节

1)数组是多个相同类型数据的组合,实现对这些数据的统一管理。
2)数组中的元素可以是任何数据类型;包括基本类型和引用类型,但是不能混用。
3)数组创建后,如果没有赋值,有默认值
4)使用数组的步骤 1.声明数组并开辟空间 2.给数组各个元素赋值 3.使用数组
5)数组的下标是从零开始的。
6)数组下标必须在指定范围内使用,否则报错:下标越界异常

04.二维数组
介绍

​ Java的二维数组是一个具有两个维度的数据结构,它可以看作是一个由行和列组成的表格。在Java中,二维数组实际上是一个数组的数组,其中每个元素都是一个一维数组。

动态初始化1

1)语法: 类型[][] [][] 数组名 = new 类型[大小] [大小]
例如:int a[][] = new int[2][3]

动态初始化2

先声明: 类型 数组名[][];
再定义(开辟空间) 数组名 = new 类型[大小][大小];
赋值(有默认值,比如int 类型就是0)

静态初始化

定义: 类型 数组名[][] = {{1,2}, {1,2}, {1,2}}
使用即可[固定式访问]
例如:
int[][] arr = {{1,1,1}, {2,2,2}, {100}};

二维数组使用细节和注意事项
  1. 一维数组的声明方式有:
    int[] x 或者 int x[]

  2. 二维数组的声明方式有:
    int[][] y 或者int[] y[] 或者 int y[][]

  3. 二维数组实际上是由多个一维数组组成的,它的各个一维数组的长度可以相同,也可以不相同。比如: map[][] 是
    一个二维数组
    int map [][] = {{1,2},{3,4,5}}
    由 map[0] 是一个含有两个元素的一维数组 ,map[1] 是一个含有三个元素的一维数组构成,我们也称为列数不等
    的二维数组

05.题目
1.下面数组定义正确的有那几个?
A. String strs[] = {'a', 'b', 'c'};
B. String[] strs = {"a", "b", "c"};
C. String[] strs = new String{"a", "b", "c"};
D. String[] strs = new String[]{"a", "b", "c"};
E. String[] strs = new String[3]{"a", "b", "c"};

正确的有B,D

2.写出结果
String foo = "blue";
boolean[] bar = new boolean[2];
if(bar[0]) {
    foo = "green";
}
System.out.println(foo);

结果是:blue
boolean未赋值时的默认值为false。

3.以下java代码输出的结果为?
int num = 1;
while(num < 10) {
    System.out.println(num);
    if (num > 5) {
        break;
    }
    num += 2;
}

输出的结果是:1 3 5 7

4.已知有个升序数组,要求插入一个元素,该数组顺序依然是升序,例如:
[10, 12, 45, 90],要求添加23后,数组为[10, 12, 23, 45, 90]
public class Homework04 {
	public static void main(String[] args) {
		int[] arr = {10, 12, 45, 90};
		int insertNum = 23;
		int index = -1;//index就是要插入的位置

		//思路
		//遍历arr数组,如果发现 insertNum <= arr[i],说明位置找到。
		//使用 index 保留 index = i;
		for (int i = 0; i <= arr.length; i++) {
			if (insertNum <= arr[i]) {
				index = i;
				break;
			} 
		}
		if (index == -1) {
			index = arr.length;
		}
		//数组扩容
		//先创建一个新的数组,大小 arr.length + 1
		int[] arrNew = new int[arr.length + 1];
		for (int i = 0, j = 0; i < arrNew.length; i++) {
			if (i != index) {
				arrNew[i] = arr[j];
				j++;
			} else {
				arrNew[i] = insertNum;
			}
		}
		arr = arrNew;

		for (int i = 0; i < arrNew.length; i++) {
			System.out.print(arrNew[i] + "\t");
		}
	}
}
5.随机生成10个整数(1_100的范围)保存数组,并倒序打印以及求平均值、求最大值的下标、并查找里面是否有8。
public class Homework05 {
	public static void main(String[] args) {
		int arr[] = new int[10];
		for (int i = 0; i < arr.length; i++) {
			arr[i] = (int)(Math.random() * 100) + 1;
		}
		System.out.println("arr元素情况");
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + " ");
		}
		System.out.println("\narr元素情况(倒序)");
		for (int i = arr.length-1; i >=0; i--) {
			System.out.print(arr[i] + " ");
		}

		double  sum = arr[0];
		int max = arr[0];
		int maxIndex = 0;
		for (int i = 1; i < arr.length; i++) {
			sum += arr[i];
			if (max < arr[i]) {
				max = arr[i];
				maxIndex = i;
			}
		}
		System.out.print("\n最大数是:" + max + "  下标是:" + maxIndex);
		System.out.println("\n平局值是:" + sum / arr.length);

		int findNum = 8;
		int index = -1;
		for (int i = 0; i < arr.length; i++) {
			if (findNum == arr[i]) {
				System.out.println("找到数" + findNum + " 下标=" + i);
				index = i;
				break;
			}
		}
		if (index == -1) {
			System.out.println("没有找到该数字" + findNum);
		}
	}
}
06.试写出以下代码的打印结果
char[] arr1 = {'a', 'z', 'b', 'c'};
char[] arr2 = arr1;
arr1[2] = '你';

for (int i = 0; i < arr2.length; i++) {
    System.out.println(arr[1] + " " + arr2[i]);
}

结果是: a,z,你,c a,z,你,c

07.冒泡排序代码
public class Homework07 {
	public static void main(String[] args) {
		int[] arr = {24,54,22,577,45,4};
		int temp = 0;
		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]) {
					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] + " ");
		}
	}
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值