`

Java字符串问题Top10

    博客分类:
  • Java
阅读更多

以下是10个最常见的Java字符串问题。

1、如何比较字符串?使用“==”还是使用equals() ?

简单地说,“==”测试引用同一地址,而equals()测试值是否相等。除非需要检查两个字符串是否是同一个对象,否则应该总是使用equals()方法。

如果你知道字符串驻留(string interning)的概念的就更好了。

译注:字符串驻留是指为每个独立的String值只保留一个不可改变的拷贝,详细解释可参见String interning词条

 

2、为什么为在处理私密信息的时候,选择char [ ]比String好?

String是不可改变的。这意味着一旦String对象被创建,那个地址上的值将保持不变,直到垃圾收集器有空来做自动清理。而使用char[ ]可以(在用完后)明确地修改它的元素。这种一来,私密信息(例如密码)就不会在系统的任何地方出现。

 

3、我们可以在switch语句中用String作分支条件吗?

从JDK 7开始是可以的。我们可以使用String符串作为Switch条件。第JDK 6之前,我们不能使用String作为Switch条件。

// java 7 only!
switch (str.toLowerCase()) {
      case "a":
           value = 1;
           break;
      case "b":
           value = 2;
           break;
}
 

4 、如何转换String为int?

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

调用很简单,使用如此频繁以致有时会被忽略。

 

5 、如何用空白符分割字符串?

可以简单地使用正则表达式做分割。“ \s ”代表所有空格符,如“ ”、 “ \ ”、 “ \ r”、“ \ n ”。

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

6 、substring() 具体干了些什么?

在JDK 6中,substring() 提供了一个显示已有字符串char[]的接口,但不创建新字符串。如果需要创建一个新的char[]表示的字符串,可以像下面一样与一个空字符串相加:

str.substring(m, n) + ""
 

这样会创建一个新的字符数组,表示新的字符串。示例方法有时可以使代码运行更快,因为垃圾收集器可以收集未使用的大字符串只保留子串。

在Oracle JDK 7中 ,substring()会创建一个新的字符数组而不是使用现有的。点击这个链接有图解说明JDK 6和JDK 7的substring()之间的差异。

 

7、String vs StringBuilder vs StringBuffer

  • String 与StringBuilder的区别:StringBuilder的是可变的,这意味着可以在创建以后再作修改。
  • StringBuilder与StringBuffer的区别: StringBuffer的是同步的,这意味着它是线程安全的,但速度比StringBuilder慢。

8、如何重复一个字符串?

在Python中,我们可以乘以一个数字来重复字符串。在Java中,我们可以使用Apache公共语言包(Apache Commons Lang package)中的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公共语言包中的StringUtils:

int n = StringUtils.countMatches("11112222", "1");
System.out.println(n);
 

附加题

你知道如何检测一个字符串是否只包含大写字母吗

分享到:
评论

相关推荐

    SourceInsight教程.

    3. **代码高亮**:SourceInsight提供语法高亮功能,不同类型的代码元素(如关键字、注释、字符串等)以不同的颜色显示,有助于快速识别代码结构。 ### 二、代码浏览与导航 1. **代码跳转**:通过F3快捷键,Source...

    java八股文整理,非常全面可靠

    对于寻找热门查询的问题,例如统计最热门的10个查询字符串,可以使用hashmap + 堆的方法。首先将数据大致划分到小文件中,然后对每个小文件中的ip进行hashmap计数统计,并按数量排序,最后归并或者最小堆依次处理每...

    Java典型模块

    第21章 查找和替换项目(GUI+字符串处理) 21.1 查找和替换原理 21.1.1 项目结构框架分析 21.1.2 项目功能业务分析 21.2 查找和替换项目——利用AWT组件 21.2.1 设计项目的界面——查找和替换输入界面 21.2.2 各种...

    top10groovyfeatures:codebulb.ch 博客文章中的代码示例

    4. **GString**:GString是Groovy特有的字符串类型,允许在字符串中嵌入表达式,使字符串格式化更加直观。 5. **方法和属性默认值**:在Groovy中,方法和属性可以有默认值,这增强了API的使用便利性。 6. **元编程...

    HIVE实战项目-Youtube视频网站常规指各项标

    - 示例代码展示了如何在`ETLUtil`类中实现这个功能,通过`oriString2ETLString`方法将原始字符串转换为ETL处理后的字符串。 2. **Mapper阶段**: - `VideoETLMapper`类继承自Hadoop的`Mapper`,负责读取原始数据...

    由 Top10 开发和使用的惯用 Scala Redis 客户端 这是一项正在进行的工作,虽然在生产中使用,但应将其视为在生产中

    2. **序列化和反序列化**:由于Redis操作的是二进制数据,客户端通常会提供将Scala对象与Redis的字符串、整数等数据类型之间转换的机制。JSON、protobuf等序列化库可能是常用的选择。 3. **命令支持**:好的客户端...

    大数据技术之-08-Hive学习-05-Hive实战之谷粒影音+常见错误及解决方案.docx

    将类别字段中的空格替换为空字符串 fields[3] = fields[3].replace(" ", ""); // 3. 替换关联视频字段分隔符 "\t" 为 "&" StringBuffer sb = new StringBuffer(); for (int i = 0; i ; i++) { if (i ) { if...

    WEB安全编程技术规范(V1.0).pdf

    防范措施是使用安全的函数,如参数化命令执行,并避免动态构造命令字符串。 5. **认证与会话管理**:规范强调使用安全的认证机制,如HTTPS进行传输,防止中间人攻击,避免使用不安全的会话ID,定期刷新会话ID,以及...

    百度2011到2012软件研发笔试题

    - 合并字符串:最后将反转后的数组合并成一个新的字符串,单词之间以空格分隔。 4. **示例代码**(C++): ```cpp #include #include #include using namespace std; string reverseWords(string s) { ...

    InterviewQuestion

    1.用至少两种方法实现方法字符串的逆序。比如输入abcdefg,返回 gfedcba 2.写一个 Web 应用,输入关键词(比如编程),将豆瓣搜索出来的书籍 列出来,并且将亚马逊 Kindle 版本购买价格查询出来。 3.读取网页 的正文...

Global site tag (gtag.js) - Google Analytics