国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

[java學習筆記]java語言基礎概述之運算符&程序流程控制&for循環嵌套

2019-11-14 15:31:29
字體:
來源:轉載
供稿:網友

一.運算符

  • 算數運算符

+,-,*,/,%,++,--

1.+,-,*,/

整數除以整數的結果為舍棄了小數部分的整數。

2.%:取余

  1. %左右都為正數,左邊小于右邊結果為左邊值,如,4%5=4
  2. %左邊大于或等于右邊結果為左邊除以右邊的余數,如,5%5=0,7%2=1
  3. 面試題:100%3.0的結果為1.0

應該注意的是:當運算負數的取余運算時,結果的符號和被取余數一致。

如:

System.out.PRintln(-5%2);System.out.println(-5%-2);System.out.println(5%-2);

結果為:-1,-1,1

+還可以作為連接符,用于把一個字符串類型值和一個其他基本數據類型連接,結果為字符串數據。

如,2+”3”,結果為”23“的字符串;”5+5=“+5+5,結果為 ”5+5=55“。

 

3.++自增

在原有數據基礎上加1,在賦值給原有數據。

看下面幾個程序:

1.

int a = 3;a++;System.out.println("a="+a);

2.

int a = 3;++a;System.out.println("a="+a);

3.

int a = 3 , b;b = a++;System.out.println("a="+a+",b="+b);

4.

int a = 3 , b;b = ++a;System.out.println("a="+a+",b="+b);

結果:1,2運行結果相同。都是,a=4

3的結果為a=4,b=3,4的結果為a=4,b=4

分析:1,2是a的獨立運算,先增后增結果都一樣。3是a和b的運算,先把a的原值賦給b后,a自增。4也是a和b的運算,a自增后,再把a的值(自增后的值)賦給b。

但是在內存中,都是先運算完右邊,再賦值給左邊的變量。

b = a++;:先把a的原值取出來存在一塊臨時空間里,在運算a++即a=a+1,運算完成后,把臨時空間里的值賦給b;

b = ++a;:先運算右邊,把結果賦值給b。

測試:考慮如下代碼的運行結果。

int i = 3;i = i++;System.out.println("i="+i);

結果:i=3

原因分析:在內存中,先把i的原值取出來放在一個temp臨時變量里面,再把i的原值拿到運算區進行運算(i++),把結果(4)賦值給右邊的i,最后把臨時變量temp里的3再賦值給左邊的i。

用代碼表示:

int temp = i;i = i + 1;i = temp;
  • 賦值運算符

賦值運算符:=,+=,-=,*=,/=,%=等

面試題:以下程序的區別

1.

short s = 3;s+=4;Sytem.out.println("s="+s);

2.

short s = 3;s = s + 4;Sytem.out.println("s="+s);

答案:第一個編譯運行正確,第二個報錯。

原因:java在編譯 short s = 3;時,由于3是int型數據,不能直接賦值給short型數據,可能會丟失精度。java底層會自動判斷3在short型數據所表示的范圍內,如果在,就強制類型轉換,不在則報錯(可能丟失精度)。

在編譯 s = s+4 ,由于右邊s的值不確定,給它加上4可能會丟失精度。所以第二個程序會報可能丟失精度的錯誤。

在編譯 s+=4 時,同  short s = 3;都為賦值運算。

  • 比較運算符&邏輯運算符

 

比較運算符:>,<,>=,<=,==,!=,instanceof

比較運算后的結果:true或false。

邏輯運算符:!,&,&&(短路與),|,||(短路或),^(異或)

邏輯運算符作用:連接兩個布爾類型的表達式

  • 位運算符

捕獲

位運算符是直接對二進制進行運算。

位運算能提高效率:

練習:

1.計算2*8

直接使用2*8計算的話,內存中要進行多次的乘法或加法,而使用2<<3,只需要移位即可。

2.互換兩個整數的值

int a = 3 , b = 5;//使用第三方變量int temp;temp = a;a = b;b = temp;system.out.println("a="+a+",b="+b);

 

int a = 3 , b = 5;//不用第三方變量a = a + b; //a = 3+5=8b = a - b; //b = 8-5=3a = a - b; //a = 8-3 = 5system.out.println("a="+a+",b="+b);

 

int a = 3 , b = 5;//使用移位運算,提高效率//利用異或的性質:一個數異或兩次同一個數,結果還為這個數a = a^b; //a = 3^5 b = a^b; //b = (3^5)^5 = 3a = a^b; //a = (3^5)^3 = 5system.out.println("a="+a+",b="+b);
  • 三元運算符

格式:(條件表達式)?表達式1:表達式2;

如果條件表達式的結果為true,運算后的結果為表達式1,否則為表達式2。

舉例:獲取兩個數中的較大值。

z = (x>y)?x:y;  /運算后z的值就是x,y中較大的一個。

二.程序流程控制

  • 順序結構

從上到下依次運行。

  • 判斷結構

if語句:

  1. 格式1:

    if(條件表達式){

           執行語句;

    }

  2. 格式2

    if(條件表達式){

          執行語句;

    }else{

          執行語句;

    }

  3. 格式3

    if(條件表達式1){

          執行語句;

    }else if(條件表達式2){

          執行語句;

    }

    &hellip;

    else{

          執行語句;

    }

  • 選擇結構

switch語句:

格式:

switch(表達式){

      case 取值1:

      執行語句;

      break;

     case 取值2:

     執行語句;

    break;

     …

     default:

     break;

}

注意:1.default可以寫在第一個判斷,但是程序會從第一個case開始執行,判斷完所有case,才執行default。

2.右花括號前面的一個“break”可以省略。

3.多個case下的執行語句一致,應該這樣:

case 1:case 2:...    //執行語句    break;

switch中的表達式只能為byte,short,int,char。

java1.5加入了枚舉

java7加入了字符串

if和switch的區別:

if:

  1. 對具體的值進行判斷
  2. 對區間判斷
  3. 對運算結果是boolean的表達式進行判斷

switch:

  1. 對具體的值進行判斷
  2. 值得個數通常是固定的

對于幾個固定值得判斷,建議使用switch語句,因為switch語句會將具體的答案都加載進內存,效率較高。

常用的還是if語句,相比switch書寫簡單,功能較強。

  • 循環結構

循環的使用場景:

  1. 當對某些代碼執行很多次時,使用循環結構完成。
  2. 當對一個條件進行一次判斷時,可以使用if語句,當對一個條件進行多次判斷時,可以使用while語句。

注意:

  1. 在使用循環時,一定要明確,哪些語句需要參與循環,哪些不需要。
  2. 通常情況下,需要定義條件,需要控制次數。

循環結構由三種方式:

1.while

格式:

while(條件表達式){

       執行的循環語句;

}

2. do while

do{

        執行的循環語句;

}

while(條件表達式) ;

注意:while后有分號

do while無論條件是否滿足,要執行的循環語句都會執行一遍。

3. for循環

for(初始化表達式;循環條件表達式;循環后的操作表達式){

        執行的循環語句(循環體);

}

先執行初始化表達式,并且知道循環結束,只讀一次,然后判斷循環條件,為真就執行一次循環體,然后再執行循環后的操作表達式,接著繼續判斷循環條件,重復整個過程,直到條件不滿足為止。

  • for和while的特點:
  1. for和while可以互換
  2. 格式上的不同,在使用上有些區別:

                    如果需要通過變量來對循環進行控制,該變量只作為循環增量存在時,區別就體現出來了。

                    這個變量的作用域不同,一般while循環的控制變量在while循環外,而for循環一般定義在for循環內,for循環外面訪問不了;如果不在循環外使用這個變量使用for循環可以做到優化內存,因為for循環完后,這個控制變量就被銷毀。

面試題:求下面程序的執行結果.

int x = 1;for(System.out.println("a"); x<3; System.out.println("b")){    System.out.println("c");    x++;}

答案::a c b c b

while練習:

累加器思想:

//計算1~10的和int x = 1;int sum = 0;while(x<11){    sum += x;    x++;    }

 

計數器思想:

//求1~100中能被6整數的數的個數int x = 1;int k = 0;while(x<101){    if(x%6==0){        k++;    }    x++;    }System.out.println(k);

無限循環最簡單的形式:

while(true){}

for(; ; ){}

for循環的嵌套:

一種重復情況下的每一次重復都對應另外一種情況的重復,就使用for循環的嵌套。

范例:

/*****************/for (int i = 0; i<5; i++) {    for (int y = 0; y<5-i; y++) {        System.out.print("*");    }    System.out.println();}

 

/*543214321321211*/for (int i = 0; i<5; i++) {    for (int j = 5-i; j>0; j--) {        System.out.print(j);    }    System.out.println();}

 

//九九乘法表for (int i = 1; i<10; i++) {    for (int j=1 ; j<=i; j++) {        System.out.print(j+"*"+i+"="+j*i+"/t");    }    System.out.println();}

捕獲

 

/** * * * * * * * *  * * *   * *    **/for (int i = 0; i<5; i++) {    for (int j = 0; j<i; j++) {        System.out.print(" ");    }    for (int j = 0; j<5-i;j++ ) {        System.out.print("* ");    }    System.out.println();}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 上林县| 威宁| 柘城县| 军事| 博野县| 莎车县| 民县| 沧源| 新平| 达日县| 娄烦县| 泸溪县| 茂名市| 莱阳市| 郎溪县| 保亭| 仁布县| 呈贡县| 凭祥市| 东丰县| 澄迈县| 叶城县| 高尔夫| 锡林郭勒盟| 青铜峡市| 乐陵市| 荆州市| 威海市| 芦山县| 睢宁县| 高淳县| 巴林左旗| 启东市| 赞皇县| 石阡县| 神池县| 南阳市| 武陟县| 大英县| 鸡泽县| 峨山|