永发信息网

下面的java程序输出是100还是101呢,为什么

答案:5  悬赏:50  手机版
解决时间 2021-04-01 10:58
  • 提问者网友:我的未来我做主
  • 2021-03-31 19:42
下面的java程序输出是100还是101呢,为什么
最佳答案
  • 五星知识达人网友:像个废品
  • 2021-03-31 20:49
public class MyClass {
private static int a=100;
public static void main(String[] args){
modify(a);
System.out.println(a);

}
public static int modify(int a){
a++;

System.out.println(a);
return a;
}
}
结果为:
101
100
-------------------------------------------------------------------------------
public class MyClass {
private static int a=100;
public static void main(String[] args){
int b = modify(a);
System.out.println(a); //100
System.out.println(b); //101
}
public static int modify(int a){
a++;

System.out.println(a); //101
return a;
}
}
结果为:
101
100
101
这样楼主能明白了么。。
全部回答
  • 1楼网友:几近狂妄
  • 2021-04-01 00:43
先加后算,先运算后加,
  • 2楼网友:傲气稳了全场
  • 2021-03-31 23:52
a++ 是先返回a的值再++ 所以最后的结果为100
++a 是先做运算在返回追问不是这个原因吧 感觉是modify(a);函数没有返回值吧追答我说的返回不是指有没有返回值 是说先把a 的值传递回去在++追问我知道你说的什么意思,但是为什么结果输出为100,不是你理解的那样吧追答就是先赋值在做++运算 是这样啊追问好吧 你的是对,但是 你还是没理解题意
  • 3楼网友:我住北渡口
  • 2021-03-31 22:43
形参和实参的问题啊,楼主
modify(int a),,这个函数中的a只是该函数的形参,调用它的时候做的是值拷贝,也就是将静态全局的a的值拷贝给该函数的形参a,所以a++只是形参自增了一次,跟静态全局的a无关,当函数退出时该形参a被销毁,所以你的那个静态全局的a根本就没变化,还是100
  • 4楼网友:梦中风几里
  • 2021-03-31 21:19
public class MyClass {
    private static int a = 100;
    public static void main(String[] args) {
        modify(a);
        System.out.println(a);
    }
    public static void modify(int a) {
        a++;
    }
}


你把它放到eclipse里面你就知道答案了!你会发现    public static void modify(int a) {
        a++;
    }这里面的两个a是 一样的黑白颜色,但是上面的3个a是蓝色,说明什么?前面3个引用了同一个,也就是静态的类变量( private static int a = 100;),而调用方法是以值传递的方式传进去的,传给modify方法的形参a,不管方法里面怎么操作,都是在操作局部变量,也就是形参a,类变量a是不会发生变化的,所以,你输出a的时候仍然还是100。
解答的很详细了!大哥求顶啊!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯