⑴ java对象数组类型的参数,太难懂了。
package ch14;
import java.util.*;
import ch11.sd; ★为什么要引用这个类?
//这个是多余的,没有必要,估计是引入多了,对运行没有影响的,
public class TestCal {
public static void main(String[] args) {
CalScore calScore=new CalScore();
Scanner input=new Scanner(System.in);
Student[] stus=new Student[5]; ★为什么这个数组类型是Student??
//因为你要生成的是Student类型的数组,此时数组里面每个元素为null
for(int i=0;i<stus.length;i++){
stus[i]=new Student(); ★为什么每次循环都需要实例化??
//java规定,所有对象使用前必须实例化,这里是分配内存给数组第i个元素,然后你就可以对数组元素操作了
System.out.println("请输入身高");
stus[i].hegiht=input.nextDouble(); ★为什么这个数组stus[i]后面调用了height?
//这个是给stus[i]里面的成员变量height赋值,一般不推荐这样写
}
System.out.println("平均身高是:"+calScore.cal(stus));
}
}
⑵ java 对象数组类型作为参数怎么理解
class Person{
public String name;
}
public class Test{
public static void main(String[] args){
String[] arr = new String[2];
Person p1 = new Person();
p1.name = "张三";
Person p2 = new Person();
p2.name = "李四";
arr[0] = p1;
arr[1] = p2;
}
}
⑶ java把组数作为参数,尝试用两种方式改变数组的元素,结果不同的原因
配合内存分布图
当没有注释的代码时,此时在main方法中调用change方法,然后将数内组作为参数传递容,此时传递的是地址值。虽然main方法中的arr和change方法参数里的arr看似名称一致,但是实际在栈中会有两份。就和上图一样。
本来main方法中的arr就是指向0x1122地址的数组,然后将这个地址赋给了change方法参数里的arr,所以此时change方法里的arr也指向了0x1122地址的数组。所以如果对这个数组里的内容进行改动,通过两个arr访问都是一样的。所以通过change改动数组内容,main方法中也能够看到修改后的内容
如果加上注释的那一行代码。因为重新new一个新的数组,然后将其地址值改成了0x3344,所以change方法里的arr不再指向0x1122,所以你无论怎么修改内部数据,和main方法中的arr也没有关系
如上做一个简单的总结
就比如有两个人共用一个卫生间。一个人很邋遢给厕所里搞得很脏,另一个人进去就能看到厕所很脏
如果两个人各有一个卫生间。一个人哪怕在厕所生火做饭,另一个人也看不到
⑷ java中数组是怎么作为函数参数进行传递的
举个例子和你说。
传递数组参数:
1. 传递数组
要传递数组到方法里,只要指明传入的参数是一个数组即可。
例:
public class ArrayDemo //定义主类
{
public static void main(String args[])
{
int a[]={8,23,7,6,9,23}; //定义一维数组
ArrayDemo min=new ArrayDemo (); //创建对象
min.arrayMin(a); //将一维数组a传入least()方法
}
public void arrayMin(int array[]) //参数array[]接受一维整形数组
{
int temp=array[0];
for(int i=0;i<array.length;i++)
if(temp>array[i])
temp=array[i];
System.out.println("最小的数为:"+temp);
}
}
从该例中可以看出,如果要将数组传递到方法里,只需在方法名后的括号内写上数组的名即可。二维数组的传递与一维数组相似,在需在方法里声明传入的参数是一个二维数组。
⑸ java数组作为参数,能直接覆盖吗
public class Test01 {//新建一个类
String s = new String("good");//创建一个对象名字为s内容为good
String[] ss = {"aaa"};//创建一个名为ss的数组只有1个数量内容为aaa
public void m_method(String str,String[] sa) {//设置一个公共的无返回值的名为m_method的函数 ()里面是参数
str = "bad";//把bad赋值给str
sa[0]="bbb";把bbb赋值给sa的第一个数组对象
}
public static void main(String[] args) {//程序入口
Test01 t1 = new Test01();//在Test01里创建一个名为t1的对象
t1.m_method(t1.s,t1.ss);//对象t1调用test01的m_method函数,t1.s也就是test01类的s也就是good作为第一个参数,t1.ss也就是test01类里面的ss也就是aaa作为第二个参数进行运行
System.out.println(t1.s+t1.ss[0]); //输出t1.s的值和t1.ss[0]的值;
}
⑹ 在Java中数组作为方法的参数的一个问题。
public static int add(int[] a)和public static int add(int a[]) 这两个是版一样的权 参数 是 int数组
public static int add(int a) 这个 参数 是 个 int
⑺ java 字符串数组作为参数传递结果未初始化
我明白你的意思。你是说result这个数组作为参数传递进去,在执行Converse方法后为啥版还是null对吗。其权实是这样。引用传递没错。但是你忘记了一件事。String [] result没有初始化,那么其实String [] result = null;所有成员变量会默认初始化,只不过引用型默认为null。这样一来,result=null。相当于你在Converse(input,result)时传了null进去。这时,pOutput=result ,即pOutput=null,执行这一句pOutput = wordArray.split(" ")后pOutput指向了一个String[]对象不为null了,但是方法结束后pOutput就弹栈了就死了而result还指向null;因此当该方法结束后result还是null。
⑻ java函数中怎么用数组做参数
java函数中用数组做参数的步骤:
在main函数里面加这段话:System.out.println("arg is"+args[0]),然后看输出:
This is a simple Java program
arg is XX。
在运行时输入java test xx yy zz,并且在main函数里面加这段话:System.out.println("arg is"+args[0]+" "+args[1]+" "+args[2]),然后看输出:
This is a simple Java program
arg is xx yy zz。
java函数 :
是一种特殊的函数。其主要功能是用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。
构造函数与类名相同,可重载多个不同的构造函数。
在JAVA语言中,构造函数与C++语言中的构造函数相同,JAVA语言中普遍称之为构造方法。