日期:2014-05-17  浏览次数:21130 次

java对象类型的参数传递问题
package faceToJava;

public class ObjectParamTransfer  {





private PassingWord A1;
private PassingWord A2;

//方法交换两个对象
void  swap( PassingWord t1, PassingWord t2){
PassingWord t3;
t3=t1;
t1=t2;
t2=t3;

}
void print(){
System.out.println("1");
}

public static void main(String[]args){

ObjectParamTransfer b1=new ObjectParamTransfer();


//创建两个对象}
b1.A1.money=12;
b1.A2.money=23;
System.out.println("交换前的属性值:");
    System.out.println("A1.money="+b1.A1.money );
    System.out.println("A2.money="+b1.A2.money );
    //调用swap方法
    b1.swap(b1.A1 , b1.A2 );
System.out.println("交换后的属性值:");
    System.out.println("A1.money="+b1.A1.money );
    System.out.println("A2.money="+b1.A2.money );
    
}

}
//l楼主有两个问题,求大神们帮帮忙,
1,private PassingWord A1;
private PassingWord A2;
这两个类的对象为什么要定义在main方法外
2,Exception in thread "main" java.lang.NullPointerException
at faceToJava.ObjectParamTransfer.main(ObjectParamTransfer.java:30)
运行完的结果,提示第30行有问题 ObjectParamTransfer b1=new ObjectParamTransfer();,不知道哪里错了,纠结中
------解决方案--------------------
你好,我检验了你的代码了,
1.为什么对象要定义在main外,因为你main方法里是实例类的对象来调对象的(下面的代码)
//创建两个对象}
b1.A1.money=12;
b1.A2.money=23;
2.为什么会报空指针异常时你声明对象的时候没有初始化
private PassingWord A1;
private PassingWord A2;
------解决方案--------------------
你可以不通过实例来调对象,就是说不把对象定义在mian外
解决方案:

main
PassingWord A1 = new PassingWord();
PassingWord A2 = new PassingWord();
A1.money=12;
A2.money=23;
b1.swap(A1 , A2 );
System.out.println("交换后的属性值:");
    System.out.println("A1.money="+A1.money );
    System.out.println("A2.money="+A2.money );

------解决方案--------------------
我没有看你代码,大概懂你的意思,定义在main方法外,定义在类内,那么这个变量就是累的成员变量,如果该类中其他的方法用到了这个变量的时候,那么就必须给这些成员变量初始化,   那么为什么要初始化呢!?想想,成员变量只是描述类具有该性质,但是具体是什么性质,必须在初始化该类的时候给出,就是这样,如果没有初始化调用,就有空指针异常,

当然你也可以把这些变量第一在方法内部,那么必须初始化的问题就更明显了,如果你没有初始化,如果还方法有返回值,刚好反回这个变量,ide会直接出现红线,说你没有初始化,  如果无需返 回,运行时空指针异常,只是举个例子,
------解决方案--------------------
引用:
Quote: 引用:

你可以不通过实例来调对象,就是说不把对象定义在mian外
解决方案:

main
PassingWord A1 = new PassingWord();
PassingWord A2 = new PassingWord();
A1.money=12;
A2.money=23;
b1.swap(A1 , A2 );
System.out.println("交换后的属性值:");
    System.out.println("A1.money="+A1.money );
    System.out.println("A2.money="+A2.money );


主要是类对象的参数传递,这样改,就变了,能不能提供下类对象参数传递的该法,谢谢


怎么会变了?你在调用方法之前你设了对象属性的值,在交换的方法里交换属性值不就可以了吗?然后在输出对象的属性值呗。