2016-02-21 24 views
4

我对Java真的很陌生,只是对数组有点挣扎。我有一段代码,当我按照教程编写时,我正努力去理解它,并且如果有人能够向我解释它,我会爱上它。按索引访问Java数组位置的值

我尝试过用各种不同的方法(向我的鸭子解释,写下来,等等)努力,仍然无法让我的头靠近它。我通常不会问,而且我总是拼命拼命地努力工作,但这一次我无法弄清楚。

int[] values = new int[3]; 

values[0] = 10; 
values[1] = 20; 
values[3] = 30; 

for(int i = 0; i < values.length; i++) { 
    System.out.println(values[i]); 
} 

我明白为什么:

  1. for循环通过迭代值在 “值”。
  2. 循环保持循环,直到i小于数组中的最后一个值。

但我不明白的是为什么我需要在System.out.println()声明中写values[i]。什么告诉Java i可以用在数组values[]

对不起,如果这对你来说是一个微不足道的问题,但这是我能想到的最好的地方。

+2

你真的有宠物鸭吗? :O – radoh

+0

由于方括号'[index]'在'index'处访问数组的元素。 –

+2

由于'3'指向第4个数组元素,因此您会在行[values] [3] = 30;'行上得到'ArrayOutOfBoundsException'。 – radoh

回答

0

因为JAVA是不会读心术,除非你告诉你要打印的指数的Java值JAVA将无法理解:)

所以,你必须一提索引像values[0]values[1]

1

Java知道的值是一个数组类型。 Java中的数组通过整数进行索引,因此这里我们有一个整数,称为ii从0到小于values.length(在这种情况下是3)。所以我会是0,1和2。

索引 0,1,2相当于:

values[0] 
values[1] 
values[2] 
0

让我试着以一种简单的方式来解释: 只要你使用的语句:

int[] values = new int[3]; 

并为其分配值将在内存中有三个整数大小的内存块。

i初始化为零,并在for循环每次迭代, 将执行该语句System.out.println(values[i]);

将刚刚替补的i电流值values[i]values[0]对于第一轮等

所以它会检查我之前提到的内存中已经分配的值并打印出来。

0

System.out.println(values[i]);通知系统打印数组中给定索引的值。

如果我们说System.out.println(values[0]);,打印索引为0的值为10。

要打印出数组中的所有值,而不是像value [1],values [2]那样手动键入每个值的索引。我们使用for语句for(int i = 0; i < values.length; i++)创建变量i并将其赋值为0,因此在第一次运行循环时,values[i]values[0]

第一次运行循环后,由于for语句的i++部分,i从0递增到1。在第二次运行values[i]values[1]并且打印的是索引1处的值为20.只要i < values.lenght;返回true,该操作就会继续。