阅读目录

  • 怎样比较字符串?使用==还是equals()
  • 对于敏感信息优先使用字符数组而不是字符串
  • switch语句是否可以用string
  • 怎样将字符串转成整型
  • 怎样按空白字符(可能多个)分割字符串
  • substring()方法在做什么
  • String vs StringBuilder vs StringBuffer
  • 怎样创建重复字符串
  • 如何将字符串转成date类型
  • 统计字符在某个字符串中出现的次数
  • 留给读者:如何检测一个字符串是否都是大写字母

下面是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/


@Author      风一样的码农
@HomePageUrl http://www.cnblogs.com/chenpi/ 

Java字符串中常见的10个问题相关推荐

  1. java面试技术问题_11个JAVA面试中常见技术问题

    原标题:11个JAVA面试中常见技术问题 大家在平常面试java的过程中都会遇到哪些难题呢?还有一些即将去面试java的童鞋们,你们想知道技术面试中会涉及到哪些点吗?达妹为你整理Java面试中会被问到 ...

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

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

  3. Java开发中常见的危险信号

    Dustin Marx是一位专业软件开发者,从业已经有17年的时间,他拥有电子工程学士学位,还是一位MBA.Dustin维护着一个博客,专门介绍软件开发的各个主题.近日,他撰文谈到了Java开发中常见 ...

  4. java 字符串中转义字符_Java中的转义字符

    java 字符串中转义字符 Learn how we can use escape sequence in Java 了解如何在Java中使用转义序列 These characters can be ...

  5. 去除Java字符串中的空格

    问题:去除Java字符串中的空格 俺有一个像这样的字符串 mysz = "name=john age=13 year=2001"; 我想要去除字符串里面的空格.我尝试使用 trim ...

  6. PTA11、 输入输出-计算字符串中的数 (10 分)

    11. 输入输出-计算字符串中的数 (10 分) 将字符串中的每个数都抽取出来,然后统计所有数的个数并求和. 输入格式: 一行字符串,字符串中的数之间用1个空格或者多个空格分隔. 输出格式: 第1行: ...

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

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

  8. Java面试中常见的高并发解决方案

    Java面试中常见的高并发解决方案 一般来讲,提高系统应对高并发能力的解决方案可以从以下几个方面入手: (1)高性能服务器 (2)高性能数据库 (3)高效编程语言 (4)高性能web容器 提高数据库性 ...

  9. 国仁网络资讯:快手短视频运营中常见的10大疑难杂症;【建议收藏】

    互联网的快速发展,也让短视频平台快速崛起,为了迎合快节奏的上班族生活,快手也成为了人们娱乐消遣.创业赚钱的重要平台. 那么对于 一些拥有快手号的人来说,怎样才能够通过运营快手号来变现,分享分享运营中常 ...

最新文章

  1. MyCAT-1.4-RC性能测试(初步施工)
  2. python 2.7 简单模拟登陆网站
  3. 客户端如何通过咏南中间件调用存储过程和数据分页查询和文件传输的演示
  4. 如何通过预加载器提升网页加载速度
  5. Android 里的数据储存
  6. 有几种部署模式_来!PyFlink 作业的多种部署模式
  7. json增加反斜杠 php_thinkphp5.1.x~5.2.x版本反序列化链挖掘分析
  8. springMVC中添加命名空间(edit namespace)
  9. ------webkitformboundary
  10. codeforces 258div2 B Sort the Array
  11. php讲一个正整数前补0,php 数字补零的两种的简单示例
  12. 红外传感器型号和参数_深度解析红外传感器原理、分类、性能参数、应用及前景...
  13. npm ERR! y@1.0.0 dev: `webpack-dev-server --inline --progress --config build/webpack.dev.conf.js`
  14. 编程语言:8086汇编中int 16h接收alt+方向键
  15. 单片机驱动程序是什么,驱动文件组成。
  16. birthday日期类型转化
  17. 2022年湖南省临床执业医师考试第二单元精神神经系统模拟题
  18. Cadence 中贴片元件焊盘的制作
  19. 网线标准以及国内外大牌
  20. API 开放接口设计之 appId,appSecret,accessToken (同微信开发平台接口)

热门文章

  1. Linux 进程管理剖析--转
  2. 机器学习算法基础(基础机器学习课程)——第一天
  3. 【风控建模】互联网金融-机器学习及评分卡构建
  4. Facebook:使用Libra完成第一笔交易
  5. 专访小米欧阳辰:深度揭秘小米广告平台的构建、底层模块和坑
  6. 每日一博 - 延时任务的多种实现方式解读
  7. Spring Boot - 构建数据访问层
  8. 白话Elasticsearch39-深入聚合数据分析之案例实战_搜索+聚合: 统计指定品牌下每个颜色的销量
  9. 腾讯面试题 TCP/IP协议四个层次
  10. kaldi在java中运行_ubuntu下kaldi的安装以及实例的运行