下面是Java中10个最常见的关于字符串的问题。

怎样比较字符串?使用==还是equals()

简单的说,“==”用于判断引用是否相等,equals()用于判断值是否相等。除非你要比较两个字符串是否是同一个对象,否则你应该使用equals()方法。如果你知道字符串驻留的概念会更好。

对于敏感信息优先使用字符数组而不是字符串

字符串是不可变的,意味着一旦被创建,他们就会一直存在直到垃圾回收器回收它们。然而对于一个数组来说,你可以明确的改变它们的元素。使用这种方法,敏感信息(如密码)就不会长期存在于系统中。

switch语句是否可以用string

是的,对于JDK7,我们是可以使用字符串作为switch条件,然而在jdk6,我们不能使用字符串作为switch条件。

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

怎样将字符串转成整型

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

很简单,但是有时候也会被忽视。

怎样按空白字符(可能多个)分割字符串

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

substring()方法在做什么

在JDK 6,substring()方法不会创建一个新的字符数组,而是使用原有字符串的字符数组,为了创建一个新的字符数组组成的字符串,你可以在后面加上一个空字符串,如下:

str.substring(m, n) + ""

这会创建一个新的字符数组,组成新的字符串对象。使用这种方法有时候会提高性能,因为垃圾回收器能回收无用的大字符串,只保留剩下的子字符串。

在JDK7,substring()方法会创建一个新的字符数组,而不是使用已有的,可以参考以下链接了解更多关于JDK6和JDK7中substring()方法的异同。

http://www.programcreek.com/2013/09/the-substring-method-in-jdk-6-and-jdk-7/

String vs StringBuilder vs StringBuffer

String vs StringBuilder:StringBuilder是可变的,意味着你可以在其创建后修改它。

StringBuilder vs StringBuffer:StringBuffer是同步的,意味着它是线程安全的,但是会比StringBuilder慢。

怎样创建重复字符串

在Python中,我们可以简单的使用数字重复字符串;而在Java中,我们可以使用Apache Commons Lang 包下的StringUtils工具类的repeat()来实现,如下:

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

如何将字符串转成date类型

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

统计字符在某个字符串中出现的次数

使用Apache Commons Lang 包下的StringUtils工具类

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

留给读者:如何检测一个字符串是否都是大写字母

译文链接:http://www.programcreek.com/2013/09/top-10-faqs-of-java-strings/

Java字符串中常见的10个问题的更多相关文章

  1. 2、Java应用中常见的JDBC连接字符串(SQLite、MySQL、Oracle、Sybase、SQLServer、DB2)

    2.Java应用中常见的JDBC连接字符串 Java应用中连接数据库是不可或缺的,于是便整理一些可能用到的JDBC的jar包及其相匹配的URL,以备日后查阅. 1)SQLite Class.forNa ...

  2. Java开发中常见的危险信号(上)

    本文来源于我在InfoQ中文站原创的文章,原文地址是:http://www.infoq.com/cn/news/2013/12/common-red-flags-in-java-1 Dustin Ma ...

  3. Java web中常见编码乱码问题(二)

    根据上篇记录Java web中常见编码乱码问题(一), 接着记录乱码案例: 案例分析:   2.输出流写入内容或者输入流读取内容时乱码(内容中有中文) 原因分析: a. 如果是按字节写入或读取时乱码, ...

  4. java项目中常见的异常及处理

    Java开发中常见异常及处理方法 1.JAVA异常 异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API ...

  5. Java开发中常见的危险信号(中)

    本文来源于我在InfoQ中文站原创的文章,原文地址是:http://www.infoq.com/cn/news/2013/12/common-red-flags-in-java-1 Dustin Ma ...

  6. 数据结构笔记01:编程面试过程中常见的10大算法(java)

    以下是在编程面试中排名前10的算法相关的概念,我会通过一些简单的例子来阐述这些概念.由于完全掌握这些概念需要更多的努力,因此这份列表只是作为一个介绍.本文将从Java的角度看问题,包含下面的这些概念: ...

  7. Java web中常见编码乱码问题(一)

    最近在看Java web中中文编码问题,特此记录下. 本文将会介绍常见编码方式和Java web中遇到中文乱码问题的常见解决方法: 一.常见编码方式: 1.ASCII 码 众所周知,这是最简单的编码. ...

  8. Java Script中常见操作

    字符串常见操作:obj.length 长度obj.trim() 移除空白obj.trimLeft()obj.trimRight)obj.charAt(n) 返回字符串中的第n个字符obj.concat ...

  9. Java字符串中常用字符占用字节数

    java中一个char型的数据(也就是一个字符)占两个字节.而Java中常用的字符包括数字.英文字母.英文符号.中文汉字.中文符号等,若在字符串中包含里面的多种字符,它们是否都占两个字符呢?答案是否定 ...

随机推荐

  1. Jquery获取checkbox属性checked为undefined

    说明:本文来自新浪博客,因为无法收藏,故直接copy过来备注,以后好查询 原网址:http://blog.sina.com.cn/s/blog_6810dfc20101jddq.html 使用jQue ...

  2. iOS的QuickTime Plugin

    当UIWebView播放视频时,可以看到view hierarchy里有FigPluginView的身影.这个类来自于QuickTime Plugin,plugin的路径为: /Application ...

  3. 关于SilverLight

    目前工作中用到SilverLight,有必要对其作一定的了解.

  4. pymssql examples

    http://pymssql.org/en/latest/pymssql_examples.html Example scripts using pymssql module. Basic featu ...

  5. PyMySQL Evaluation

    PyMySQL Evaluation This page will capture issues related to Openstack moving to the PyMySQL driver f ...

  6. 算法:冒泡排序(python版)

    1.将n个元素从大到小排序后,选择第k个大的元素 #!/usr/bin/env python #coding -*- utf:8 -*- #冒泡排序选第k个元素 import random impor ...

  7. Hadoop笔记系列 一 用Hadoop进行分布式数据处理(1)

    学习资料参考地址: 1.http://blog.csdn.net/zhoudaxia/article/details/8801769 1.先说说什么是Hadoop? 个人理解:一个分布式文件存储系统+ ...

  8. JVM内存格局总结

    最近一次面试,面试官让我讲讲JVM的内存这一块的理解.我回答的不满意,今天做一个总结. 做一个产品,最终要做到高并发.高可靠.归根结底,是对CPU.内存等资源受限所作出的解决方案.就内存而言,我们写的 ...

  9. linux使用rpm重装jdk

    1.卸载jdk #rpm -qa | grep gcj 如果输出没有内容,说明没有jdk,如果输出有内容,要把搜索到的文件卸载掉,命令为: #rpm -e --nodeps [上步操作输出的文件] 然 ...

  10. 【转】MySQL的Replace into 与Insert into on duplicate key update真正的不同之处

    原文链接:http://www.jb51.net/article/47090.htm   今天听同事介绍oracle到mysql的数据migration,他用了Insert into ..... on ...