我必须制作一个能够根据带数字的数组打印符号的程序,其数字对应于要打印的符号数量。
我让这个工作;这是代码:
class printChart {
int[] values;
void barChart(int[] values){
for (int i=0;i<values.length;i++){
int number = values[i];
for (int j=0;j<number;j++){
System.out.print("*");
}
System.out.println();
}
}
void demo(){
barChart(new int[] {2,5,0,4,3});
}
public static void main(String[] args){
new printChart().demo();
}
}
我的问题如下:Java如何知道{2,5,0,4,3}数组应该分配给变量值?我假设它是因为我设置void barChart
来传递int[]
值,但我想更多地了解内部工作原理以及正在发生的事情。
答案 0 :(得分:1)
在Java中,一切都是按值传递,知道价值是什么也很重要。
此方法
void demo(){
barChart(new int[] {2,5,0,4,3});
}
与此相同
void demo(){
int[] arr = new int[] {2,5,0,4,3};
barChart(arr);
}
在第一个中,创建了一个包含2,5,0,4,3值的新数组,其引用被复制到参数values
在barChart方法中。
在第二个中,创建了具有2,5,0,4,3值的新数组,并且引用被复制到变量arr。然后在barChart方法中将arr
(引用到数组)的值 复制到参数values
。
这就是它的工作原理以及为什么barChart方法知道这些值。
Łukasz也很好,第二行在你的程序中没有做任何事情,所以你可以改变这个:
class printChart {
int[] values;
void barChart(int[] values){
到这个
class printChart {
void barChart(int[] values){
答案 1 :(得分:1)
我不太确定你的问题是什么,但是让我告诉你你做了什么。
您已经实现了名为void barChart(int[] value)
的方法(功能)
要运行此方法,您必须将一维的Integer值数组传递给它。
现在是有趣的部分。
您已在代码行2中创建了一个类变量int[] values;
您还在方法void barChart(int[] value)
中创建了lokal变量“ value ”。
你所做的就是所谓的黯然失色。方法“barChart()”仅使用在调用时传递给它的lokal值
你从未使用过一次类变量,因此可以删除它。
现在,如果你想使用类变量,你可以:
a)更改变量的名称(类或本地)
b)在方法“barChart”中写一个this.value
而不仅仅是值。这将确保您使用的是类变量,而不是本地变量。