當(dāng)前位置:
首頁(yè) >
java表达式陷阱
發(fā)布時(shí)間:2025/3/19
26
豆豆
以下是一些常見的面試java問(wèn)題的表達(dá),我將造成直接的形式附加目光。
問(wèn)題1: int a = 10;int b = a + (a = 5) + a + (a = 10);System.out.println(b);//b = 30
問(wèn)題2:
int i = 1;i = (i=i+(i+(i=2)+i)+i)+3;System.out.println(i);//i = 11
問(wèn)題3:
int a = 1;int b = 2;System.out.println((a = 3) + (b = 4) + a*b);//19
問(wèn)題4:
System.out.println(-11 % -7);//-4 注:模運(yùn)算中,第一個(gè)操作數(shù)提供結(jié)果值的符號(hào)。第一個(gè)和第二個(gè)操作數(shù)的絕對(duì)值取模后作為結(jié)果值的絕對(duì)值問(wèn)題5: int i = 1;System.out.println(i+++i+++i+++i++);//10 注:1+2+3+4 = 10問(wèn)題6: int i = 1;System.out.println(i++ + ++i+i++ + ++i);//12 注:1+3+3+5 = 12問(wèn)題7: int i = 1;int j = i+++(i=1)+i+++(i=1)+i++;System.out.println(j);//j = 5 注:j = 1+1+1+1+1 問(wèn)題8: int a = 10;int b = 10;double c = 10.0;System.out.println(a == b);//trueSystem.out.println(a == c);//true問(wèn)題9: System.out.println(3.0*10 == 30.0);//trueSystem.out.println(3.141*10 == 31.41);//trueSystem.out.println(3.14*10 == 31.4);//false 注:3.14*10 = 31.400000000000002System.out.println(3.1415*10 == 31.415);//false 注:3.1415*10 = 31.415000000000003問(wèn)題10: java會(huì)將范圍在-128~+127(byte的范圍)的數(shù)放在一個(gè)靜態(tài)數(shù)組中緩存,所以僅僅要在此范圍內(nèi)的裝箱指向的都是這個(gè)數(shù)組中的對(duì)象,而在此范圍外的則需newInteger a = 128;Integer b = 128;Integer c = 127;Integer d = 127;System.out.println(a == b);//falseSystem.out.println(c == d);//true問(wèn)題11: byte a = 1; // byte a = 128//報(bào)錯(cuò)。注意byte的范圍為-128~127byte b = 1;a = (byte) (a+1);b++;System.out.println(a==b);//true問(wèn)題12: System.out.println(true | false & false);//true 注:與運(yùn)算比或運(yùn)算優(yōu)先級(jí)高問(wèn)題13: int a = 10;//0000 0000 0000 0000 0000 0000 0000 1010System.out.println(a<<1);//10*2=20System.out.println(a<<2);//10*2^2=10*4=40System.out.println(a<<32);//10 左移32位(int的大小)之后。回歸原來(lái)的值System.out.println(a<<32L);//10 不會(huì)轉(zhuǎn)型。右側(cè)操作數(shù)只提供左移位數(shù)long b = 10L;System.out.println(b<<1);//20System.out.println(b<<2);//40System.out.println(b<<64);//10 long為8字節(jié),64位。所以須要左移64位才干循環(huán)一圈回到原點(diǎn)System.out.println(b<<64L);//10byte c = 1;System.out.println(c<<1);//2System.out.println(c<<2);//4System.out.println(c<<8);//256 這里須要注意。c為byte類型,移位操作的操作數(shù)最小要求是int類型。byte會(huì)轉(zhuǎn)為intSystem.out.println(c<<32);//1 能夠把c當(dāng)成int型
問(wèn)題14: int a = 10;a = a<<10;a = a<<22;int b = 10;b = b<<32;System.out.println(a);//0 注:第一步左移10位,第二步移動(dòng)的a并不是原始的a,而是a左移10位之后的a,這次左移22位之后把非零位移到邊界之外了,補(bǔ)零之后值變?yōu)?System.out.println(b);//10 回歸原始的10問(wèn)題15: int a = 10;double b = 9.5;System.out.println(a>b ? a : b);//10.0 結(jié)果會(huì)轉(zhuǎn)成double型System.out.println(a>b ? 1 : false); //2 盡管boolean不能轉(zhuǎn)成int,可是自己主動(dòng)裝箱之后能夠轉(zhuǎn)成object問(wèn)題16: int a = 1;a+=a+=a++;System.out.println(a);//3問(wèn)題17: int a = 1;a += 3L;//不報(bào)錯(cuò) // a = a+3L;//報(bào)錯(cuò),高類型轉(zhuǎn)低類型System.out.println(a);int b = 1;b += 3.5; //復(fù)雜的算術(shù)表達(dá)式,自己主動(dòng)型高意愿變低型System.out.println(b);//結(jié)果4代替4.5
問(wèn)題1: int a = 10;int b = a + (a = 5) + a + (a = 10);System.out.println(b);//b = 30
問(wèn)題2:
int i = 1;i = (i=i+(i+(i=2)+i)+i)+3;System.out.println(i);//i = 11
問(wèn)題3:
int a = 1;int b = 2;System.out.println((a = 3) + (b = 4) + a*b);//19
問(wèn)題4:
System.out.println(-11 % -7);//-4 注:模運(yùn)算中,第一個(gè)操作數(shù)提供結(jié)果值的符號(hào)。第一個(gè)和第二個(gè)操作數(shù)的絕對(duì)值取模后作為結(jié)果值的絕對(duì)值問(wèn)題5: int i = 1;System.out.println(i+++i+++i+++i++);//10 注:1+2+3+4 = 10問(wèn)題6: int i = 1;System.out.println(i++ + ++i+i++ + ++i);//12 注:1+3+3+5 = 12問(wèn)題7: int i = 1;int j = i+++(i=1)+i+++(i=1)+i++;System.out.println(j);//j = 5 注:j = 1+1+1+1+1 問(wèn)題8: int a = 10;int b = 10;double c = 10.0;System.out.println(a == b);//trueSystem.out.println(a == c);//true問(wèn)題9: System.out.println(3.0*10 == 30.0);//trueSystem.out.println(3.141*10 == 31.41);//trueSystem.out.println(3.14*10 == 31.4);//false 注:3.14*10 = 31.400000000000002System.out.println(3.1415*10 == 31.415);//false 注:3.1415*10 = 31.415000000000003問(wèn)題10: java會(huì)將范圍在-128~+127(byte的范圍)的數(shù)放在一個(gè)靜態(tài)數(shù)組中緩存,所以僅僅要在此范圍內(nèi)的裝箱指向的都是這個(gè)數(shù)組中的對(duì)象,而在此范圍外的則需newInteger a = 128;Integer b = 128;Integer c = 127;Integer d = 127;System.out.println(a == b);//falseSystem.out.println(c == d);//true問(wèn)題11: byte a = 1; // byte a = 128//報(bào)錯(cuò)。注意byte的范圍為-128~127byte b = 1;a = (byte) (a+1);b++;System.out.println(a==b);//true問(wèn)題12: System.out.println(true | false & false);//true 注:與運(yùn)算比或運(yùn)算優(yōu)先級(jí)高問(wèn)題13: int a = 10;//0000 0000 0000 0000 0000 0000 0000 1010System.out.println(a<<1);//10*2=20System.out.println(a<<2);//10*2^2=10*4=40System.out.println(a<<32);//10 左移32位(int的大小)之后。回歸原來(lái)的值System.out.println(a<<32L);//10 不會(huì)轉(zhuǎn)型。右側(cè)操作數(shù)只提供左移位數(shù)long b = 10L;System.out.println(b<<1);//20System.out.println(b<<2);//40System.out.println(b<<64);//10 long為8字節(jié),64位。所以須要左移64位才干循環(huán)一圈回到原點(diǎn)System.out.println(b<<64L);//10byte c = 1;System.out.println(c<<1);//2System.out.println(c<<2);//4System.out.println(c<<8);//256 這里須要注意。c為byte類型,移位操作的操作數(shù)最小要求是int類型。byte會(huì)轉(zhuǎn)為intSystem.out.println(c<<32);//1 能夠把c當(dāng)成int型
問(wèn)題14: int a = 10;a = a<<10;a = a<<22;int b = 10;b = b<<32;System.out.println(a);//0 注:第一步左移10位,第二步移動(dòng)的a并不是原始的a,而是a左移10位之后的a,這次左移22位之后把非零位移到邊界之外了,補(bǔ)零之后值變?yōu)?System.out.println(b);//10 回歸原始的10問(wèn)題15: int a = 10;double b = 9.5;System.out.println(a>b ? a : b);//10.0 結(jié)果會(huì)轉(zhuǎn)成double型System.out.println(a>b ? 1 : false); //2 盡管boolean不能轉(zhuǎn)成int,可是自己主動(dòng)裝箱之后能夠轉(zhuǎn)成object問(wèn)題16: int a = 1;a+=a+=a++;System.out.println(a);//3問(wèn)題17: int a = 1;a += 3L;//不報(bào)錯(cuò) // a = a+3L;//報(bào)錯(cuò),高類型轉(zhuǎn)低類型System.out.println(a);int b = 1;b += 3.5; //復(fù)雜的算術(shù)表達(dá)式,自己主動(dòng)型高意愿變低型System.out.println(b);//結(jié)果4代替4.5
總結(jié)
- 上一篇: Spring Web Flow实例教程
- 下一篇: V 5 RHCS