有关String对象的一个面试题
来源:互联网 发布:长得像女生知乎 编辑:程序博客网 时间:2024/05/19 09:18
一些比较核心的Java问题经常会用来考验面试者的Java基本知识功底。这篇文章列出来了一些在我的书里面没有的面试题,通过这些面试题读者也可以梳理一下Java基础知识点。
Q1.下面的代码片段会输出什么?
String s = " Hello ";s += " World ";s.trim( );System.out.println(s);
A1.正确输出是” Hello World “。
由于字符串前后都有空格,因为有些人可能会认为结果是”Hello World”。那么,这个题目想要考察的是什么呢?
1. 字符串对象(String Object)是非可变的(immutable),这个题目容易迷惑人的地方在s.trim( )这一行。
2. 理解对象引用和不可达对象会由垃圾回收器收集。
顺着这个题目,你觉得还可以考察哪些概念呢?
1. 例如,上面的代码中一共会生成几个字符串对象,什么时候这些对象会变成不可达对象从而被垃圾回收器回收。
2. 又比如,上面的代码的效率如何?
最好的解释方式是通过一个图表来说明,如下:
如果需要输出前后没有空格的”Hello World”,那么应该将s.trim( )再赋值给”s”。这个赋值操作可以让s指向新创建出来的字符串对象。
上面的代码也可以改写成如下方式:
StringBuilder sb = newStringBuilder(" Hello ");sb.append(" World ");System.out.println(sb.toString().trim( ));
StringBuilder不是一个线程安全的类,因此仅仅用作本地变量是没有问题的。如果你希望用作实例变量,那么可以选择线程安全的StringBuffer类。
0 0
- 有关String对象的一个面试题
- 10有关String的经典面试题
- 一个String相关的面试题
- 一个关于String.valueof()的面试题
- 面试题(String 对象)
- String字面值对象和构造方法创建对象的区别的两个有关==和equals的面试题。
- String字面值对象和构造方法创建对象的区别的两个有关==和equals的面试题。
- String 的面试题
- String的面试题
- 有关C++面向对象面试题
- 有关线程的面试题
- 有关GC的面试题
- 有关数组的面试题
- 有关Tomcat的面试题
- 有关HashMap的面试题
- 有关String相关的试题
- String类型的面试题 内存分配 对象创建
- 几个String对象的面试题,很经典
- [LeetCode]Merge Two Sorted Lists
- 观察者模式
- tibco.ems.illegalstateexception illegal use of receive() from multiple threads
- Oracle BIEE
- int main(int argc,char* argv[])详解
- 有关String对象的一个面试题
- 最小生成树之普里姆算法
- Struts1与Struts2原理
- 支持向量机通俗导论(理解SVM的三层境界)
- POJ3133
- matlab矩阵求逆:inv pinv \ / 斜线运算符的选择
- LinuxCast学习笔记十四:help
- 不调用库函数,实现自己的strcpy(使用时的注意事项)
- Ubuntu上搭建hadoop 2.2.0环境,配置yarn(单机)