下面是面试中最容易问到的有关String的问题。
1. 如何比较两个字符串?使用“==”还是equals()方法?
简单来讲,“==”测试的是两个对象的引用是否相同,而equals()比较的是两个字符串的值是否相等。除非你想检查的是两个字符串是否是同一个对象,否则你应该使用equals()来比较字符串。
如果你知道interning的概念的话,那就更好了。
2. 为什么针对安全保密高的信息,char[]比String更好?
因为String是不可变的,就是说它一旦创建,就不能更改了,直到垃圾收集器将它回收走。而字符数组中的元素是可以更改的(译者注:这就意味着你就可以在使用完之后将其更改,而不会保留原始的数据)。所以使用字符数组的话,安全保密性高的信息(如密码之类的)将不会存在于系统中被他人看到。
3. 我们可以针对字符串使用switch条件语句吗?
对于JDK 7,回答是肯定的。从JDK 7开始, 我们可以针对字符串使用switch条件语句了;在JDK 6或者之前的版本,我们则不能使用switch条件语句。
// Java 7或者以后的版本 switch (str.toLowerCase()) { case "a": value = 1; break; case "b": value = 2; break; }
4. 如何将字符串转化成int?
int n = Integer.parseInt("10");
很简单,也经常使用,但经常被忽略。
5. 如何将字符串用空白字符分割开?
我们可以使用正则表达式来做到分割字符。“\s”代表空白字符” “, “\t”, “\r”, “\n”.
String[] strArray = aString.split("\\s+");
6. substring()方法到底做了什么?
在JDK 6中, substring()的做法是,用一个字符数组来表示现存的字符串,然后给这个字符数组提供一个“窗口”,但实际并没有创建一个新的字符数组。要创建一个新的字符串对象由新的字符串数组表示的话,你需要加上一个空字符串,如下所示:
str.substring(m, n) + ""
这会创建一个新的字符数组,用来表示新的字符串。这种方法会让你的代码更快,因为垃圾收集器会收集不用的长字符串,而仅保存要使用的子字符串。
在Oracle JDK 7中,substring()会创建新的字符数组,而不是使用现存的字符数组。点击查看JDK 6和JDK 7中substring()的分别。
7. String vs StringBuilder vs StringBuffer
String vs StringBuilder: StringBuilder是可变的,这意味着它创建之后仍旧可以更改它的值。
StringBuilder vs StringBuffer: StringBuffer是synchronized的,它是线程安全的的,但是比StringBuilder要慢。
8. 如何重复一个字符串
在Python中,我们可以乘一个数值来重复一个字符串。在Java中,我们可以使用Apache Commons Lang包中的StringUtils.repeat()方法来重复一个字符串。
String str = "abcd"; String repeated = StringUtils.repeat(str,3); //abcdabcdabcd
9. 如何将字符串转换成时间
String str = "Sep 17, 2013"; Date date = new SimpleDateFormat("MMMM d, yy", Locale.ENGLISH).parse(str); System.out.println(date); //Tue Sep 17 00:00:00 EDT 2013
10. 如何计算一个字符串某个字符的出现次数?
请使用apache commons lang包中的StringUtils:
int n = StringUtils.countMatches("11112222", "1"); System.out.println(n);
原文链接: Programcreek 翻译: ImportNew.com - 唐小娟
译文链接: http://www.importnew.com/9622.html
相关推荐
10个有关String的面试问题Java开发Java经验技巧共3页.pdf.zip
10个Java经典的String面试题
10个Java经典的String面试题!
10个Java经典的String面试题!
总的五个文档:C C++笔试面试宝典2009版.doc,C++ String深入详解2.0版.pdf,c++标准库——boost程序库导论.chm,C语言难点.wps,高质量C.编程指南.林锐著
整理了网上的一些java面试题目,很全很强大 面向对象的特征有哪些方面 1. 抽象:抽象就是忽略一个主题中与当前目标2. 无关的那些方面,3. 以便更充分地注意与当前目标4. 有关的方面。抽象并不5. 打算了解全部问题...
因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当...
java面试笔试题String 和StringBuffer的区别
06 10个Java经典的String面试题!.pdf 07 15道经典的Tomcat面试题!.pdf 08 15道面试常问的Java多线程面试题!.pdf 09 17道消息队列Kafka面试题!.pdf 10 18道非常牛逼的Nginx面试题!.pdf 11 20道顶尖的Spring Boot...
06 10个Java经典的String面试题!.pdf 07 15道经典的Tomcat面试题!.pdf 08 15道面试常问的Java多线程面试题!.pdf 09 17道消息队列Kafka面试题!.pdf 10 18道非常牛逼的Nginx面试题!.pdf 11 20道顶尖的Spring Boot...
框架面试题,集合了String,struts2,springmvc。 足以满足初级面试
【Java面试题】对String常量池的理解
Java面试题08.String.mp4
前端大厂最新面试题-string
2. StringBuffer与StringBuilder,他们是字符串变量,是可改变的对象,每当我们用它们对字符串做操作时,实际上是在一个对象上操作的,不像String一样创建一些对象进行操作,所以速度就快了。 3. StringBuilder :...
主要介绍了Java常用类String的面试题汇总,非常不错,具有参考借鉴价值,需要的朋友可以参考下
面试题10:编写类String 的构造函数、析构函数和赋值函数 8.4 拷贝构造函数 面试题11:谈谈对拷贝构造函数和赋值运算符的认识 面试题12:写出当定义#define _INMAIN 0和不定义时代码打印结果 第9章 继承与多态 9.1 ...
有自己和别人的面试经历和面试题 做成了电子书给大家分享一下 里面还收录了网上不错的有关面试的文章。