好吧,所以我正在读高中的AP comp sci,我对程序达到A = 1的方式感到非常困惑,但看不到x和y的任何声明。谢谢
public class ClassA
{
public static void main(String args[])
{
ClassA n = new ClassA(1 , 2);
int a = 0;
a = n.methodA(a);
System.out.println("a =" + a);
}
private int myNum1;
private int myNum2;
public ClassA(int x, int y)
{
myNum1 = x;
myNum2 = y;
}
public int methodA(int y)
{
return myNum1+y;
}
public int getMyNum1()
{
return myNum1;
}
public int getMyNum2()
{
return myNum2;
}
}
答案 0 :(得分:1)
用作构造函数的参数实际上并不重要。创建a
并将其设置为0,然后将a
设置为n.methodA(a)
,其中参数a
为0,返回1。
您可以在构造函数调用中使用任何值,并且n.methodA(a)
始终返回1。
在线搜索“ java visualizer”以获得一个不错的工具,该工具可以帮助您逐步了解程序的作用。
答案 1 :(得分:0)
对于对象ClassA n = new ClassA(1 , 2);
,myNum1
myNum2
变为1,n
变为2。
现在,当您致电n.methodA(a)
时,实际上是在致电n.methodA(0)
,并且根据methodA
的定义,它将返回myNum1+0 => 1+0 => 1
答案 2 :(得分:0)
这就是您的代码在做什么。
public static void main(String args[])
{
ClassA n = new ClassA(1 , 2); // x = 1, y = 2
int a = 0;
a = n.methodA(a); // a = 1 + 0 = n.Method(a = 0)
System.out.println("a =" + a); // prints a = 1
}
/** remember that myNum1 = x = 1, as stated in
ClassA n = new ClassA(1 , 2) **/
public int methodA(int y) // int y = a = 0
{
return myNum1+y; // return (myNum1* + y = 1 + 0)
}
n.Method(a)
将返回 1 (因为0 + 1 = 1),它显示a = 1