黑马程序员技术交流社区

标题: 今天考试遇到一题和大家分享 [打印本页]

作者: 威威是超人    时间: 2016-9-11 23:16
标题: 今天考试遇到一题和大家分享
public class Test{
static int i;
public int aMethod( ){
i++;
return i;
}
public static void main(String [] args){
Test test = new Test( );
test.aMethod( );
System.out.println(test.aMethod( ));
}
}编译运行后,输出结果是( )。
A.        0  
B.        1  
C.        2  
D.        3


作者: Fate_stay    时间: 2016-9-11 23:16
C 是吗?
作者: 威威是超人    时间: 2016-9-11 23:17
请大家可以看看哦,,
作者: jiubaK    时间: 2016-9-11 23:30
这个,还是要细心啊,我们平时做了这个题的,说实话,不难,就看是否细心
作者: 刘永川    时间: 2016-9-11 23:36
i没有赋值就进行运算不报错吗
作者: Cc.    时间: 2016-9-11 23:40
C ????????????????
作者: 江月念华    时间: 2016-9-11 23:40
挺好的,总结下学的更快点
作者: tiankog    时间: 2016-9-11 23:53
C
作者: wosika    时间: 2016-9-11 23:58
成员变量默认初始化值为0,然后在堆里new对象然后执行一次方法+1,然后在输出一次就是2了,选c?
作者: zhangjianwin    时间: 2016-9-11 23:59
刘永川 发表于 2016-9-11 23:36
i没有赋值就进行运算不报错吗

成员变量初始值为0;
作者: 晨星1    时间: 2016-9-12 00:03
2对吗大兄弟
作者: 流空有痕    时间: 2016-9-12 00:08
运行了一下结果是2,不知对不对.感觉如果有个选项是编译错误的话,会更多人选错
作者: huangbinqqian    时间: 2016-9-12 00:18
我个人猜测是C
作者: XinMingMing    时间: 2016-9-12 00:58
应该是C吧
作者: a1029612664    时间: 2016-9-12 09:14
答案是C
作者: 威威是超人    时间: 2016-9-12 23:39
Fate_stay 发表于 2016-9-11 23:16
C 是吗?

对呢,好坑呢,,
作者: 威威是超人    时间: 2016-9-12 23:41
jiubaK 发表于 2016-9-11 23:30
这个,还是要细心啊,我们平时做了这个题的,说实话,不难,就看是否细心 ...

对呢,,的细心
作者: 威威是超人    时间: 2016-9-12 23:43
晨星1 发表于 2016-9-12 00:03
2对吗大兄弟

对,就是2,小兄弟{:2_32:}
作者: wanglicheng    时间: 2016-9-12 23:45
成员变量进入堆内存中,具有默认初始化值,故答案为B
作者: 威威是超人    时间: 2016-9-12 23:45
wosika 发表于 2016-9-11 23:58
成员变量默认初始化值为0,然后在堆里new对象然后执行一次方法+1,然后在输出一次就是2了,选c? ...


作者: wanglicheng    时间: 2016-9-12 23:46
成员变量进堆内存中,具有默认初始化值,故选择B
作者: 威威是超人    时间: 2016-9-12 23:47
流空有痕 发表于 2016-9-12 00:08
运行了一下结果是2,不知对不对.感觉如果有个选项是编译错误的话,会更多人选错 ...

为何  会产生编译错的错觉呢?    这个很明显是对的啊,请问?
作者: 辰途27    时间: 2016-9-12 23:48
C?????? ?
作者: 威威是超人    时间: 2016-9-12 23:50
辰途27 发表于 2016-9-12 23:48
C?????? ?

对,是c
作者: wo1026756529    时间: 2016-9-12 23:52
刘永川 发表于 2016-9-11 23:36
i没有赋值就进行运算不报错吗

成员变量不是可以不赋值默认是0吗
作者: 威威是超人    时间: 2016-9-12 23:52
wanglicheng 发表于 2016-9-12 23:46
成员变量进堆内存中,具有默认初始化值,故选择B

兄弟 ,,选 c  咯   ,默认为0,方法被调用两次 ,,所以 自加两次  就变成2  咯
作者: 威威是超人    时间: 2016-9-13 00:00
刘永川 发表于 2016-9-11 23:36
i没有赋值就进行运算不报错吗

你说的是局部变量,在定义时必须赋初值,
但是,体重的i是成员变量,在进入内存中的的时候回有默认的初始化值,不给它赋值也是可以的
作者: 威威是超人    时间: 2016-9-13 00:11
jiubaK 发表于 2016-9-11 23:30
这个,还是要细心啊,我们平时做了这个题的,说实话,不难,就看是否细心 ...

怎么获取技术分呀 你的好多呀
作者: jiubaK    时间: 2016-9-13 00:17
威威是超人 发表于 2016-9-13 00:11
怎么获取技术分呀 你的好多呀

发帖+回复啊,我大多是回复问题,来获得黑马币。
黑马币可以换技术分。
不过,我的技术分还不够。
作者: sevforr    时间: 2016-9-13 00:25
Compiling the source code....
$javac Test.java 2>&1

Executing the program....
$java -Xmx128M -Xms16M Test
2
作者: 刘永川    时间: 2016-9-15 20:55
威威是超人 发表于 2016-9-13 00:00
你说的是局部变量,在定义时必须赋初值,
但是,体重的i是成员变量,在进入内存中的的时候回有默认的初始 ...

我一直 都没有注意这个呢 原来可以这样  长知识了
作者: &天马星空ぁ    时间: 2016-9-15 23:53
2啊 静态变量加了两次   如果改成return i++; 那么返回的就是1了
作者: ancheng    时间: 2016-9-16 11:45
正确答案就是C;
因为每次调用方法时,int的值都会自增,在这里++i和i++的效果是一样的
作者: 459374998    时间: 2016-9-16 21:41
打印里面还有一次方法调用,有两次调用所以是C?
作者: 小东先森    时间: 2016-9-16 22:04
谢谢分享,不错,大家都说选c
作者: fiendGG    时间: 2016-9-16 22:26
我做的话应该也是选C
作者: yigezhifu    时间: 2016-9-16 22:27
应该选C吧test.aMethod()方法调用了两次,就是两次i++,i变成2了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2