如何比较两个字符串?用“=”仍是equalsjava
简单来讲,“==”是用来检测俩引用是否是指向内存中的同一个对象,而equals()方法则检测的是两个对象的值是否相等。只要你想检测俩字符串是否是相等的,你就必须得用equals()方法。正则表达式
若是你知道“字符串保留(string intern)”的概念那就更好了。编程
2. 为何安全敏感的字符串信息用char[]会比String对象更好?数组
String对象是不可变的就意味着直到垃圾回收器过来清扫以前它们都不会发生变化的。用数组的话,就能够很明确的修改它任何位置的字符元素。这样的话,如密码等安全敏感的信息就不会出如今系统的任何地方。安全
3. 字符串对象可否用在switch表达式中?ui
从JDK7开始的话,咱们就能够在switch条件表达式中使用字符串了,也就是说7以前的版本是不能够的。线程
// java 7 only!orm
switch (str.toLowerCase()) {cdn
case a:对象
value = 1;
break;
case b:
value = 2;
break;
}
4. 如何将字符串转换为整型数值?
int n = Integer.parseInt(10);
如此简单,常常使用有偶尔也会被遗忘。
5. 如何用空格去分隔字符串?
咱们能够很便捷的使用正则表达式来进行分隔。“\s”就表示空格,还有如””,”\t”,”\r”,”\n”.
String[] strArray = aString.split(\\s+);
6. substring()方法具体是都干了些啥?
在JDK6中,这个方法只会在标识现有字符串的字符数组上 给一个窗口来表示结果字符串,可是不会建立一个新的字符串对象。若是须要建立个新字符串对象,能够这样在结果后面+一个空的字符串:
str.substring(m, n) +
这么写的话就会建立一个新的字符数组来表示结果字符串。同时,这么写也有必定的概率让你的代码跑的更快,由于垃圾回收器会吧没有在使用的大字符串回收而留下子字符串。
Oracle JDK7中的substring()方法会建立一个新的字符数组,而不用以前存在的。看看这张图就会明白substring()方法在JDK6和JDK7中的区别。
7. StringStringBuilderStringBuffer
String vs StringBuilder:StringBuilder是可变的,这就意味你在建立对象以后还能够去修改它的值。StringBuilder vs StringBuffer:StringBuffer是同步的,意味着它是线程安全的,可是就会比StringBuilder慢些。
8. 如何快速重复构造一段字符串?
在Python编程中,只须要用字符串去乘以一个数字就能够 搞定了,那在Java编程中,咱们可使用来自Apache Commons Lang包中的StringUtils类的repeat()方法。
String str = abcd;
String repeated = StringUtils.repeat(str,3);
//abcdabcdabcd
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
10. 如何计数一个字符在某个字符串中出现的次数?
使用Apache Commons Lang包中的 StringUtils类就能够完成这个工做。
int n = StringUtils.countMatches(11112222, 1);
System.out.printl``` n(n);