永发信息网

1、为什么counter是中为1? 2、怎样在main方法中输出counter的值? 求大神分析一下,感觉很混乱。

答案:2  悬赏:80  手机版
解决时间 2021-03-27 08:07
1、为什么counter是中为1? 2、怎样在main方法中输出counter的值? 求大神分析一下,感觉很混乱。
最佳答案
public int maybeNew(int index) {
if (index < 5) {
Mix4 m4 = new Mix4();

System.out.println("counter:" + counter);
// 我在这里输出了一下counter==1,也就是传进来就为一了,是上面那个位置改的吗?那下面的m4.counter不应该==2吗,为什么仍然为一?
m4.counter = m4.counter + 1;
System.out.println("counter:" + counter);
// 我有输出了一下counter,为什么依然为1,m4.counter改变不了吗?
return 1;
}
return 0;
}追问您的意思是输出的第一个counter是m4a[x].counter的值吗?可是不是应该是全局变量的counter吗?追答想哭,我建议你新写一个测试类,然后把main方法里面的内容放到测试类里面;counter怎么会是全局的呢,你加个static 试试追问懂了,懂了。
第一个输出,输出的是m4a[x]对象中的counter对吧,
可不可以理解为无论对象怎么变化,类中的变量都不会随之改变呀。追答主要看这个变量是哪个对象的,如果你把counter 变成static的,它的结果是不一样的。这里面就有个变量的作用域的问题追问嗯嗯,谢谢谢谢,太感谢啦。
全部回答
说说你得题目追问

我实在是不知道counter值是怎么变化的。。
追答
这样子你看看懂不懂:public class Mix4 {
    int counter = 0;
    public static void main( String [] args) {
        int count = 0;
        Mix4 [] m4a = new Mix4[20];
        int x = 0;
        while(x < 9) {
            m4a[x] = new Mix4(); //每次循环都创建了一个新的对象
            m4a[x].counter = m4a[x].counter + 1; //m4a[0].counter==1,counter变为1吗?
            count = count + 1;
            count = count + m4a[x].maybeNew(x);
            x = x+1;
        }
        System.out.println(count + " " + m4a[1].counter);
    }
    public int maybeNew(int index) {
        if(index < 5) {
            Mix4 m4 = new Mix4(); //每次调用maybeNew都创建了一个新的对象
//这里输出的其实相当于输出this.counter,也就是调用maybeNer方法的当前对象的counter变量的值
            System.out.println("counter:" + counter);
//这里改变的是maybeNew方法中的m4的counter值,而不是this.counter的值
            m4.counter = m4.counter + 1;
//这里输出的还是this.counter
            System.out.println("counter:" + counter);
            return 1;
        }
        return 0;
    }
}
这种代码写法不规范,一般就出题老师喜欢这样写出来迷糊答题者,开发中这样写会被打死的。追问谢谢谢谢,终于搞懂了。追答不客气
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
买了一套房子,什么都好,就是靠国道边的,很
广州省汽车站有没有长途汽车到河南湖阳镇?
400009555什么电话
什么是邮资机宣传戳?它比邮票有收藏价值吗
谁知道经典版的还珠格格片头怎么制作啊?就是
宝马x5前刹车片用的什么品牌的
你认识广东工业大学龙洞校区的翁泽鸿吗?
在DOS窗口中Ping 192.168.10.1 –l 64 –n 32
为什么GTA5在中国没有绝地求生那么火
李师傅从甲地到乙地要3小时,王师傅从乙地到甲
浦发银行操作失误往我的帐户里存转入14000,
花青翡翠值钱吗
4.5米x2.8米的沙发墙挂多大尺寸的画好
姜师傅,从格尔木到敦煌是不是只经过小柴旦湖
为什么人很容易在某种环境下变得很快?
推荐资讯
武汉志虎科技有限公司官网是哪一个?
生活不努力。被家婆瞧不起?
新会计准则科目与小企业会计制度科目有什么区
单元格文字本靠左,编辑后靠右怎么回事
日语:仲の良い友达是什么意思啊?
节制战神是男的还是女的???
想在晚上放3D露天电影,大概需投资多钱需要啥
读xxx有感600字,
男领导想接近你的表现
大清户部值钱吗
33%的股份和33%以下的区别
同事结婚要不要随份子
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?