String面试题--字符串的拼接
来源:互联网 发布:php学生管理系统源码 编辑:程序博客网 时间:2024/04/29 10:17
我们先看看下面的程序:
String s1="hello"; String s2="world"; String s3="helloworld"; System.out.println(s3==s1+s2); System.out.println(s3.equals(s1+s2)); System.out.println(s3=="hello"+"world"); System.out.println(s3.equals("hello"+"world"));
你看出来上面的结果了吗?
- 首先我们讲解一下,赋值字符串后的变量用+符号连接和直接用+符号连接两个字符串的区别。第一,s1和s2是赋值后在用+符号相连接在一起的,程序的执行步骤是,现在常量池里开辟字符串“hello”的空间,然后s1指向指向这片空间,接着是在常量池里开辟字符串“world”的空间,s2指向了这片空间。同理,s3也指向了在常量池里新开辟的字符串“helloworld”的那片空间,而==在比较引用数据类型的时候,是比较的地址是否相等,下面这行代码是
System.out.println(s3==s1+s2);
这行代码的反编译后的结果,可以看出,eclipse执行的底层是将s1和s2放入到了StringBuilder缓冲区里,然后在转为String类型的。所以第一条打印语句的结果是false。
System.out.println(s3==(newStringBuilder(String.valueOf(s1))).append(s2).toString());
equals比较的是内容是否相同,所以第二个和第四个打印的内容都是true。
最后分析
s3=="hello"+"world"
这句,这句在编译时,+符号直接将两个字符串合并为一个字符串,即“helloworld”。然后s3是直接指向了这片区域的。所以这个结果是true。
所以最终的结果就是
false
true
true
true
0 0
- String面试题--字符串的拼接
- java的string字符串拼接
- String字符串的拼接问题
- String 的面试题
- String的面试题
- String字符串处理常见的面试题总结
- 回顾JavaSE(5)-String(4)7行代码分析一道关于String拼接的经典面试题
- 关于String 拼接字符串的性能问题
- 玩玩String的字符串拼接底层原理
- java面试题十 string字符串操作
- Java中String字符串比较面试题
- String类型的面试题
- String相关的面试题
- String类型的面试题
- String类型的面试题
- 关于String的面试题
- String字符串拼接陷阱
- String拼接字符串
- MFC中查询ACCESS表格
- [Servlet3.0新特性]Serlvet文件上传
- 清理Word生成HTML的冗余;清理与清除HTML标签
- extjs mvc 整合kindeditor
- MySql C Connector 文档翻译 Overview
- String面试题--字符串的拼接
- 跳跃表的实现
- Binary Tree Preorder Traversal
- screen
- APR-util not found pcre-config for libpcre not found. 错误解决方法
- VC鼠标滚轮事件编程小结
- 文件夹隐藏项灰色
- OpenCV:Mat基础
- 通过浏览器渲染过程进行前端优化