【Java】数组
数组
将多个数据合并成一个整体。就像变量的一组集合。
public class Main {
public static void main(String[] args) {
String fruit1 = "りんご";
String fruit2 = "みかん";
String fruit3 = "いちご";
String fruit4 = "メロン";
String fruit5 = "バナナ";
System.out.println(fruit1);
System.out.println(fruit2);
System.out.println(fruit3);
System.out.println(fruit4);
System.out.println(fruit5);
}
}
这段代码是为了展示水果的种类。这也是正确的,但是每次添加一种新的水果类型时,变量”fruit”的数字就会增加,那我究竟要创建多少个System.out.println~的代码呢?变量”fruit”上的数字越多,越容易出错。而且,这样做非常麻烦。
在类似的情况下,数组能够发挥作用。
讲解书写方式之前,先解释一下数组是什么样的东西,好吗?
我的数组形象

这是一个仓库。
根据查看图片,可以看到仓库里有货架,货架上摆满了纸箱。
这个纸箱里装着一个苹果。
另一个纸箱里装着一个橙子。
然后又有另一个纸箱里……依此类推,每个纸箱都装着不同种类的水果。
这个纸箱被称为”要素”。
苹果、橙子等水果被称为”值”。

而这个纸箱(元素)整齐地排列在称为水果架的货架上。
这个货架上整齐地摆放着纸箱(元素),这就是数组的状态。

这些整齐摆放的纸箱(物品)看起来很干净,但由于上面没有写字,不打开看一下就完全不知道里面装着什么。
因此,我們決定給每個紙箱(元素)編上編號進行管理。
這個編號被稱為索引(或者是指標)。
對於這個索引,有一點需要注意。
它必須從0開始。
以下是一种可能的中文表达方式:
[0] 苹果
[1] 橙子
[2] 草莓
·
·
·
这样就是。
所以,请不要忘记从[0]开始。
我需要苹果箱子(要素),所以拿来一个苹果箱子吧!
一提到,橘子就来了。
简化描述如下:
数组(货架)…以从0开始的索引号来管理存储的元素。
元素(纸箱)…存储着值。
值…元素内部的内容(如苹果、橘子等水果)。
数组的编写方式 de \
既然已经解释了数组的概念,接下来我将具体地介绍数组的写法。
1.配列変数の宣言
2.要素の作成と代入
配列需要经过两个步骤。首先是1. 声明数组变量。
1.声明数组变量
创建变量时的方法已经被改变。
整数 number;
字符串 name;
等等
变量名
创建了一个新的容器并进行了声明,以便将变量放入其中。
这是它的数组版本。
根据之前的解释。
(」`Д´)」< 快准备一个新的架子!
这是一个数组变量的声明。
要素の型[] 配列変数名
将此格式应用于水果计划。
String[] fruits
附近会准备一个新的架子
提示是…
类型名称和方括号之间不需要空格。
数组变量名可以使用任意名称,但要使用复数形式。
创建和赋值元素
刚刚通过数组变量声明准备好了一个新的货架来放置水果。
目前还没有放置任何东西。
只是有一个货架。
所以我们现在下达新的指令。
带来五个新的纸箱,然后把它们放在架子上!
这个讲座的方式
配列変数名 = new 型[要素数]
旁边,适应进去的话
fruits = new String[5]
這裡需要注意的是元素數量。
由于索引从0到4,所以你为什么不认为它是4呢?但事实并非如此。这是指元素的数量,所以是指箱子的数量。因为我们要为每个箱子分配从0开始的编号。
零 一 二 三 四
因此,要使总数为5,[ ] 中的数字就是5。
public class Main {
public static void main(String[] args) {
String[] fruits;
fruits = new String[5];
}
}
总结到这里就是这样的,还可以进一步缩短代码。
1.声明数组变量
2.创建和赋值元素
这是一种一行填写的方法。
型[] 配列変数名 = new 型[要素数]
public class Main {
public static void main(String[] args) {
String[] fruits = new String[5];
}
}
更易于阅读了。
在数组中给元素赋值和调用元素的值。
我已经准备好新的书架。
我还准备好了新的纸箱。
好了,下面我们要开始把水果放进纸箱里了。
关于水果的摆放方法,我记得我们说过在纸箱上标有索引。
我们可以利用这个索引来将水果放入纸箱中。
public class Main {
public static void main(String[] args) {
String[] fruits = new String[5];
fruits[0] = "りんご";
System.out.println(fruits[0]);
}
}
在第4行中 fruits[0] = “りんご”;的位置上,
( 」`Д´)」< 把苹果放进水果架上的第一个盒子里!
就像是发出了一个指令(给数组的元素赋予一个值)
在第5行的System.out.println(fruits[0]);处,
( 」`Д´)」< 去确认一下水果架上第一个箱子的内容!
也就是调用它的值。
りんご
这表示…
我现在理解了元素的插入和调用方式,所以再次尝试编写代码。
public class Main {
public static void main(String[] args) {
String[] fruits = new String[5];
fruits[0] = "りんご";
fruits[1] = "みかん";
fruits[2] = "いちご";
fruits[3] = "メロン";
fruits[4] = "バナナ";
System.out.println(fruits[0]);
System.out.println(fruits[1]);
System.out.println(fruits[2]);
System.out.println(fruits[3]);
System.out.println(fruits[4]);
}
}
最后代码好长啊!数组完全没意义嘛!
只是写作方式改变了而已,变成了毫无意义的状态。
有什么办法呢…?
1. 要素の型[] 配列変数名 = new 要素の型[] {値1,値2,値3,・・・}
2. 要素の型[] 配列変数名 = {値1,値2,値3,・・・}
有两种方法!只需一种选择:在这个表达式中,可以一次性声明数组变量、创建元素、赋值和赋予值。……那之前的解释是什么呢……就变成了要素的值已经确定的情况下,最好使用这个表达式。
例如,…
int[5] number = new java.util.Random().nextInt(10);
随机生成一个长度为5的整数数组,其中数字的取值范围在0到9之间。
情况发生时,请在上述公式中的五个元素中随机填入0到9的数字。
- 用要素的类型[]声明一个数组变量名,并赋予初始值为{值1, 值2, 值3, …}
如果是这样,我不知道要输入什么数字。
在这种情况下,无法使用上述的公式。
int[] numbers = new int[5]
数字数组:int[] numbers = new int[5]
只有按照以往的方式去创建。
回到话题… 这次我们使用2吧。
public class Main {
public static void main(String[] args) {
String[] fruits = {"りんご","みかん","いちご","メロン","バナナ"};
System.out.println(fruits[0]);
System.out.println(fruits[1]);
System.out.println(fruits[2]);
System.out.println(fruits[3]);
System.out.println(fruits[4]);
}
}
代码大大缩短了。
只剩下System.out.println 部分了
根据结果来看,使用for循环。
但是在使用for循环之前需要先解释length,所以先解释length再解释for循环。
确认数组的元素个数
嗯…在水果架上有多少个纸箱来着?也许有人想知道纸箱的数量。
在这种情况下,我认为你可以向实际管理仓库的人询问同样的问题,也可以向电脑提问有关要素数量的问题。
配列変数名.length
public class Main {
public static void main(String[] args) {
String[] fruits = {"りんご","みかん","いちご","メロン","バナナ"};
int number = fruits.length;
System.out.println("フルーツの棚にはダンボール" + number + "個あるよ!");
}
}
在第四行中,int number = fruits.length; 语句中的fruits.length; 询问了元素的数量(箱子的数量),所以类型是int。
将元素的数量赋值给变量number。
在第5行中显示元素的数量。
フルーツの棚にはダンボール5個あるよ!
使用数组和for循环
使用循环重复利用所有元素。
因为已经解释了length的含义,所以使用for循环来简化System.out.println的代码。答案如下:
public class Main {
public static void main(String[] args) {
String[] fruits = {"りんご","みかん","いちご","メロン","バナナ"};
for (int count = 0; count < fruits.length; count++) {
System.out.println(fruits[count]);
}
}
}
第四行的 for 循环中的 count < fruits.length 部分, fruits.length 表示元素的数量,这里是5。 变量 count 初始值为0, 所以当 0 < 5 时,条件满足,会一直重复执行。
第五行的 fruits[count] 的部分,
由於變量 count 初始化值為 0,
所以呼叫 fruits[0],輸出的是「蘋果」。
由於迴圈設置為在 0 < 5 的範圍內循環處理,
所以會依次呼叫索引 [0] 至 [4],並輸出其值。
りんご
みかん
いちご
メロン
バナナ
顺便说一句,如果将第4行的 int count = 0 改为 int count = 3,那么 fruits[count] 就变成了 fruits[3],索引 [3] 到 [4] 将被调用并输出,所以显示结果如下:
メロン
バナナ
如果按照这段代码进行操作,即使有额外的项目,也只需在第3行进行添加,非常便捷的设计规范。
public class Main {
public static void main(String[] args) {
String[] fruits = {"りんご","みかん","いちご","メロン","バナナ","キウイ"};
for (int count = 0; count < fruits.length; count++) {
System.out.println(fruits[count]);
}
}
}
在第三行添加奇异果。
りんご
みかん
いちご
メロン
バナナ
キウイ
春ちゃん已经显示出来了。
用循环迭代处理数组中的元素称为 “遍历数组”。具体步骤如下:
for (int 変数名 = 0; 変数名 < 配列変数名.length; 変数名++)
如果只想要将数组中的所有元素输出,还可以使用扩展for循环的方法。
for (要素の型 変数 : 配列変数名)
public class Main {
public static void main(String[] args) {
String[] fruits = {"りんご","みかん","いちご","メロン","バナナ","キウイ"};
for (String count : fruits) {
System.out.println(count);
}
}
}
通过循环来进行汇总
你也可以利用这个循环来求元素的总和。
public class Main {
public static void main(String[] args) {
int[] numbers = {10,20,30,40,50};
int sum = 0;
for (int count = 0; count < numbers.length; count++) {
sum += numbers[count];
}
System.out.println(sum);
}
}
第四行的 int sum = 0; 表示必须在取出变量值之前对其进行赋值和初始化。因此,我们将 int sum = 0; 改写为在变量 sum 中赋值为 0。
以下是对第6行的sum += numbers[count];进行数值化的过程:
0 += 10
也就是计算0 + 10,并将计算结果赋值给变量sum。
这个过程将重复进行,10 + 20… 20 + 30…,直到将所有元素相加的结果。
150
以下为中文的翻译:”となります”
顺便提一下,我们可以使用if语句来询问有多少个大于30的数?
public class Main {
public static void main(String[] args) {
int[] numbers = {10,20,30,40,50};
int conditions = 0;
for (int count = 0; count < numbers.length; count++) {
if (numbers[count] >= 30) {
conditions++;
}
}
System.out.println(conditions);
}
}
3
使用与所添加的字符相对应的信息
当想要将整数随机显示时,可以使用以下代码:int 变量 = new java.util.Random().nextInt(3);
那么当想要将字符随机显示时,可以使用以下方法:String[] 字符数组 = {“A”, “B”, “C”};
int 随机索引 = new java.util.Random().nextInt(字符数组.length);
String 随机字符 = 字符数组[随机索引];
public class Main {
public static void main(String[] args) {
int[] word = new int[5];
for (int number = 0; number < word.length; number++) {
word[number] = new java.util.Random().nextInt(3);
}
for (int number = 0; number < word.length; number++) {
switch (word[number]) {
case 0:
System.out.println("あひる");
break;
case 1:
System.out.println("さくら");
break;
case 2:
System.out.println("どんぐり");
break;
}
}
}
}
在中文中可以使用 switch 语句来实现这个方法。
在第三行中,创建了一个包含5个整数的数组word,以准备5个新的货架和新的纸箱。
在第4至第6行的for循环中,意思是将0到2之间随机选取的数字分别依次赋值给word[number]。
第7至18行的for循环的意思是,在switch语句中查找存储在word[number]中的数字,如果找到与之匹配的数字,则输出其中所述的字符。(例如,如果word[0],则输出case 0所指示的“あひる”)
どんぐり
あひる
さくら
さくら
どんぐり
* 所显示在控制台上的文字每次都会变化。