黑馬程式員----java基礎之運算子、鍵盤錄入、if switch語句、附相關面試題

來源:互聯網
上載者:User

標籤:運算子   鍵盤錄入   if 語句   switch語句   java面試題   

------<a href="http://www.itheima.com" target="blank">Java培訓、Android培訓、iOS培訓、.Net培訓</a>、期待與您交流! -------

1:運算子(掌握)

(1)算術運算子
A:+,-,*,/,%,++,--
注意事項:整數相除只能得到整數,如果想得到小數,必須先把資料變化為浮點數類型。如3/4結果為0,3*0.1/4=0.75
B:+的用法
a:加法
b:正號
c:字串串連符  :‘a‘+1=98,"hello"+‘a‘+1=helloa1, ‘a‘+1+"hello"=98hello
C:/和%的區別
資料做除法操作的時候,/取得是商,%取得是餘數
D:++和--的用法
a:他們的作用是對變數自增1或者自減1。常量不能做自增或者自減。
b:使用
**單獨使用
放在操作資料的前面和後面效果一樣。
a++或者++a效果一樣。
**參與操作使用
放在運算元的前面:先自增或者自減,再參與操作
int a = 10;
int b = ++a;
輸出結果是a=11 b=11
放在運算元的後面:先參與操作,再自增或者自減
int a = 10;
int b = a++;
輸出結果是a=11 b=10
練習:int x=4; int y=(x++)+(++x)+(x*10)=4+6+6*10=70 輸出結果是x=6,y=70.
(2)賦值運算子
A:=,+=,-=,*=,/=,%=等
B:=叫做賦值運算子,也是最基本的賦值運算子
int x = 10; 把10賦值給int類型的變數x。
C:擴充的賦值運算子+=,-=,*=,/=,%=
+=,把左邊和右邊做加法,然後賦值給左邊的變數。
-=,把左邊和右邊做減法,然後賦值給左邊的變數。
*=,把左邊和右邊做乘法,然後賦值給左邊的變數。
/=,把左邊和右邊做除法,然後賦值給左邊的變數。
%=,把左邊和右邊做除法取餘,然後賦值給左邊的變數。

D:擴充的賦值運算子隱含了自動強制轉換。
面試題:
short s = 1;
s = s + 1;

short s = 1;
s += 1;
請問上面的代碼哪個有問題?
答:short s = 1; s = s + 1;有問題,因為這樣會損失精度。因為s = s + 1中s+1是int類型。如果不想出問題需要強制轉換。即s=(short)(s+1)
short s = 1;s += 1;沒有問題,因為擴充的賦值運算子其實隱含了一個強制類型的轉換。s+=1不等價於s=s+1,而是等價於s=(s的資料類型)(s+1).
(3)比較子
A:==,!=,>,>=,<,<=
B:無論運算子兩端簡單還是複雜最終結果是boolean類型。
C:千萬不要把==寫成了=
(4)邏輯運算子
A:&,|,^,!,&&,||
B:邏輯運算子用於串連boolean類型的式子
C:結論
&邏輯與:有false則false(全真才為真)
|邏輯或:有true則true(有真就為真)
^邏輯異或:相同則false,不同則true。
舉例:情侶關係,同性別為false。
!邏輯非:非true則false,非false則true

&&:結果和&是一樣的,只不過有短路效果。左邊是false,右邊不執行。
||:結果和|是一樣的,只不過有短路效果。左邊是true,右邊不執行。
例:int a=3; int b=4; boolean c=(++a==3)&&(b++==4)結果a=4.b=4.c=false,右邊的b++沒有執行。
(5)位元運算符(瞭解)
A:要做位元運算,首先要把資料轉換為二進位,對二進位的補碼進行& | ^ ~
分析:因為是位元運算,所以我們必須先把資料換成二進位。
3的二進位:11
00000000 00000000 00000000 00000011(補碼和原碼一樣)
4的二進位:100
00000000 00000000 00000000 00000100(補碼和原碼一樣)

&與位元運算:有0則0(類似於邏輯中的有false則false)
00000000 00000000 00000000 00000011
       &00000000 00000000 00000000 00000100
------------------------------------------
00000000 00000000 00000000 00000000
所以3&4的結果是0

 
|或位元運算:有1則1 
00000000 00000000 00000000 00000011
       |00000000 00000000 00000000 00000100
------------------------------------------
00000000 00000000 00000000 00000111  所以3|4的結果是7


^位異或運算:相同則0,不同則1
00000000 00000000 00000000 00000011
       ^00000000 00000000 00000000 00000100
------------------------------------------
00000000 00000000 00000000 00000111  所以3^4的結果是7

~按位取反運算子:0變1,1變0
~00000000 00000000 00000000 00000011
         11111111 11111111 11111111 11111100(3的二進位補碼)
------------------------------------------
補碼:11111111 11111111 11111111 11111100
反碼:11111111 11111111 11111111 11111011(補碼減1得反碼)
原碼:10000000 00000000 00000000 00000100(反碼取反得原碼)
所以~3的結果是-4.


B:
        一:^的特殊用法
一個資料針對另一個資料位元異或兩次,該數不變.例:int a=10 ;int b=20; a^b^b=10 a^b^a=20
二:
<<:左移 左邊最高位丟棄,右邊補齊0; 把<<左邊的資料乘以2的移動次冪 如:3<<2 =3*2^2=12;  int a=3  (--a)<<a  相當於2<<2=2*2^2=8
>>右移 最高位是0,左邊補齊0.最高位是1,左邊補齊1. 把>>左邊的資料除以2的移動次冪 如24>>2 =24/2^2=6
>>>:無符號右移,無論最高位是0還是1,左邊補齊0;   3>>>1  =3/2^1=1


C:面試題
a:請實現兩個變數的交換
方式一:採用第三方變數(開發中用)如:int a=10;int b=20; int c=a; a=b; b=c;
方式二:用位異或運算子.(面試中用) 左邊a,b,a,右邊a^b
a=a^b;
b=a^b;//a^b^b=a
a=a^b;//a^b^a=b
方式三:用變數相加的做法(瞭解)
a=a+b;//a=30
b=a-b;//b=10
a=a-b;//a=30-10=20
方式四:一句話搞定。(瞭解)
b=(a+b)-(a=b);//b=30-20=10,a=20;

b:請用最有效率的方式計算出2乘以8的結果
2<<3
(6)三元運算子
A:格式
比較運算式?運算式1:運算式2;
B:執行流程:
首先計算比較運算式的值,看是true還是false。
如果是true,運算式1就是結果。
如果是false,運算式2就是結果。
C:案例:
a:比較兩個資料是否相等
int a=100;int b=200; boolean flag=(m==n)
b:擷取兩個資料中的最大值
int a=100;int b=200; int max=(a>b?a:b);
c:擷取三個資料中的最大值
int a=10; int b=20; int c=30; int temp=(a>b?a:b); int max=(temp>c?temp:c);

2:鍵盤錄入(掌握)
(1)實際開發中,資料是變化的,為了提高程式的靈活性,我們加入鍵盤錄入資料。
(2)如何?呢?目前就記住
A:導包
import java.util.Scanner;
位置:在class的上邊
B:建立對象
Scanner sc = new Scanner(System.in);
C:擷取資料
int x = sc.nextInt();
(3)把三元運算子的案例加入鍵盤錄入改進。


3:流程式控制制語句
(1)順序結構 從上往下,依次執行
(2)選擇結構 按照不同的選擇,執行不同的代碼
(3)迴圈結構 做一些重複的代碼


4:if語句(掌握)
(1)三種格式
A:格式1
if(比較運算式) {
語句體;
}

執行流程:
判斷比較運算式的值,看是true還是false
如果是true,就執行語句體
如果是false,就不執行語句體

B:格式2
if(比較運算式) {
語句體1;
}else {
語句體2;
}

執行流程:
判斷比較運算式的值,看是true還是false
如果是true,就執行語句體1
如果是false,就執行語句體2

C:格式3
if(比較運算式1) {
語句體1;
}else if(比較運算式2){
語句體2;
}
...
else {
語句體n+1;
}

執行流程:
判斷比較運算式1的值,看是true還是false
如果是true,就執行語句體1
如果是false,就繼續判斷比較運算式2的值,看是true還是false
如果是true,就執行語句體2
如果是false,就繼續判斷比較運算式3的值,看是true還是false
...
如果都不滿足,就執行語句體n+1
(2)注意事項
A:比較運算式無論簡單還是複雜,結果是boolean類型
B:if語句控制的語句體如果是一條語句,是可以省略大括弧的;如果是多條,不能省略。
建議:永遠不要省略。
C:一般來說,有左大括弧,就沒有分號,有分號,就沒有左大括弧。
D:else後面如果沒有if,是不會出現比較運算式的。
E:三種if語句其實都是一個語句,只要有一個執行,其他的就不再執行。
(3)案例:
A:比較兩個數是否相等
B:擷取兩個數中的最大值
C:擷取三個數中的最大值(if語句的嵌套)
D:根據成績輸出對應的等級
E:根據月份,輸出對應的季節
F:根據x計算對應y的值並輸出
(4)三元運算子和if語句第二種格式的關係
所有的三元運算子能夠實現的,if語句的第二種格式都能實現。
反之不成立。

如果if語句第二種格式控制的語句體是輸出語句,就不可以。

因為三元運算子是一個運算子,必須要有一個結果返回,不能是一個輸出語句。

5,switch語句(掌握)
(1)格式:
switch(運算式) {
case 值1:
語句體1;
break;
case 值2:
語句體2;
break;
...
default:
語句體n+1;
break;
}

格式解釋說明:
switch:說明這是switch語句。
運算式:可以是byte,short,int,char
JDK5以後可以是枚舉
JDK7以後可以是字串
case:後面的值就是要和運算式進行比較的值
break:表示程式到這裡中斷,跳出switch語句
default:如果所有的情況都不匹配,就執行這裡,相當於if語句中的else
(2)面試題
switch語句的運算式可以是byte嗎?可以,
可以是long嗎?不可以
可以是String嗎?JDK7以後可以
(3)執行流程:
A:首先計算運算式的值
B:和每一個case進行匹配,如果有就執行對應的語句體,看到break就結束。
C:如果沒有匹配,就執行default的語句體n+1。
(4)注意事項:
A:case後面只能是常量,不能是變數,而且,多個case後面的值不能出現相同的
B:default可以省略嗎?
可以省略,但是不建議,因為它的作用是對不正確的情況給出提示。
特殊情況:
case可選的值就只有固定的幾個。即case就可以把值固定。
如只有A,B,C,D四個選項的單選。
C:break可以省略嗎?
可以省略,但是結果可能不是我們想要的。
會出現一個現象:case穿透。
最終我們建議不要省略
D:default一定要在最後嗎?
不是,可以在任意位置。但是建議在最後。
E:switch語句的結束條件
a:遇到break就結束了
b:執行到末尾就結束了
(5)案例:
A:鍵盤錄入一個數字(1-7),輸出對應的星期幾。
B:單項選擇題
C:鍵盤錄入一個字串的問題
String s = sc.nextLine();
D:根據給定的月份,輸出對應的季節
(6)if語句和switch語句各自的情境
A:if
針對boolean類型的判斷
針對一個範圍的判斷
針對幾個常量的判斷
B:switch
針對幾個常量的判斷


------<a href="http://www.itheima.com" target="blank">Java培訓、Android培訓、iOS培訓、.Net培訓</a>、期待與您交流! -------

黑馬程式員----java基礎之運算子、鍵盤錄入、if switch語句、附相關面試題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.