技术分享|Java中String类的常见面试题

2018-06-06 16:06:23

String作为Java中最常用的引用类型,相对来说基本上都比较熟悉,无论在平时的编码过程中还是在笔试面试中,String都很受到青睐。今天,西安中软卓越的老师就来和大家详细聊聊字符串StringStringBufferStringBuilder,告诉你怎样完美的回答面试官的问题,希望对你有帮助。

技术分享|Java中String类的常见面试题.jpg

1.如何比较两个字符串?使用"=="还是equals()方法?

简单来讲,"=="测试的是两个对象的引用是否相同,而equals()比较的是两个字符串的值是否相等。除非你想检查的是两个字符串是否是同一个对象,否则你应该使用equals()来比较字符串。

如果你知道interning的概念的话,那就更好了。

2.为什么针对安全保密高的信息,char[]String更好?

因为String是不可变的,就是说它一旦创建,就不能更改了,直到垃圾收集器将它回收走。而字符数组中的元素是可以更改的(译者注:这就意味着你就可以在使用完之后将其更改,而不会保留原始的数据)。所以使用字符数组的话,安全保密性高的信息(如密码之类的)将不会存在于系统中被他人看到。

3.我们可以针对字符串使用switch条件语句吗?

对于JDK7,回答是肯定的。从JDK7开始,我们可以针对字符串使用switch条件语句了;在JDK6或者之前的版本,我们则不能使用switch条件语句。

//Java7或者以后的版本

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()方法到底做了什么?

JDK6,substring()的做法是,用一个字符数组来表示现存的字符串,然后给这个字符数组提供一个"窗口",但实际并没有创建一个新的字符数组。要创建一个新的字符串对象由新的字符串数组表示的话,你需要加上一个空字符串,如下所示:

str.substring(m,n)+""

这会创建一个新的字符数组,用来表示新的字符串。这种方法会让你的代码更快,因为垃圾收集器会收集不用的长字符串,而仅保存要使用的子字符串。

OracleJDK7中,substring()会创建新的字符数组,而不是使用现存的字符数组。点击查看JDK6JDK7substring()的分别。

7.String vs String Builder vs String Buffer

String vs StringBuilder: StringBuilder是可变的,这意味着它创建之后仍旧可以更改它的值。

StringBuilder vs StringBuffer:StringBuffersynchronized,它是线程安全的的,但是比StringBuilder要慢。

8.如何重复一个字符串

Python,我们可以乘一个数值来重复一个字符串。在Java中,我们可以使用Apache CommonsLang包中的StringUtils.repeat()方法来重复一个字符串。

Stringstr="abcd";

String repeated=StringUtils.repeat(str,3);

//abcdabcdabcd

9.如何将字符串转换成时间

String str="Sep17,2013";

Date date=new SimpleDateFormat("MMMMd,yy",Locale.ENGLISH).parse(str);

System.out.println(date);

//TueSep1700:00:00EDT2013

10.如何计算一个字符串某个字符的出现次数?

请使用apache commons lang包中的StringUtils

Int n=StringUtils.countMatches("11112222","1");

System.out.println(n);

作为一名开发人员,技术是立身的根本,是拴马桩的尊严;对于一个做教育机构,口碑如水是生命之源,是长盛不衰的根本。13年历经风雨依然昂首前行,未来的西安中软卓越同样会恪守初心,以技术立身,培养IT精英,捍卫教育本质。

本文由中软卓越(西安)汇集整理,转载请注明作者及出处。

如需学习java、UI设计、软件测试、Python、大数据、嵌入式、Linxu云计算,请点击咨询,加入我们让你的未来不再迷茫。

关于我们

“简称中软卓越”,是中软国际教育科技股份有限公司是大型IT人才培训机构,是人才战略的核心组成部分之一,承担集团发展过程中人才储备和培养的任务;专注IT培训37年,国内高端IT培训品牌,教育部指定官方IT人才培训机构。专注java培训、UI设计培训、软件测试培训、Python培训、大数据培训、嵌入式培训、Linxu云计算培训等培训课程。217家合作院校,880家合作企业,真实项目实战,素质拓展,职业规划。零首付,100%保障就业,先就业,后付款。

最牛逼的毕业学员入职名企享受高薪就业。880家合作企业,年培育学员人数逾6000人,毕业学员就职于中软国际、百度、腾讯、阿里巴巴、IBM、华为科技、中兴通讯、软通动力等知名企业。

还有什么疑问?我们全面为你解答!为您提供一对一专人服务,请点击下方咨询

  • 卓越资讯
  • 猜你想看
  • 常见问题

    Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。[详细课程]

    软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程;软件开发是一项包括需求捕捉、需求分析、设计、实现和测试的系统工程。[详细课程]

    软件测试是在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。[详细课程]

    Python是一种面向对象的解释型计算机程序设计语言,语法简洁清晰,特色之一是强制用空白符作为语句缩进,它常被昵称为胶水语言,能够把用其他语言制作的各种模块。[详细课程]

    UI设计分为实体UI和虚拟UI,互联网说的UI设计是虚拟UI,一般是指对软件的人机交互、操作逻辑、界面美观的整体设计。[详细课程]

    大数据,又称巨量资料,指的是所涉及的数据资料量规模巨大到无法通过人脑甚至主流软件工具,在合理时间内达到撷取、管理、处理、并整理成为帮助企业经营决策更积极目的的资讯。[详细课程]

    云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。[详细课程]

    西安市长安北路8号高速大厦三楼

    电话:029-61876930