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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 谢晓明 中级黑马   /  2015-6-3 00:22  /  1264 人查看  /  22 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String类面试题
          1.     
          public static void main(String[] args) {
               String s = "abc";
               change(s);
               System.out.println(s);
          }
          public static void change(String s) {
               s += "hello";
          }
          注:基本类型 -- 形式参数改变不影响实际参数。
               引用类型 -- 形式参数改变直接影响实际参数。
               但是,字符串是特殊的引用类型,实参传递到形参时,实际上是把值传递给了形参。
         
          -- 如果是StringBuffer.则打印的是abchello。StringBuffer容量可变。
         


          2. 字符串拼接问题
          public static void main(String[] args) {
               String s1 = "a";
               String s2 = "b";
               String s3 = "ab";
               System.out.println(s3 == s1 + s2); // false
               System.out.println(s3 == "a" + "b"); // true,常量的运算会在编译期间就计算,所以"a"+"b"在编译后就是"ab"
          }
          注:JVM对于字符串引用,由于在字符串的"+"连接中,有字符串引用存在,而引用的值在程序编译期是无法确定的。
               JVM对于字符串常量的"+"号连接,在程序编译期,JVM就将常量字符串的"+"连接优化为连接后的值。

22 个回复

倒序浏览
新人报道,正在努力中
回复 使用道具 举报
这种解释,还没听过,正在努力中!
回复 使用道具 举报
学习了~~
回复 使用道具 举报
第二个就是说编译器只能确定常量,不能确定变量
回复 使用道具 举报
学习。顶一下。
回复 使用道具 举报
黑马币  我的
回复 使用道具 举报
强,学习了
回复 使用道具 举报
嗯,不错,过来学习学习
回复 使用道具 举报
努力之中!
回复 使用道具 举报
又学到了一些东西,嘿嘿~
回复 使用道具 举报
学习中!!
回复 使用道具 举报
好厉害的样子,学习了 ,谢谢,顶。。。。
回复 使用道具 举报
解答的还算可以吧,只不过还不能太好啊,只是记结论还是没有很好的从根本上说明啊
回复 使用道具 举报
我也没有听过这种解释。加油!
回复 使用道具 举报
学习,,,
回复 使用道具 举报
学习了,从来没想这么多
回复 使用道具 举报
又巩固了知识
回复 使用道具 举报
很好很实用!
回复 使用道具 举报
学习了!
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马