「java参数传递教程」java函数作为参数传递
本篇文章给大家谈谈java参数传递教程,以及java函数作为参数传递对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
java 怎么传递参数?
传对象,之后通过反射,getClass()获得对应的类,具体代码如下
Class?type=object.getClass();
Method method=type.getMethod("getId",null);//getId为getId()方法
Object id=method.invoke(object,null);
Java参数传递
Java的方法参数传递都是值传递。这个问题需要楼主慢慢理解,如果基础薄弱(C、C++基础弱)就记住就好。如果基础好可以从内存角度理解。
从语法和简单层面理解:str是一个String类型的对象,传递给changeStr方法,传递的是str的引用内容,方法内的changeStr(String value),value变量和str指向了同一个对象,但是value重新赋值后,它的指向改变了,但是str的指向不会发生,所以str的输出还是“Hello”,而changeObjValue方法传入的TEST的对象pt给changeObjValue(TEST ref),ref变量和pt变量指向了同一对象,之后通过改变了对象的内容,pt变量的指向没变,但是执行的对象的变量变了。所以pt的ptValue值变了。
进一步理解,Java对字符串进行了特殊处理,因为字符串这种数据类型太常用了,为了节省内容提高效率。Java把字符串放入了常量池,所以我们没办法在运行时修改一个字符串对象的内容。也就是对value变量的赋值操作是重写建立了一个对象。楼主可以测试经典的java String的代码:
String a = "a";
String b = "a";
String c = new String("a");
String d = new String("a");
System.out.println(a==b);
System.out.println(a==c);
System.out.println(b==c);
System.out.println(d==c);
再深入,Java没有C和C++的指针概念,可以粗暴的理解Java的引用是一种特殊的指针(实际上Java尽量把程序猿从指针中解放出来,或者说避免直接操作内存对象)。有一种不负责的说法:Java的基本类型传递传递的是值,也就是值的副本,引用类型传递的时引用。但是要注意String对象的内容不可变,而且传递的引用指向不可变。运行时Java的局部变量在栈空间中(线程私有),对象在堆内存中(线程公有),changeStr方法相当于在堆内存中又开辟了一块儿空间重写分配了一个对象,但是str没有指向这个新new出来的对象。而changeObjValue方法修改的pt指向的对象的内容也就是修改的是堆内存的数据,ref和pt指向的是一块儿内存。所以pt的对象数据会变化。
Java方法的参数传递
我帮你解下迷惑吧。
java中传递对象参数,只是传递对象的在内存中的地址。
像你这个方法
public static void swap(DataWrap dw)
其中DataWrap dw是本方法内的变量
dw会指向传入对象的内存地址,现在假设这个Object的内存地址x0fe19,只是假设。
那么传过来的只是x0fe19,dw指向这个地方。
当你给dw重新赋值的时候,改变的是在这个地方的Object对应的属性,也就是传入的对象的属性了。
当你为dw赋null值的时候,其实只是让这个方法内的局部变量指向空而已,并不能改变传入对象的内容。
java方法参数怎么引用传递boolean
Java中的参数传递:分为值传递和引用传递
但本质上,Java中只有值传递。引用传递,其实可以理解为传的是类似指针的东西。
值传递就是把基本变量的值拷贝一份,传递这个拷贝。引用传递则是传递的引用的地址,也就是该变量在内存空间的地址。
1.值传递
只有基本数据类型采用值传递,特点是传递的是值的拷贝,传递完后两者就没有关系了。也就是说方法内和方法外的值互不相干
基本数据类型:
·整型:int,long,byte,short
浮点型:float,double
字符型:char
布尔型:boolean
注:8种基本数据类型以外的数据类型都为引用类型。
2.引用传递
指的是在方法调用时,传递的参数是按引用进行传递,其实传递的引用的地址,也就是变量所对应的内存空间的地址。
传递的是一个拷贝,即副本。也就是说,对于一个参数传递,存在两个地址指向同一个内存空间。这里我们可以用内存分配示意图来体现
3.String类型传递
先说结论,String类型传递与基本数据类型的传递效果相似。
说明:
String类对象一旦创建,其内容不可更改:
String类的所有方法都不会改变String类对象内容,要改变String类对象的值就必须创建一个新的String对象。
也就是说,当进行参数传递时,如果方法内对String类对象的值进行了修改,那么实际上是创建了一个新的String类对象,然后让原来的变量指向它而已。但是这个“原来的变量”是一份拷贝副本,只是一开始创建的时候与主方法中的传递的值相同而已,现在改变之后,两者就毫无关系了。
java中参数传递的具体步骤
有兴趣的看看这个,交流一下思想
有一根27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米
这五个位置上各有一只蚂蚁。木杆很细,不能同时通过一只蚂蚁。开始时,蚂蚁的头朝左还是朝右是任
意的,它们只会朝前走或调头,但不会后退。当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走
。假设蚂蚁们每秒钟可以走一厘米的距离。编写程序,求所有蚂蚁都离开木杆的最小时间和最大时间。
class Student{
String name;
int id;
public Student(String name, int id) {
//super();
this.name = name;
this.id = id;
}
}
public class SendTest {
public static void main(String args[]){
int id=99;
System.out.println(id);
test1(id);
Student s=new Student("cyq",99);
test2(s);
System.out.println(s.id);
//System.out.println(s.name);
}
public static void test1(int id){
}
public static void test2(Student s){
s.id++;
}
}
这样就很清楚了吧,这样的注释,加上去,非常清楚的就完成了.
java参数传递教程的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java函数作为参数传递、java参数传递教程的信息别忘了在本站进行查找喔。