尚观讲解java开发中String类型的10个问题

1. 如何比较两个字符串?用“=”还是equals

简单来说,“==”是用来检测俩引用是不是指向内存中的同一个对象,而equals()方法则检测的是两个对象的值是否相等。只要你想检测俩字符串是不是相等的,你就必须得用equals()方法。

如果你知道“字符串保留(string intern)”的概念那就更好了。

在java的学习中,String类型的问题是很常见的,为了帮助大家更好的去了解,尚观小编在这里整理了java开发中String类型的10个问题,大家可以参考一下。

2. 为什么安全敏感的字符串信息用char[]会比String对象更好?

String对象是不可变的就意味着直到垃圾回收器过来清扫之前它们都不会发生变化的。用数组的话,就可以很明确的修改它任何位置的字符元素。这样的话,如密码等安全敏感的信息就不会出现在系统的任何地方。

java开发中String类型的10个问题

3. 字符串对象能否用在switch表达式中?

从JDK7开始的话,我们就可以在switch条件表达式中使用字符串了,也就是说7之前的版本是不可以的。

// java 7 only!
switch (str.toLowerCase()) {
      case "a":
           value = 1;
           break;
      case "b":
           value = 2;
           break;
}
  1. 如何比较两个字符串?用“=”还是equals

4. 如何将字符串转换为整型数值?

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

如此简单,经常使用有偶尔也会被遗忘。

澳门新浦京8455com,简单来说,“==”是用来检测俩引用是不是指向内存中的同一个对象,而equals()方法则检测的是两个对象的值是否相等。只要你想检测俩字符串是不是相等的,你就必须得用equals()方法。

5. 如何用空格去分隔字符串?

我们可以很便捷的使用正则表达式来进行分隔。“s”就表示空格,还有如””,”t”,”r”,”n”.

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

如果你知道“字符串保留(string intern)”的概念那就更好了。

6. substring()方法具体是都干了些啥?

在JDK6中,这个方法只会在标识现有字符串的字符数组上
给一个窗口来表示结果字符串,但是不会创建一个新的字符串对象。如果需要创建个新字符串对象,可以这样在结果后面+一个空的字符串:

str.substring(m, n) + ""

这么写的话就会创建一个新的字符数组来表示结果字符串。同时,这么写也有一定的几率让你的代码跑的更快,因为垃圾回收器会吧没有在使用的大字符串回收而留下子字符串。

Oracle
JDK7中的substring()方法会创建一个新的字符数组,而不用之前存在的。看看这张图就会明白substring()方法在JDK6和JDK7中的区别。

  1. 为什么安全敏感的字符串信息用char[]会比String对象更好?

7. String&StringBuilder&StringBuffer

String vs
StringBuilder:StringBuilder是可变的,这就意味你在创建对象之后还可以去修改它的值。StringBuilder
vs
StringBuffer:StringBuffer是同步的,意味着它是线程安全的,但是就会比StringBuilder慢些。

String对象是不可变的就意味着直到垃圾回收器过来清扫之前它们都不会发生变化的。用数组的话,就可以很明确的修改它任何位置的字符元素。这样的话,如密码等安全敏感信息就不会出现在系统的任何地方。

8. 如何快速重复构造一段字符串?

在Python编程中,只需要用字符串去乘以一个数字就可以
搞定了,那在Java编程中,我们可以使用来自Apache
Commons
Lang包中的StringUtils类的repeat()方法。

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

尚观培训11年经营,一直秉承”技术为王”的教学理念,采用项目实战授课方式,学员0费用入学,80000年薪就业,就业后再付款,良心教育。

9. 如何将时间格式的字符串转换成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
  1. 字符串对象能否用在switch表达式中?

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

使用Apache Commons Lang包中的 StringUtils类就可以完成这个工作。

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

从JDK7开始的话,我们就可以在switch条件表达式中使用字符串了,也就是说7之前的版本是不可以的。

// java 7 only!

switch (str.toLowerCase()) {

case “a”:

value = 1;

break;

case “b”:

value = 2;

break;

}

  1. 如何将字符串转换为整型数值?

int n = Integer.parseInt(“10”);

如此简单,经常使用有偶尔也会被遗忘。

  1. 如何用空格去分隔字符串?

我们可以很便捷的使用正则表达式来进行分隔。“s”就表示空格,还有如””,”t”,”r”,”n”.

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

  1. substring()方法具体是都干了些啥?

在JDK6中,这个方法只会在标识现有字符串的字符数组上
给一个窗口来表示结果字符串,但是不会创建一个新的字符串对象。如果需要创建个新字符串对象,可以这样在结果后面+一个空的字符串:

str.substring(m, n) + “”

这么写的话就会创建一个新的字符数组来表示结果字符串。同时,这么写也有一定的几率让你的代码跑的更快,因为垃圾回收器会吧没有在使用的大字符串回收而留下子字符串。

Oracle
JDK7中的substring()方法会创建一个新的字符数组,而不用之前存在的。看看这张图就会明白substring()方法在JDK6和JDK7中的区别。

  1. String&StringBuilder&StringBuffer

String vs
StringBuilder:StringBuilder是可变的,这就意味你在创建对象之后还可以去修改它的值。StringBuilder
vs
StringBuffer:StringBuffer是同步的,意味着它是线程安全的,但是就会比StringBuilder慢些。

  1. 如何快速重复构造一段字符串?

在Python编程中,只需要用字符串去乘以一个数字就可以
搞定了,那在Java编程中,我们可以使用来自Apache Commons
Lang包中的StringUtils类的repeat()方法。

String str = “abcd”;

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

//abcdabcdabcd

  1. 如何将时间格式的字符串转换成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

  1. 如何计数一个字符在某个字符串中出现的次数?

使用Apache Commons Lang包中的 StringUtils类就可以完成这个工作。

int n = StringUtils.countMatches(“11112222”, “1”);

System.out.printl“`  n(n);

java开发中String类型的10个问题到这里尚观科技就给大家介绍完了,希望能帮助到大家。在这里给大家介绍一下我们尚观社区,是一个相关的技术论坛,大家可以去看看。还以添加我们的微信公众号,每天都会给大家分享很多精彩文章。(微信公众号:uplookings)

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图