測試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;
	}
}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM