标签:break har jdk6 char 为什么 match 创建对象 可变 如何
好程序员Java教程分享Java中String类型的10个问题如果你知道“字符串保留(string intern)”的概念那就更好了。
为什么安全敏感的字符串信息用char[]会比String对象更好?
String对象是不可变的就意味着直到垃圾回收器过来清扫之前它们都不会发生变化的。用数组的话,就可以很明确的修改它任何位置的字符元素。这样的话,如密码等安全敏感的信息就不会出现在系统的任何地方。
1<span class="hljs-comment" style="color: rgb(153, 153, 136);">// java 7 only!</span>
2<span class="hljs-keyword" style="font-weight: bold;">switch</span> (str.toLowerCase()) {
3 <span class="hljs-keyword" style="font-weight: bold;">case</span> <spanclass="hljs-string" style="color: rgb(221, 17, 68);">"a"</span>:
4 <span class="hljs-keyword" style="font-weight: bold;">value</span> = <spanclass="hljs-number" style="color: rgb(0, 128, 128);">1</span>;
5 <span class="hljs-keyword" style="font-weight: bold;">break</span>;
6 <span class="hljs-keyword" style="font-weight: bold;">case</span> <spanclass="hljs-string" style="color: rgb(221, 17, 68);">"b"</span>:
7 <span class="hljs-keyword" style="font-weight: bold;">value</span> = <spanclass="hljs-number" style="color: rgb(0, 128, 128);">2</span>;
8 <span class="hljs-keyword" style="font-weight: bold;">break</span>;
9}
如此简单,经常使用有偶尔也会被遗忘。
1<span class="hljs-type" style="color: rgb(68, 85, 136); font-weight: bold;">String</span>[] strArray = aString.<span class="hljs-built_in"style="color: rgb(0, 134, 179);">split</span>(<span class="hljs-string"style="color: rgb(221, 17, 68);">"\s+"</span>);
1str.substring(m, n) + <span class="hljs-string" style="color: rgb(221, 17, 68);">""</span>
这么写的话就会创建一个新的字符数组来表示结果字符串。同时,这么写也有一定的几率让你的代码跑的更快,因为垃圾回收器会吧没有在使用的大字符串回收而留下子字符串。
Oracle JDK7中的substring()方法会创建一个新的字符数组,而不用之前存在的。看看这张图就会明白substring()方法在JDK6和JDK7中的区别。
String&StringBuilder&StringBuffer
String vs StringBuilder:StringBuilder是可变的,这就意味你在创建对象之后还可以去修改它的值。StringBuilder vs StringBuffer:StringBuffer是同步的,意味着它是线程安全的,但是就会比StringBuilder慢些。
1<span class="hljs-built_in" style="color: rgb(0, 134, 179);">String</span> str = <span class="hljs-string" style="color: rgb(221, 17, 68);">"abcd"</span>;
2<span class="hljs-built_in" style="color: rgb(0, 134, 179);">String</span> repeated = StringUtils.repeat(str,<span class="hljs-number" style="color: rgb(0, 128, 128);">3</span>);
3<span class="hljs-comment" style="color: rgb(153, 153, 136);">//abcdabcdabcd</span>
如何将时间格式的字符串转换成date对象?
1<span class="hljs-built_in" style="color: rgb(0, 134, 179);">String</span> str = <span class="hljs-string" style="color: rgb(221, 17, 68);">"Sep 17, 2013"</span>;
2<span class="hljs-built_in" style="color: rgb(0, 134, 179);">Date</span> date = <span class="hljs-keyword" style="font-weight: bold;">new</span> SimpleDateFormat(<span class="hljs-string" style="color: rgb(221, 17, 68);">"MMMM d, yy"</span>, Locale.ENGLISH).parse(str);
3System.out.println(date);
4<span class="hljs-comment" style="color: rgb(153, 153, 136);">//Tue Sep 17 00:00:00 EDT 2013</span>
1<span class="hljs-keyword" style="font-weight: bold;">int</span> n = StringUtils.countMatches(<span class="hljs-string" style="color: rgb(221, 17, 68);">"11112222"</span>, <span class="hljs-string" style="color: rgb(221, 17, 68);">"1"</span>);
2System.out.printl<span class="hljs-string" style="color: rgb(221, 17, 68);">`</span><span class="hljs-string" style="color: rgb(221, 17, 68);">
n(n);</span>
好程序员Java教程分享Java中String类型的10个问题
标签:break har jdk6 char 为什么 match 创建对象 可变 如何
原文地址:https://blog.51cto.com/14573321/2449088