一道简单java程序求解

来源:百度知道 编辑:UC知道 时间:2024/05/12 11:57:55
class Variable
{
int a=0;
int b=0;
int c=0;
void text (int a,int b){
this.a=a;
this.b=b;
int c=5;
System.out.println("print data in method text");
System.out.println("a="+a+"b="+b+"c="+c);
}

}
public class VariableDemo{
public static void main (String []args){

Variable v=new Variable();
System.out.println("print original data");
System.out.println("a="+v.a+"b="+v.b+"c="+v.c); //为什么这里输出a=3,b=4,c=5
v.text(3,4);
System.out.println("print data in method text");
System.out.println("a="+v.a+"b="+v.b+"c="+v.c);//这里却是a=3.b=4.c=0
}
}

print original data
a=0b=0c=0
print data in method text
a=3b=4c=5
print data in method text
a=3b=4c=0

看程序注释

你这个是你运行打印输出的么??
这个的输出应该是这样的
System.out.println("a="+v.a+"b="+v.b+"c="+v.c); //为什么这里输出a=3,b=4,c=5

这里输出的是a=0b=0c=0不是你说的那个
v.text(3,4);//这输出的是a=3,b=4,c=5
System.out.println("a="+v.a+"b="+v.b+"c="+v.c);//这里却是a=3.b=4.c=0
这个地方才是最好输出的a=3b=4c=0
你看错输出的位置了....对应的输出你没对应上

这涉及到了java中的赋值问题了
首先输出都是0没问题
当你调用v.text(3,4);的时候就调用了Variable类中的方法,同时this.a=a,this.b=b,所以a=3,b=4,c=5,此方法输出print data in method text
a=3b=4c=5

在最后调用的时候因为通过this.a=a,this.b=b已经对a和b赋值了,但是v.c的值只是类中的初始值,不是方法中的值,因此c的值还是0。
参照this的用法:http://zhidao.baidu.com/question/94068141.html?fr=ala0

3, 4, 5是在text方法中输出的,输出的是传进去的a, b, 和5(int c = 5),并改变了v的成员a, b,的值,但并没有改变c的值,所以后来输出v的成员时,a,b改变了,而c没有被改变

Variable v=new Variable();
主要是因为你new一个对象之后,v初始接收的参数为(int a,int b),所有的取值来源于方法。 this 这个关