猿问

输出的结果是什么?

public class Answer {

 public static void main(String[] args) {

    int score = 20;

   Answer  ans= new Answer();

   

   ans.add(score);

   System.out.println(" main: score = " + score);

 }

 void  add(int score) {

   System.out.println(" add: score=" + score++);

 }

}


赵明明123
浏览 1971回答 7
7回答

qq_执手蓝天丶_0

main=20;add=20;score++是执行完后面语句后才加1;

赵明明123

本题考查的是Java的方法参数传递。在Java中方法参数传递只有值传递,其特点如下: 1)基本数据类型传递的是值本身。 2)引用数据类型传递也是引用的值,是对象的地址,而不是对象本身。 本题中,首先要明白main方法中的局部变量score,和add方法的形参score在栈内存中是两个变量,当调用add方法时,是把main方法中局部变量score的值20赋值给add方法的形式参数score,所以当形参score在add方法中发生变化时不会影响到main方法中局部变量score的值。 本题运行过程如下: 1.从main方法的第一行开始,定义并初始化局部变量score。 2.实例化Answer类的对象ans,调用add方法,将main方法中的score的值赋值给形参score,此时,形参score的值为20。 3.计算表达式score++的值。计算后,score++表达式的值为20,score的值变为21。此处输出的是score++表达式的值,该值为20。 4.由于形式参数score的改变不会影响main方法中score的值,故main方法中输出score仍然为20。

慕斯2125595

add: score=21main: score =20

慕斯2125595

2120

慕粉3133796

 add: score=20 main: score = 20

1525155750

 add: score=20 main: score = 20
随时随地看视频慕课网APP

相关分类

Java
我要回答