「java传递类参数」java参数的传递方式有哪些
本篇文章给大家谈谈java传递类参数,以及java参数的传递方式有哪些对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
java 参数传递问题
Java的参数传递总结:
JAVA的参数传递总是传"值",但是传值方式也分为两种方式,它们是靠传递参数的类型区分的。这两种类型分别为JAVA的基础类型和Object(对象)类型;基础类型包括boolean,byte,short,char,int,long,float,double,而Object就是对象,如数组.在参数为基础类型时,见代码:
public class A{
public static void main(String arg[]){
int a=3;
method1(a);
System.out.println(a);
}
public static void method1(int a){
a=4;
}
}
此时结果的输出将是1,而且只要你的值在Main函数中没变,a的值不管怎么传都不回变,这是因为a是传值,而这个"值"是a的一个拷贝,a的值在传递后的改变只是改变了a的拷贝的内容,并没有改变真正的a的值;对于参数为对象
public class A{ public class A{
public static void main(String arg[]){ public static void main(String arg[]){
int[] a=new int[1]; int[] a=new int[1];
a[0]=3; a[0]=3;
method1(a); method1(a);
System.out.println(a[0]); System.out.println(a[0]);
} }
public static void method1(int[] a){ public static void method1(int[] a){
a[0]--; a=new int[0];
} a[0]=4;
} }
}
左边的结果将是2,右边的结果将是3(未变),原因是:在传递的参数为对象时,这个传递的"值"中放的内容实际上是对向所在的地址,左边的情况是指针定位到对象的地址后,在上面把内容给改了,所以数组的值后会改变,而右边的情况为给对象新分配了一个指针到新的地址上面去,所以所有的操作都在新的地址上面,并不会影响原来的值。注:对于String,Interger,Boolean,Double等的系统对象,它们虽然是Object,但是任何方式的传递参数的值得改变并不会影响原来的值。
java 需要传递类对象为参数的时候,几种方法
1、直接抽象类 对象 = new 抽象类(){ //重写此抽象类的抽象方法};例子:privateTimerTask t1=newTimerTask(){@Overridepublicvoidrun() {//TODO Auto-generated method stub //在此实现该抽象方法}};外层publicclassTimerActivity2extendsActivity {/**Called when the activity is first created.*/publicTimer timer=newTimer();privateTimerTask t1=newTimerTask(){@Overridepublicvoidrun() {//TODO Auto-generated method stub}};@OverridepublicvoidonCreate(Bundle savedInstanceState) { ..}}2、抽象类 对象 = new 子类(); 接口/实现类 对象= new 实现类() class 子类 extends 抽象类{ //实现此抽象类的抽象方法即可。}class 实现类 implements 接口{ //实现此接口的抽象方法即可}例子:publicclassTimerActivity2extendsActivity {/**Called when the activity is first created.*/publicTimer timer=newTimer();privateTimerTask tTask=newMyTimerTask();@OverridepublicvoidonCreate(Bundle savedInstanceState) {super .onCreate(savedInstanceState); setContentView(R.layout.main);}//子类classMyTimerTaskextendsjava.util.TimerTask {@Overridepublicvoidrun() {//TODO Auto-generated method stub //在此实现该抽象方法}} .......}接口时: ......//某处//MySensorEventListener mSensorEventListener; SensorEventListener mSensorEventListener; .....//某处 ,定义和赋值可以写在一句话里面 mSensorEventListener=newMySensorEventListener(); .......//某处classMySensorEventListenerimplementsSensorEventListener {@OverridepublicvoidonAccuracyChanged(Sensor sensor, intaccuracy) {//TODO Auto-generated method stub}@OverridepublicvoidonSensorChanged(SensorEvent event) {//TODO Auto-generated method stub //在此做方法的实现即可}}3、直接把对象创建出来,比如在参数中需要用到某个类对象的时候,除了上述方法以外,也可以直接把此对象创建出来。 public void method(class obiect,,); ()中就可以这么写 (new (抽象类/接口(){ //在这实现抽象方法}))例子: b1.setOnClickListener(newButton.OnClickListener() {@OverridepublicvoidonClick(View arg0) {//定义计时器timer=newTimer();timer.schedule(newTimerTask() {//TimerTask 是个抽象类,实现的是Runable类@Overridepublicvoidrun() {}}, 1000, 200);}});此例子中,newButton.OnClickListener()是一个接口对象,实现onClick这个接口的抽象方法。记住!不需要这个要让外部activity实现接口。 是一个抽象类对象,里面也要实现run()这个抽象类的抽象方法。
java 怎么传递参数?
传对象,之后通过反射,getClass()获得对应的类,具体代码如下
Class?type=object.getClass();
Method method=type.getMethod("getId",null);//getId为getId()方法
Object id=method.invoke(object,null);
关于java参数传递
Java基本数据类型传入方法是值传递,也就是将值赋值给方法参数,在方法在改参数与原变量无关。
而其他三个都是引用数据类型,传递的都是地址,方法根据地址操作都是原对象,所以修改了。
java 中怎样实现类类型作为参数传递
直接把参数类型定义为对应的类,就是类类型。
1、定一个类
public class A{//定义一个类A
}
2、定一个方法,类A作为参数传递public class B{//定义一个类B
public void show(A a){//类作为参数传递
}
}
关于java传递类参数和java参数的传递方式有哪些的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。