分享

String常见考题

 一戒745zia4sgs 2016-01-13
(先确定你下次看到这问题就知道选什么,再去看下面的解释,不要舍本逐末,否则下次看见这个选择题还是不会,这题你会遇上个十几遍,先把答案记住了比什么都强,加油,宝贝,先记住答案,先记住答案,先记住答案,重要的事说三遍!!!!!)
(1)
String s1 = "abc";
        String s2 = "abc";
        if(s1==s2){
            Log.e("aaa","yes");
        }else{
            Log.e("aaa","no");
        }
--------------------------------------------------------------------------------------------------------------------------------
输出结果是yes(不解释)
--------------------------------------------------------------------------------------------------------------------------------------
(2)

String s1 = "abc";
        String s2 = new String(s1);
        if(s1==s2){
            Log.e("aaa","yes");
        }else{
            Log.e("aaa","no");
        }
        Log.e("aaa",s1+"--"+s2);
--------------------------------------------------------------------------------------------------------------------------------
输出结果是no
abc--abc
哈哈,Java 版最为经久不衰的问题
堆与栈的区别
栈,用来存取基本类型数据和一些对象的引用。
堆,用来存取new出来的对象或数组。
String s1 = new String("abc");是在堆中生成;
String s2 = "abc";是直接在字符串池中查找得到;
字符串常量池也是在堆内存中的

在JDK5.0中,java虚拟机在启动的时候会实例化9个对象池,这九个对象池分别用来存贮8种基本类型的包装类对象和String对象。当在程序中直 接用""括起来一个字符串时,JVM就到Sring对象池里面去找看是否有一值相同的对象,如果有,就拿现成的对象,如果没有,则JVM在堆中创建对象并 把它放进对象池中,并返回。
如果采用new的方式就是直接在堆中创建对象,JVM不会主动把它放进对象池中。
String对象池就是字符串常量池
--------------------------------------------------------------------------------------------------------------------------------------
再次提醒,一定要先背答案!!!!!!!!!!!

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多