A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

本帖最后由 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";
        }

59 个回复

倒序浏览
额,这个啊基础扎好么有问题吧。。
回复 使用道具 举报
这种简单到不行的基础楼主搞的好像好难一样????

唉,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
回复 使用道具 举报
这是面试题?
回复 使用道具 举报

是面试题,不过是我出的,基础好的话第二题应该没问题,不过有一大批工作一年的都做不粗来
回复 使用道具 举报
我无语了,这很难吗,个人觉得很easy
回复 使用道具 举报
这是水贴 逗你玩的 看不出来吗
回复 使用道具 举报
这个你确定很难???
回复 使用道具 举报
本帖最后由 曲终烟尽 于 2015-5-26 21:07 编辑

看第一题的时候很犹豫,是0,还是1,在C语言里,它就是1,在JAVA里就是0,编译器的处理不同,第二个是和内存空间有关的,堆,栈的问题,值类型都是在栈中存储,new的对象和数组是在堆中存储,栈是临时空间,用完就释放,堆里的东西用完后JAVA会随机进行垃圾回收。堆里的对象和数组要复用可以进行引用,而栈中的数据要复用只能复制,。这里 String str是字符型变量,存储在栈中.只是复制过去了而已,并不是传递引用。
a=a+1;
a+=1;
a=++a;
这都是成立的,a都等于1.
回复 使用道具 举报
。。。学了前几天就可以答了吧
回复 使用道具 举报
这是黑马老师给你出的面试题吗??

1、0;
2、apple
回复 使用道具 举报
a++是先赋值再运算,++a是先运算再赋值。
回复 使用道具 举报
Are you kidding me?
回复 使用道具 举报
基础学的不错呀
回复 使用道具 举报
基础题啊   好好加油
回复 使用道具 举报
第一题为什么是 0  呢? 大神给说说
回复 使用道具 举报
还可以,这应该是基础的题吧
回复 使用道具 举报
这个。。。你确定不是逗我们玩么?感觉讲过很多次了啊,跟基础扎不扎实真关系不大。

1.0
2.apple
回复 使用道具 举报
这个。。。。
回复 使用道具 举报
还好,基础题
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马