`
younglibin
  • 浏览: 1207755 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

10个有关String的面试问题

 
阅读更多

下面是面试中最容易问到的有关String的问题。

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

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

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

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

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

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

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

1
2
3
4
5
6
7
8
9
// Java 7或者以后的版本
switch (str.toLowerCase()) {
      case "a":
           value = 1;
           break;
      case "b":
           value = 2;
           break;
}

4. 如何将字符串转化成int?

1
int n = Integer.parseInt("10");

很简单,也经常使用,但经常被忽略。

5. 如何将字符串用空白字符分割开?

我们可以使用正则表达式来做到分割字符。“\s”代表空白字符” “, “\t”, “\r”, “\n”.

1
String[] strArray = aString.split("\\s+");

6. substring()方法到底做了什么?

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

1
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()方法来重复一个字符串。

1
2
3
String str = "abcd";
String repeated = StringUtils.repeat(str,3);
//abcdabcdabcd

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

1
2
3
4
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:

1
2
int n = StringUtils.countMatches("11112222", "1");
System.out.println(n);
分享到:
评论

相关推荐

    10个有关String的面试问题Java开发Java经验技

    以下就是10个关于Java String的面试问题,这些问题涵盖了String的基础、性能优化以及一些高级特性。 1. **String是不可变的吗?** 是的,String在Java中是不可变的。这意味着一旦创建了一个String对象,就不能更改...

    10个Java经典的String面试题

    "Java字符串面试题详解" 在 Java 中,String 是一个非常重要的类,它在实际应用...这 10 个 Java 经典的 String 面试题涵盖了 String 的基本特点、使用方法和常见问题。掌握这些知识点对于 Java 开发者来说非常重要。

    10个Java经典的String面试题!.zip

    以下是对这十个经典Java String面试题的详细解答: 1. **String对象的创建** - 当使用`new`关键字创建String对象时,会在堆内存中分配一个新的对象。 - 字符串字面量(如`"hello"`)会放入字符串常量池中。如果...

    10个Java经典的String面试题!.pdf

    以下是对这十个经典Java String面试题的详细解答: 1. **String是基本数据类型吗?** Java的String并不是基本数据类型,而是引用类型。Java有8种基本数据类型,如int、char等,而String属于类,它继承了Object类。...

    C++笔试面试宝典2009版与C++ String深入详解2.0版

    "C++ String深入详解2.0版"则专注于C++中的字符串处理,这是C++中一个非常重要的主题。C++的字符串处理不同于C语言,它提供了更安全、更高效的方法来操作字符串。这个文档可能详细讲解了std::string类的用法,包括...

    java面试笔试题String 和StringBuffer的区别

    在Java编程语言中,`String`与`StringBuffer`是两个重要的字符串处理类,它们各自具有独特的特性和用途,尤其在面试或笔试中常被提及作为考察应聘者对Java基础知识掌握程度的重要知识点。 ### `String`类:不可变性...

    c#面试问题c#面试问题c#面试问题

    在C#面试中,面试官通常会关注应聘者对语言基础、.NET框架、多线程、设计模式、数据结构与算法、数据库交互、异常处理、单元测试、内存管理、性能优化等多个方面的理解。以下是一些常见的C#面试问题及详解: 1. **...

    史上最全Java面试题目大集合

    整理了网上的一些java面试题目,很全很强大 面向对象的特征有哪些方面 1. 抽象:抽象就是忽略一个主题中与当前目标2. 无关的那些方面,3. 以便更充分地注意与当前目标4. 有关的方面。抽象并不5. 打算了解全部问题...

    java面试常见问题

    因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常改变内容的字符串最好不要用 String ,因为每次生成对象都会对系统性能产生影响,特别当...

    框架面试题,集合了String,struts2,springmvc

    在本文中,我们将详细讨论框架面试题,涵盖了String、struts2和springmvc等多个方面的知识点。 首先,让我们从IOC容器开始。IOC容器是具有依赖注入功能的容器,是可以创建对象的容器。IOC容器负责实例化、定位、...

    JAVA面试题解惑系列(二)——到底创建了几个String对象-JAVA程序员JAVA工程师面试必看.pdf,这是一份不错的文件

    JAVA 面试题解惑系列之 String 对象创建机制 本文将深入探讨 JAVA 中 String 对象的创建机制,解答常见的面试题目,并探索 String 对象池的概念和机制。 一、String 对象的创建方式 在 JAVA 中,String 对象可以...

    JAVA面试问题,自己和别人总结

    JAVA面试问题总结 JAVA是一种广泛应用的编程语言,作为一名JAVA开发者,需要具备扎实的基础知识和实践经验。本文总结了常见的JAVA面试问题,涵盖了JAVA基础、JSP、Servlet、XML、J2EE、MVC、数据库等方面的知识点。...

    Java常用类String的面试题汇总(java面试题)

    在面试中,关于String类的问题往往是必考题。以下是一些在面试中可能会遇到的问题,以及对应的解释和知识点汇总。 1. 在比较两个字符串时,应该使用“==”还是equals()方法? 答案是使用equals()方法。因为“==”...

    Java面试问题整理.docx

    Java 面试问题整理中涵盖了 Java 基础知识、equals 和 hashCode 的区别、Math 类的使用、String 类的特点等多个方面的知识点。 一、Java 基础知识 * JDK 和 JRE 的区别:JDK(Java Development Kit)是 Java 的...

    Java全能学习面试手册——Java架构师进阶资料面试资料.zip

    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...

    Java全能学习面试手册——Java面试题库.zip

    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...

    java面试问题大全

    Java面试问题涵盖了各种核心概念,包括面向对象特性、数据类型、异常处理、字符串处理、集合框架、多线程以及企业级Java应用中的组件。以下是针对这些知识点的详细说明: 1. **面向对象的特征**: - **抽象**:...

    C/C++程序员面试指南.杨国祥(带详细书签).pdf

    面试题10:编写类String 的构造函数、析构函数和赋值函数 8.4 拷贝构造函数 面试题11:谈谈对拷贝构造函数和赋值运算符的认识 面试题12:写出当定义#define _INMAIN 0和不定义时代码打印结果 第9章 继承与多态 9.1 ...

Global site tag (gtag.js) - Google Analytics