以下笔记整理自B站UP主韩顺平【零基础 快速学Java】韩顺平 零基础30天学会Java课程
数组的长度
可以通过数组名.length得到数组的大小/长度
数组的使用
使用方式1——动态初始化
//数组的定义
//数据类型 数组名[] = new 数据类型[大小]
int a[] = new int[5]; // 创建了一个数组,名字为a,存放5个int
//或者
//数据类型[] 数组名 = new 数据类型[大小]
int[] a = new int[5];
使用方式2——动态初始化
//先声明数组
//语法:数据类型 数组名[]; 或者 数据类型[] 数组名;
int a[]; 或者 int[] a; //这时a是null
//创建数组
//语法:数组名 = new 数据类型[大小];
a = new int[5]; //分配内存空间,可以存放数据
使用方式3——静态初始化
//初始化数组
//语法:数据类型 数组名[] = {元素值, 元素值, ... };
int a[] = {1, 2, 3, 4, 5};
数组属于引用类型,数组型数据是对象(object)
数组练习
创建一个char类型的26个元素的数组,分别放置'A'~'Z',使用for循环访问所有的元素并打印出来。
public class Array {
public static void main(String[] args) {
char[] chars = new char[26];
for(int i = 0; i < chars.length; i ++)
{
chars[i] = (char)('A' + i); //'A' + i是int类型,要强制类型转换
}
for(int i = 0; i < chars.length; i ++)
{
System.out.print(chars[i] + " ");
}
}
}
数组赋值机制
基本数据类型赋值,赋值方式为值拷贝
数组在默认情况下是引用传递,赋的值是地址
public class ArrayAssign {
public static void main(String[] args) {
//基本数据类型赋值,赋值方式为值拷贝
//数组在默认情况下是引用传递,赋的值是地址
int[] arr1 = {1, 2, 3};
int[] arr2 = arr1; //arr2的变化会影响arr1
arr2[0] = 10;
System.out.println("=====arr1的元素值如下=====");
for(int i = 0; i < arr1.length; i ++) {
System.out.print(arr1[i] + " "); //10 2 3
}
}
}
//输出结果
=====arr1的元素值如下=====
10 2 3
值传递和引用传递的区别
二维数组内存布局
二维数组的使用
动态初始化——列数不确定(一维数组的个数可以不相同)
public class TwoDimensionalArray {
public static void main(String[] args) {
/*
动态创建下面二维数组,并输出
i = 0: 1
i = 1: 2 2
i = 2: 3 3 3
有一个二维数组,每个一维数组的元素是不一样的
*/
//创建二维数组,但是只是确定一维数组的个数,每个一维数组还没有开数据空间
int[][] arr = new int[3][];
for( int i = 0; i < arr.length; i ++ ) { //遍历arr每个一维数组
//给每个一维数组开空间 new
//如果没有给一维数组 new,那么arr[i]就是null
arr[i] = new int[i + 1];
//遍历一维数组,并给一维数组的每个元素赋值
for( int j = 0; j < arr[i].length; j ++ ) {
arr[i][j] = i + 1; //赋值
}
}
//遍历arr输出
for( int i = 0; i < arr.length; i ++ ) {
//输出arr的每个一维数组
for( int j = 0; j < arr[i].length; j ++ ) {
System.out.print(arr[i][j] + " ");
}
System.out.print("\n"); //换行
}
}
}
对比C语言
定义数组时对第一维的长度可以不定义,但必须定义第二维的长度
例:
int a [] [3] = {1, 2, 3, 4, 5, 6};
系统会根据输入的总个数分配存储空间,易知这个二维数组有二行;
静态初始化
例:
int[][] arr = {{1,1,1}, {8,8,9}, {100}};
解读
1. 定义了一个二维数组 arr
2. arr 有三个元素(每个元素都是一维数组)
3. 第一个一维数组有 3 个元素 , 第二个一维数组有 3 个元素, 第三个一维数组有 1 个元素
杨辉三角
import java.util.Scanner;
public class YangHui {
public static void main(String[] args) {
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入所要生成的杨辉三角的行数:");
int length = myScanner.nextInt();
int[][] yanghui = new int[length][];
for( int i = 0; i < yanghui.length; i ++ ) {
//给每个一维数组分配空间
yanghui[i] = new int[i + 1];
for( int j = 0; j < yanghui[i].length; j ++ ) {
if(j == 0 || j == yanghui[i].length - 1) {
yanghui[i][j] = 1; //每行第一个元素和最后一个元素都赋值为1
} else {
yanghui[i][j] = yanghui[i - 1][j] + yanghui[i - 1][j - 1];
}
}
}
for( int i = 0; i < yanghui.length; i ++ ) {
for( int j = 0; j < yanghui[i].length; j ++ ) {
System.out.print(yanghui[i][j] + " ");
}
System.out.println();
}
}
}
二维数组使用细节和注意事项
二维数组练习
布尔类型的数组不给定初值默认是false
生成随机整数
(int)(Math.random() * 100) + 1 //生成 1 ~ 100 的随机整数
感谢抽出宝贵时间阅读的各位小读者们,创作不易,如果感觉有帮助的话,帮忙点个赞再走吧!你的支持是我创作的动力,希望能带给大家更多优质的文章。