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}};
二维数组使用细节和注意事项
-
一维数组的声明方式有:
int[] x 或者 int x[] -
二维数组的声明方式有:
int[][] y 或者int[] y[] 或者 int y[][] -
二维数组实际上是由多个一维数组组成的,它的各个一维数组的长度可以相同,也可以不相同。比如: 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] + " ");
}
}
}