|
| 1 | +package com.chen.api.util.base; |
| 2 | + |
| 3 | +/** |
| 4 | + * created by zhubaobao on 2017-09-11 |
| 5 | + */ |
| 6 | +public class StringTest { |
| 7 | + |
| 8 | + static final int MAX = 100000; |
| 9 | + static final String[] arr = new String[MAX]; |
| 10 | + |
| 11 | + public static void main(String[] args) { |
| 12 | + |
| 13 | + //1. 测试i++等,可通过反编译验证(http://blog.csdn.net/u013256816/article/details/50778902) |
| 14 | + // plus(); |
| 15 | + |
| 16 | + //2.1 测试String类的intern()方法 (http://blog.csdn.net/seu_calvin/article/details/52291082) |
| 17 | + // String str2="SEUCalvin";//新加的一行代码,其余不变 |
| 18 | + // String str1=new String("SEU")+new String("Calvin"); |
| 19 | + // System.out.println(str1.intern() == str2); |
| 20 | + // System.out.println(str1=="SEUCalvin"); |
| 21 | + // System.out.println("你好打分三大件佛奥qdqwadsdas1214@#$%^&*(".hashCode()); |
| 22 | + |
| 23 | + //2.2 验证String类的intern方法的特点:节省空间,但是耗费时间 |
| 24 | + // 为长度为10的Integer数组随机赋值 |
| 25 | + // Integer[] sample = new Integer[10]; |
| 26 | + // Random random = new Random(1000); |
| 27 | + // for (int i = 0; i < sample.length; i++) { |
| 28 | + // sample[i] = random.nextInt(); |
| 29 | + // } |
| 30 | + // //记录程序开始时间 |
| 31 | + // long t = System.currentTimeMillis(); |
| 32 | + // //使用/不使用intern方法为10万个String赋值,值来自于Integer数组的10个数 |
| 33 | + // for (int i = 0; i < MAX; i++) { |
| 34 | + // arr[i] = new String(String.valueOf(sample[i % sample.length])); |
| 35 | + //// arr[i] = new String(String.valueOf(sample[i % |
| 36 | + // sample.length])).intern(); |
| 37 | + // } |
| 38 | + // System.out.println((System.currentTimeMillis() - t) + "ms"); |
| 39 | + // System.gc(); |
| 40 | + |
| 41 | + //2.3 测试intern方法的内存结构 |
| 42 | + // String s = new String("1"); |
| 43 | + // s.intern(); |
| 44 | + // String s2 = "1"; |
| 45 | + // System.out.println(s == s2); |
| 46 | + |
| 47 | + // String s3 = new String("1") + new String("1"); |
| 48 | + // s3.intern(); |
| 49 | + // String s4 = "11"; |
| 50 | + // System.out.println(s3 == s4); |
| 51 | + |
| 52 | + //3. 测试StringBuilder和StringBuffer中的reverse方法 |
| 53 | + // StringBuffer 和 StringBuilder |
| 54 | + // 类有reverse()方法,它们其实是调用的父类AbstractStringBuilder的reverse()方法 |
| 55 | + StringBuffer sBuffer = new StringBuffer("abcD890dfg"); |
| 56 | + System.out.println(sBuffer.reverse()); |
| 57 | + |
| 58 | + // 4. 如何计算指定字符在字符串里出现的次数 |
| 59 | + // 同样是使用Apache Commons Lang的StringUtils,如下: |
| 60 | + //int n = StringUtils.countMatches("aaaabbbb", "a"); |
| 61 | + //Systemm.out.println(n); |
| 62 | + |
| 63 | + //判断String 创建了几个对象,用反编译验证 |
| 64 | + String s = "a" + new String("123");// 创建了几个对象 |
| 65 | + |
| 66 | + } |
| 67 | + |
| 68 | + static void plus() { |
| 69 | + int i = 0; |
| 70 | + int y = i++ + ++i; |
| 71 | + System.out.println(String.valueOf(y)); |
| 72 | + } |
| 73 | +} |
0 commit comments