本帖最后由 Yov正 于 2015-5-28 22:38 编辑
心里素质不好的慎看啊,不过做出来你岂不是太吊了?
一、
public static void main(String[] args) {
int a = 0;
a = a++;
System.out.println(a);
}
二、
public static void main(String[] args) {
String str = "apple";
changeStr(str);
System.out.println(str);
}
private static void changeStr(String str) {
str = str+" phone";
}-----------------------最新编辑
看到很多人说简单,也有很多人给出了解释,但有些人没有答到点上甚至打错了哦。
第一题我知道答案,硬让我解释我也能逻辑解释通,但是实际上这涉及到java的a++底层实现问题,如果没有了解过这方面的肯定是不会而只能蒙的,这也不是基础就能学到的知识。(只是我最近了解到的一个很新奇的知识点,by the way,c和java的结果不一样哦)
关于第二题确是我想跟大家分享的,这题每个java程序员都要会做,而且要知道为什么。其实是考的java调用方法时,传递的引用还是值,方法的参数是哪儿来的。str只是一个单纯的对象而已,不涉及到String的特性。类似的题看下面(tip:如果这一类题不懂为什么,那以后你写的任何代码都是可能出问题的哦,换言之你java没入门,所以不但要知道答案,还要知道为什么。画图可能有助于理解)
public static void main(String[] args) { Stu stu = new Stu(); stu.name = "zhang"; changeStr(stu); System.out.println(stu.name);//结果? }
private static void changeStr(Stu stu) { stu.name = "li"; stu = new Stu(); stu.name = "wang"; }
public static class Stu { public String name = "zhao"; }
|