这是我个人的第一篇博客,记录一下从零开始小菜鸡学习java的点滴。目前在b站上白嫖老高的java三百集,落笔的时候刚刚学完控制语句。唔,现在暂时也不知道能写啥,打算先记下学习中碰到的一些难忘的地方。难免写得鸡零狗碎一些。希望读者多多包涵(如果有的话)=。=
这是尚学堂第三章控制语句中的一道题。
5.以下关于方法调用的代码的执行结果是( )。(选择一项)
public class Test {
public static void main(String args[]) {
int i = 99;
mb_operate(i);
System.out.print(i + 100);
}
static void mb_operate(int i) {
i += 100;
}
}
A.99
B.199
C.299
D.99100
这题我一开始选的是C,理所当然地把i加了两次。后来我在csdn上找答案,他是这么说的:
说实话,在mb_operate这个方法里不是有static吗,讲道理应该是静态变量呀。而且据我现在所知,static不是仅影响调用吗,跟这有啥关系呀。我再看了看题目,把目光放到了方法里的void上:一定是因为没有返回值!带着发现新大陆般的欣喜,我把void改成了int,在结尾加上了return i;——迫不及待地按下Ctrl+F10之后,控制台干巴巴地跳出了199。。。WTF??
被泼了盆冷水的我,又把目光放到了那张图片里的后半句话,“形参不影响实参”。等等,这句话好像有点印象。翻了翻笔记,看到了这样一句话:“Java中进行方法调用中传递参数时,遵循值传递的原则(传递的都是数据的副本)。”
好像一颗满是灰尘的珠子被擦了一下,朦朦胧胧地放出了一丝光华——我悟了!我又去百度了一下值传递,看了一篇文章,终于搞懂了值传递的意思:在方法调用中传递参数时,传递的是数据的副本,不管你怎么改变这个副本,都不会影响原值。因此无论在上面mb_operate这个方法被调用了几次,在最终输出的语句里,i永远是99。(当然值传递并不只是那么简单,那篇文章还涉及到了面向对象内容,学完下一章还得回顾一下,我已经有点等不及了!)
解决问题,获取知识的快乐真是让人陶醉,也鼓舞于各位前辈的提携之情。今天终于感受到了,java的大门在缓缓向我打开,继续努力吧,菜鸟!