关于java通过方法调用传递一个数组的疑问

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于java通过方法调用传递一个数组的疑问相关的知识,希望对你有一定的参考价值。

例如:通过方法调用传递一个数组?
public class JavaDemo10

public static void main(String args[])

int i[]=new int[10];
init(i); //我不明折,为什么调用init方法,为什么在括号里入输i,而且i的值是多 少
print(i);//我不明折,为什么调用print方法,为什么在括号里入输i,而且i的值是多少

//声明一个方法,要求此方可以为数组中的内容初始化内容
//把堆内存空间的内容取出,之后在方法中进行加工
public static void init(int x[]) // (int x[])是接收i[]传递过来的数组,但x[]没有说等于i[]呀。

for (int y=0;y<x.length;y++)

x[y]=y+1;



public static void print(int x[])// (int x[])是接收i[]传递过来的数组,但x[]没有说等于i[]呀。

for (int y=0;y<x.length;y++ )

System.out.println("数据i["+y+"]="+x[y]);


你好,我把答案写在注释上了。
public class JavaDemo10
public static void main(String args[])
//java的基本思想一切皆为对象 下面的语句定义一个整型数组对象,长度为10
int i[] = new int[10];
// 调用init是为了初始化数组对象,
//括号里输入i是因为你写的init方法接收一个整型数组的参数
//i的值你可以使用System.out.println(i);进行观察,其实就是它在内存中的地址
init(i);
// 调用print是为了按照你要的方式输出数组中的元素,
//括号里输入i是因为你写的print方法接收一个整型数组的参数
//i的值你可以使用System.out.println(i);进行观察,其实就是它在内存中的地址
print(i);// 我不明折,为什么调用print方法,为什么在括号里入输i,而且i的值是多少

public static void init(int x[]) // 因为x[]只是一个形参,你传递的是实参,只要类型一样就能接收

for (int y = 0; y < x.length; y++)
x[y] = y + 1;



public static void print(int x[])//因为x[]只是一个形参,你传递的是实参,只要类型一样就能接收

for (int y = 0; y < x.length; y++)
System.out.println("数据i[" + y + "]=" + x[y]);


参考技术A 你好,我把答案写在注释上了。
public class JavaDemo10
public static void main(String args[])
//java的基本思想一切皆为对象 下面的语句定义一个整型数组对象,长度为10
int i[] = new int[10];
// 调用init是为了初始化数组对象,
//括号里输入i是因为你写的init方法接收一个整型数组的参数
//i的值你可以使用System.out.println(i);进行观察,其实就是它在内存中的地址
init(i);
// 调用print是为了按照你要的方式输出数组中的元素,
//括号里输入i是因为你写的print方法接收一个整型数组的参数
//i的值你可以使用System.out.println(i);进行观察,其实就是它在内存中的地址
print(i);// 我不明折,为什么调用print方法,为什么在括号里入输i,而且i的值是多少

public static void init(int x[]) // 因为x[]只是一个形参,你传递的是实参,只要类型一样就能接收

for (int y = 0; y < x.length; y++)
x[y] = y + 1;



public static void print(int x[])//因为x[]只是一个形参,你传递的是实参,只要类型一样就能接收

for (int y = 0; y < x.length; y++)
System.out.println("数据i[" + y + "]=" + x[y]);


参考技术B 那个init()和print()里面是不是因该放i[]啊?反正他的意思就是把数组i[]放进去执行

你是才学习JAVA啊?
参考技术C java 传参有两种类型。传值(值传递)和传地址(引用传递)
public static void init(int x[]) 引用的是init(i);中i的地址
public static void print(int x[]) 引用是print(i);中i的地址
x[]都是引用类型
基本类型参数都是值传递,引用类型像数组,集合都是引用传递,值传递后你改变参数的值,原来的数不会改变,就相当于重新开辟一块空间,改变的是新空间的值,引用传递,是把引用(i的地址)传过去了,没有开辟空间,你改变值还是改变原来空间的值,
参考技术D 那就返回值定义为List类型就可以了。

以上是关于关于java通过方法调用传递一个数组的疑问的主要内容,如果未能解决你的问题,请参考以下文章

关于 php 调用 其他语言写的Web Service SOAP 接口的参数传递问题

关于java scanner类简化输入的一点疑问

(我是初学者)自己关于java初学函数方法时的一些疑问即验证

java调用方法

关于用java反射调用一个类里面的方法并执行

关于JAVA调用Python脚本并传递参数