java方法中什么时候有参数?在JAVA的方法里怎么会有对象参数呢
大家好,今天来为大家解答java方法中什么时候有参数这个问题的一些问题点,包括在JAVA的方法里怎么会有对象参数呢也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
JAVA main方法中如何引用带参数的方法
你的setData(String[] goodsName1,double[] goodsPrice1,int[] custNo1,String[] custBirth1,int[] custScore1)方法在你的第一个类中,所以,要在别的类中调用这个方法的话,就要new一个这个类对象,通过对象调用这个方法,假设你的第一个类的名字为First,First first=new First();first.setDate(这里是你对应的参数);这样就可以了.但是,因为你这个setData(String[] goodsName1,double[] goodsPrice1,int[] custNo1,String[] custBirth1,int[] custScore1)前面有关static关键字,你也可以直接用你的第一个类的类名直接调用这个方法.假设你的第一个类的名字为First;First.setData(这里是你对应的参数);这样就可以了.
在JAVA的方法里怎么会有对象参数呢
问出这样的问题你应该是原来只学过 C或其他面向过程的语言吧
建议你先建立好面向对象的思想
public static void fun(Demo d2)
在面向对象的语言里是可以这样的,
具体到java,首先这并不是传对象,而是对象的引用,引用相当于 C里面的&a,所以调用方法是并不是把对象复制一份传递给它,而只是将对象的引用传过去,而对象只有一个。
拿你上面的程序来说 d1也是对象的引用,fun(d1);将应用(而不是对象本身)复制一份传递到方法fun()里,此时fun()方法外面和fun()方法内操作的两个引用指向同一个对象,这跟 C里面传指针类似(但是是有区别的)。
如果你原来学的 C,现在想面向对象建议你还是先看看C++的书,可以让你平滑的过渡,建立起面向对象的概念,建议你看老外的书,中译本的也可以,国内的大部分都是上来就进入语法了,你现在先要看面向对象思想
---------------------------------------------------------
这个堆内存里的对象的引用就是这个栈内存里的这个变量名呢?
:)确切的说是"栈内存里的这个变量"的值
例如在我提出问题的那个代码里 D1就是对象的引用是吗?
:)是的
那么在fun方法里 D2也是已经被创建好了的对象吗??
:)上面已经过了,d2不是对象,是引用和d1一样
D1调用FUN()方法的时候 D1是不是引用了D2所引用的对象呢?
:)反了,而且反过来说也不确切.其实就是把d1的值复制给d2,那么d2也成了d1所指向对象的引用了,也就是他们此时操作的是同一个对象了(都是d1指向的那个).
执行完FUN()方法的时候D1.temp的值当然会变成1000了
Java中函数参数的传递是怎样进行的
Java中函数参数的传递是按值传递。
下面证明Java中参数传递是完完全全是传值而不是传址。
一:
package com.sitinspring;
public class ChangeClass{
public void changeInt(int i){
i=5;
}
public void changeLong(long i){
i=555;
}
public void changeString(String str){
str="5555";
}
public void changeMember(Member member){
member=new Member("Cindy",35);
}
public void changeMemberField(Member member){
member.setAge(20);
member.setName("Andy");
}
public static void main(String[] args){
ChangeClass changeClass=new ChangeClass();
int intValue=10;
changeClass.changeInt(intValue);
System.out.println(intValue);
long longValue=10;
changeClass.changeLong(longValue);
System.out.println(longValue);
String stringValue="1234";
changeClass.changeString(stringValue);
System.out.println(stringValue);
Member member2=new Member("Douglas",45);
changeClass.changeMember(member2);
System.out.println(member2);
Member member=new Member("Bill",25);
changeClass.changeMemberField(member);
System.out.println(member);
}
}
二:
package com.sitinspring;
public class Member{
private String name;
private int age;
public Member(String name,int age){
this.age=age;
this.name=name;
}
public String toString(){
return"Member name="+name+" age="+age;
}
public int getAge(){
return age;
}
public void setAge(int age){
this.age= age;
}
public String getName(){
return name;
}
public void setName(String name){
this.name= name;
}
}
输出:
10
10
1234
Member name=Douglas age=45
Member name=Andy age=20
解释:
第一个输出10是因为int是基本类型,传递的参数是intValue的拷贝,对拷贝的修改对原值intValue没有影响.
第一个输出10和上面是一个道理.
第三个输出1234.由于String是类类型, str是stringValue的地址拷贝,参数str指向的地址和stringValue的一致,但在函数changeString中,由于String的特殊性, str=“5555”和str=new String(“5555”)是等价的, str指向了新的”5555”所在的地址,此句后str就与原来的stringValue彻底脱离了联系.
第四个输出Member?name=Douglas?age=45的道理和上面相同.
第五个输出Member?name=Andy?age=20是因为changeMemberField函数中修改了参数member的值,也就是修改member指向实例的值,而这个实例正是member指向的值,因此member就变成了name=Andy且age=20.
结论:
Java中参数传递的都是值,对应基本类型,传递的是原值的拷贝;对于类类型,传递的是引用即地址的拷贝.
对于函数对参数的改变是否会影响原值的问题:值类型自然不会影响到原值.而对于类类型要看改变的是参数的地址还是值,如果是前者,参数和原引用指向了不同的地址,它们自然脱离了关系;如果是后者,修改的实例就是原引用指向的实例,这当然对原值进行了修改.
java中方法的参数的作用
如果参数是定义的传入参数,那么此参数就是动态传递,好处就是通过传递不同的参数值,来动态的执行此方法,增加了方法的复用性,减少了冗余代码,增加了代码的执行效率。
如果参数是返回参数,那么此参数定义了返回值的类型,这样可以方便的知道此方法的具体作用,而获取到执行的结果。
备注:如果放回值类型是空(void),实际上是默认有”return空“的,此时可以省略。
文章到此结束,如果本次分享的java方法中什么时候有参数和在JAVA的方法里怎么会有对象参数呢的问题解决了您的问题,那么我们由衷的感到高兴!