10个有关String的面试问题
下面是面试中最容易问到的有关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的面试问题的更多相关文章
- 之前有面试到两个日期的大小比较方式,现在整理一下几种方法。 例子: String beginTime=new String("2017-06-09 10:22:22"); String endTime=new String("2017-05-08 11:22:22"); 1 直接用Date自带方法before()和after()比较 SimpleDateFormat d
各种数据类型(日期/时间.integer.floating point和numeric)转换成格式化的字符串以及反过来从格式化的字符串转换成指定的数据类型.下面列出了这些函数,它们都遵循一个公共的调用 ...
- 10个常见的Redis面试"刁难"问题--转
高可用架构 导读:在程序员面试过程中Redis相关的知识是常被问到的话题.作为一名在互联网技术行业打击过成百上千名的资深技术面试官,本文作者总结了面试过程中经常问到的问题.十分值得一读. 作者简介:钱 ...
- String类面试坑题
1.面试坑题F:\SHJT\JavaWorkspace\JavaSE\workspace\day13ezra\src\cn\itcast\sh\classcode\BTStringLastIndexO ...
- java基础(10)---leetcode的String、数组以及集合的一些使用
整数 一.整数反转_7 /* 12345 变成 54321 */ public class 整数反转_7 { public static void main(String[] args){ int x ...
- leetcode菜鸡斗智斗勇系列(10)--- Decrypt String from Alphabet to Integer Mapping
1.原题: https://leetcode.com/problems/decrypt-string-from-alphabet-to-integer-mapping/submissions/ Giv ...
- 10个核心的Linux面试问题与答案
http://www.geekfan.net/8571/ compgen -c,可以打印出所有支持的命令列表使用Linux 命令dirs可以将当前的目录栈打印出来.使用linux命令 ’disown ...
- Java(jdk1.7) 陷阱
String[] strA = new String[4]; for(int i=0; i<4; i++) { strA[i] = String.valueOf(i); } strA[0] = ...
- 备战“金九银十”10道String高频面试题解析
前言 String 是我们实际开发中使用频率非常高的类,Java 可以通过 String 类来创建和操作字符串,使用频率越高的类,我们就越容易忽视它,因为见的多所以熟悉,因为熟悉所以认为它很简单,其实 ...
- 10 Things Every Java Programmer Should Know about String
String in Java is very special class and most frequently used class as well. There are lot many thin ...
随机推荐
- python基础-02-while格式化逻辑运算
python其他知识目录 1.循环打印“我是小马过河” while True: print('我是小马过河') #4.用while从一打印到10 #5.请通过循环,1 2 3 4 5 6 8 9 ...
- 求1到N(正整数)之间1出现的个数
一.题目要求 给定一个十进制的正整数,写下从1开始,到N的所有整数,然后数一下其中出现“1”的个数. 要求: 写一个函数 f(N) ,返回1 到 N 之间出现的“1”的个数.例如 f(12) = 5 ...
- 周总结<8>
周次 学习时间 新编代码行数 博客量 学到知识点 15 15 100 1 Html页面设计:虚拟机:(C语言)排序 Html案例: <!DOCTYPE html PUBLIC "-// ...
- JavaWeb应用的生命周期
JavaWeb应用的生命周期是由Servlet容器来控制. 启动阶段 (1)读取web.xml配置文件数据 (2)为JavaWeb应用创建一个ServletContext对象 (3)对所有的Filte ...
- 数学口袋精灵感受与BUG
232朱杰 http://www.cnblogs.com/alfredzhu https://github.com/alfredzhu/ 组长,团队 230蔡京航 http://www.cnblogs ...
- 【第二周】Java实现英语文章词频统计(改进1)
本周根据杨老师的spec对英语文章词频统计进行了改进 1.需求分析: 对英文文章中的英文单词进行词频统计并按照有大到小的顺序输出, 2.算法思想: (1)构建一个类用于存放英文单词及其出现的次数 cl ...
- 网页显示百度地图 Jquery
cshtml: <div class="modal" style="visibility: hidden"> <div id="ma ...
- 【bzoj4305】数列的GCD 组合数学+容斥原理
题目描述 给出一个长度为N的数列{a[n]},1<=a[i]<=M(1<=i<=N). 现在问题是,对于1到M的每个整数d,有多少个不同的数列b[1], b[2], ..., ...
- 详解SQL Server数据修复命令DBCC的使用
严重级别为 21 表示可能存在数据损坏. 可能的原因包括损坏的页链.损坏的 IAM 或该对象的 sys.objects目录视图中存在无效条目. 这些错误通常由硬件或磁盘设备驱动程序故障而引起. MS ...
- BZOJ3712 PA2014Fiolki(kruskal重构树)
对合并过程建树.然后只需要按照时间顺序考虑每个反应就行了,时间顺序根据lca的深度确定. #include<iostream> #include<cstdio> #includ ...