测试Demo-日常的一些测试

 

StringBuilder 初始化的重要性

 

public static void main(String[] args) {
        int length = 5000;
        Random random = new Random();
        long startTime = 0;
        StringBuilder stringBuilder = new StringBuilder();
        StringBuilder stringBuilder1 = new StringBuilder();
        StringBuilder stringBuilder2 = new StringBuilder();
        String s1 = "";
        String s2 = "";
        String s3 = "";
        for (int i = 0; i < length; i++) {
            stringBuilder.append(random.nextInt() * i);
            stringBuilder1.append(random.nextInt() * i - 1);
            stringBuilder2.append(random.nextInt() * i + 1);
        }
        s1 = stringBuilder.toString();
        s2 = stringBuilder1.toString();
        s3 = stringBuilder2.toString();
        /**不指定初始值**/
        stringBuilder1 = new StringBuilder();
        startTime = System.currentTimeMillis();
        for (int i = 0; i < length; i++) {
            stringBuilder1.append(s1).append(s2).append(s3);
        }
        System.out.println("stringBuilder不指定初始值:" + (System.currentTimeMillis() - startTime));
        //释放掉容量
        stringBuilder1 = null;
        /**指定初始值**/
        stringBuilder2 = new StringBuilder(length * (s1.length() + s2.length() + s3.length()));
        startTime = System.currentTimeMillis();
        for (int i = 0; i < length; i++) {
            stringBuilder2.append(s1).append(s2).append(s3);
        }
        System.out.println("stringBuilder指定初始值:" + (System.currentTimeMillis() - startTime));
    }

 截取一段字符串中,字符最长的

static String LongestWord(String sen) {
        int smallest = 0;
        String resulfString = "";
                // 如果留数字: [^A-Za-z0-9 ]
        String[] parts = sen.replaceAll("[^a-zA-Z ]", "").split(" ");
        for (int i = 0; i < parts.length; i++) {
            if (parts[i].length() > smallest) {
                smallest = parts[i].length();
                resulfString = parts[i];
            }
        }
        return resulfString;
    }

 不用加号实现两个数相加

    static public int aplusb(int a, int b) {
        while (b != 0) {
            final int _a = a ^ b;
            final int _b = (a & b) << 1;
            a = _a;
            b = _b;
        }
        return a;
    }

递归调用

	static int add(int i) {
		if (i == 0) {
			return i;
		}
		// 换成阶乘也是一样的
		// 个人理解:实际就是一种循环的实现
		// 实际最终会返回的是i+(i-1)+(i-1-1)+(i-1-1-1)....
		return i + add(i - 1);
	}

类加载顺序案例

public class SuperAndSub {
	public static void main(String[] args) {
		Sub s3 = new Sub();
	}
}

class Super {
	static int a = getA();
	static {
		System.out.println("加载Super的静态块");
	}
	int b = getB();
	{
		System.out.println("加载Super的普通块");
	}

	Super() {
		System.out.println("加载Super的构造器");
	}

	static int getA() {
		System.out.println("加载Super的静态变量");
		return 1;
	}

	static int getB() {
		System.out.println("加载Super的实例变量");
		return 2;
	}
}

class Sub extends Super {

	static int c = getC();
	static {
		System.out.println("加载Sub的静态块");
	}
	int d = getD();
	{
		System.out.println("加载Sub的普通块");
	}

	Sub() {
		System.out.println("加载Sub的构造器");
	}

	static int getC() {
		System.out.println("加载Sub的静态变量");
		return 1;
	}

	static int getD() {
		System.out.println("加载Sub的实例变量");
		return 2;
	}
}

  

 

posted on 2017-11-22 11:40  Mrlw  阅读(2820)  评论(0编辑  收藏  举报

导航