Ⅰ java 类之间数值的传递
Java语言中方法间的数据传递方法
方法是数据加工处理或相应操作的基本模块,为了实现某种需求而调用一个方法,需要为被调用的方法传递数据,以便于被调用的方法依据所提供的数据进行相应的操作。
C++语言的函数间的数据传递可以分为:数值传递、地址传递和引用传递。地址传递的形参是同类型的指针,由于指针操作的不安全等问题,Java语言屏弃了指针,故Java语言方法之间的数据传递只有数值传递和引用传递。
1方法间的数值传递
所谓的数值传递又称为值传递,数值传递的特征是:调用方法的实参可以是常量、变量或者是表达式,形参则是对应数据类型的变量。如果实参是变量,则实参
和形参是相互独立的两个单元。在方法调用的过程中,实参的值将拷贝到形参中,此后形参的任何修改都不会影响实参。数值传递方法见例1。
[例1]数值传递调用方法举例:
importjava.io.*;
public class ValueTransmit
{publicstatic void main(Stringargs[])
{intx=5,y=66;
System.out.println(“在主方法,交换前的:x=”+x+“,y=”+y);
swap(x,y);
System.out.println(“在主方法,交换后的:x=”+x+“,y=”+y);
}
static voidswap(int x,int y)
{int temp;
System.out.println(“在swap方法未交换时:x=”+x+“,y=”+y);
temp=x;x=y;y=temp;
System.out.println(“在swap方法交换之后:x=”+x+“,y=”+y);
}
}
例1程序的输出结果如下所示:
在主方法, 交换前的:x=5,y=66
在swap方法未交换时:x=5,y=66
在swap方法交换之后:x=66,y=5
在主方法, 交换前的:x=5,y=66
在例1程序中,方法调用的“swap(x,y);”中的实在参数x,y是两个单元,而形式参数中的x,y又是两个单元,它们是互相独立的。所以,对形式参数的改变并不影响实在参数的内容;程序的运行结果也验证上述观点。
2方法间的引用传递
方法之间的数据传递还有一种方法,就是引用传递。引用传递的实质就是将实在参数的地址传递给形式参数引用,也就是形式参数是实在参数的别名。
Ⅱ Java中函数参数的传递是怎样进行的
java中的参数传递比较简单,都是值传递,没有引用的说法,就算是对象也是将其引用的地址传递过去,不想。net还有引用的说法。
Ⅲ java 中 如何通过命令行来传递参数
可以在命令行运行java程序时加上程序的参数。
例子如下:
public class HelloWorld{
public static void main(String args[]){
System.out.println("temp=" + args[0]);
}
}
源代码截图:
解释一下: String[ ] args
该参数,是一个字符串数组,用来接收从命令行输入的参数
1. 参数之间用空格隔开
2. java解释器会自动处理,把用空格隔开的每一个参数通过args数组传递给买呢()方法。
3. 参数的下标从0开始,args[0]表示第一个参数,例如java HelloWorld 10 20 30
4.可以有多个空格,多个空格会被忽略。
(3)java类的传递参数扩展阅读:
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。
Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等 。
Ⅳ java 中怎样实现类类型作为参数传递
直接把参数类型定义为对应的类,就是类类型。
1、定一个类
publicclassA{//定义一个类A
}
2、定一个方法,类A作为参数传递
publicclassB{//定义一个类B
publicvoidshow(Aa){//类作为参数传递
}
}
Ⅳ java 参数传递问题
这是java方法参数传递的机制
前面那个图传递的是值的副本,无论在方法内部怎么变换,改变的只是它的副本,而它本身在main方法中并没有发生任何变化。所以不会交换。
而数组,参数传递的是引用的副本。就是说栈里存放的是一个引用,这个引用指向堆里的数组数据。而方法传递就传递这个引用的副本,这个副本一样指向堆里的数组的数据。
在方法中按照引用的副本查找到数组并把它的数据交换了,直接对堆中的数据做了变化。所以出了这个方法,在原引用指向的堆内的数据已经发生了变化。
Ⅵ java 怎么传递参数
传对象,之后通过反射,getClass()获得对应的类,具体代码如下
Class<?>type=object.getClass();
Method method=type.getMethod("getId",null);//getId为getId()方法
Object id=method.invoke(object,null);
Ⅶ JAVA基本类型参数传递
不是地址是一个引用,这个引用将来只能指向Time类的地址,在你没通过new Time()等操作创建一个Time对象的时候,实际上并不存在地址
Ⅷ Java参数传递
这是因为java中只有值传递,没有引用传递。
变量名str是引用,它始终指向“hello”字符串。
你的changeStr()不会修改str指向“different”,因为java中只有值传递。
Ⅸ Java类如何传值
publicclassBase{
privateStringsdate;
publicStringgetSdate(){
returnsdate;
}
publicvoidsetSdate(Stringsdate){
this.sdate=sdate;
}
publicBase(Stringsdate){
this.sdate=sdate;
}
}
classAextendsBase{
privateStringsdate;
publicA(Stringsdate){
super(sdate);
}
}
//这种方式可以,但是仅限于父子类之间,如果想在实例还有造出来之前,使用实例内的内容,那是不可能的
Ⅹ java中对象类型的参数传递
因为Java里方法参数的传递实际上只有值传递(不管基本类型或引用类型),对基本类型来说是把其值传递了一份过去,而对引用类型来说实际是把引用地址的值复制一份传递了过去。
另外,只有用new方法创建的对象的实际成员数据是存放在堆里面的,而其他方法内部定义的变量都存放在栈中,一旦出了方法的范围就失效,会被内存回收。
知道了以上两点,就可以分析了,swap方法里t1,t2,temp都是存放在栈里的只保存引用类型地址的变量,不管他们怎么交换,实际上不会改变堆里面的内容,而main方法里的time1, time2的引用类型虽然其地址仍在栈中,而实际数据在堆中,程序中没有任何改变其内容的语句,因此,不会产生交换。