1. 程式人生 > 實用技巧 >錯題筆記

錯題筆記

break錯題總結

給定一下程式段:

int i = 0,j = -1;
switch(i) {
    case 0:j=1;
    case 1:j=2;
    case 2:j=2;
    default:j=5;   
}
System.out.println("j=" + j)

編譯之後,正確的是(D)
A. j=-1 B、j =1 C、j=2 D.j= 5

解釋:如果沒有break,會直接執行到程式碼塊結尾,default後不能有break;

1.普通switch-case語句

int main(){
	int x = 1;
	switch (x)
	{
	case 1:
		cout = 1;
		break;
	case 2:
		cout = 2;
		break:
	case 3:
		cout = 3;
		break;
	default:
		cout = "default";
	}
 System.out.println(cout);
	return 0;
 
}

x=1則輸出1,x=2則輸出2,x=3則輸出3,x=其他則輸出default

2、去掉break

int main(){
	int x = 1;
	switch (x)
	{
	case 1:
		cout = 1;
		//break;
	case 2:
		cout = 2;
		//break:
	case 3:
		cout = 3;
		//break;
	default:
		cout = "default";
	}
 System.out.println(cout);
	return 0;
 
}

輸出123default,沒break則一直執行,default也會執行

3、沒有break且default位置改變

switch (x){
	default:
		cout = "default";
	case 1:
		cout = 1;
		//break;
	case 2:
		cout = 2;
		//break:
	case 3:
		cout = 3;
		//break;
	System.out.println(cout);
	}

當x=1,輸出123,當 x=其他 時,會輸出 default 和 123,

switch (x)
	{
	
	case 1:
		cout = 1;
		//break;
	default:
		cout = "default";
	case 2:
		cout = 2;
		//break:
	case 3:
		cout = 3;
		//break;
	
	}

當x=1,輸出1default23
x=2,輸出23

x=5,輸出default23

即只要沒有break都會執行到塊結尾,default位置不影響case語句

-----------------------------------------------------------------------------------------------

equals 和 == 比較總結

"mypido".equals(new String("mypido"))的返回結果是:( true )

解釋:在比較兩個引用型別的變數時, equals首先比較的是記憶體地址,地址正確返回true.如果兩個變數的地址不相等,再比較兩個變數的變數值,如果正確也返回true

== 比較基本資料型別變數,比較的是數值是否相等, 如果比較的是引用型別,只比較記憶體的地址是否相等