小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Java 基礎(chǔ)知識

 小樣樣樣樣樣樣 2021-05-06

 

1 基本結(jié)構(gòu)

  Java程序基本結(jié)構(gòu)包括包、類、main()主方法、標識符、關(guān)鍵字、語句和注釋等。

  Java語言中主方法的寫法固定,除了可以修改形參String[]args為String args[],不可改變語句public static void main(String args[])的任何部分.

1.1 標識符與關(guān)鍵字

  Java語言的標識符是字母、數(shù)字、下劃線和美元符號組成,第一個字符不可以為數(shù)字;標識符不可以是Java的關(guān)鍵字和保留字;標識符區(qū)分大小寫。

  類名規(guī)范要首字母大寫且后面每個單詞首字母大寫;變量名規(guī)范要首字母小寫且后面每個單詞首字母大寫;方法名規(guī)范同變量名規(guī)范。

1.2 常量和變量

  常量是固定不變的量,分類有字符串常量(雙引號引起的部分)、整數(shù)常量(沒有小數(shù)點的數(shù))、浮點數(shù)常量(有小數(shù)點的數(shù))、字符常量(單引號引起的單個字符,單引號中間必須有且僅有一個字符)、布爾常量(True、False兩種取值)、空常量(nul,代表沒有任何數(shù)據(jù),不能夠直接放在println方法中)。

 1 package come_one;
 2 
 3 public class demoone {
 4     public static void main(String[] args) {
 5         //字符串常量 字符數(shù)目可任意
 6         System.out.println("Hello,World!!");
 7         System.out.println("");
 8         System.out.println("-^_^-");
 9         
10         //整數(shù)常量
11         System.out.println(100);
12         System.out.println(-100);
13         
14         //浮點數(shù)常量
15         System.out.println(3.14);
16         
17         //字符常量
18         System.out.println('0');
19         System.out.println(' ');
20         System.out.println('0');
21         
22         //布爾常量
23         System.out.println(true);
24         System.out.println(false);
25         
26         //空常量不能直接打印輸出,以下為錯誤寫法
27         System.out.println();
28     }
29 }

 

  變量是程序運行期間內(nèi)容可以發(fā)生改變的量。

  創(chuàng)建一個變量并且使用的格式為:數(shù)據(jù)類型 變量名稱;

  賦值變量的格式為:變量名稱 = 數(shù)據(jù)值

  一步到位的格式為:數(shù)據(jù)類型 變量名稱 = 數(shù)據(jù)值;

 1 package come_one;
 2 
 3 public class demotwo {
 4     public static void main(String args[]) {
 5         //創(chuàng)建一個變量:數(shù)據(jù)類型 變量名稱
 6         int number1;
 7         //變量中存入一個數(shù)據(jù):變量名稱=數(shù)據(jù)值
 8         number1 = 100;
 9         //打印變量
10         System.out.println(number1);
11         
12         //一步走:數(shù)據(jù)類型 變量名稱=數(shù)據(jù)值
13         int number2 = 20;
14         System.out.println(number2);
15         
16         //改變變量值
17         number2 = 99;
18         System.out.println(number2);
19     }
20 }

1.3 數(shù)據(jù)類型

  數(shù)據(jù)類型有基本數(shù)據(jù)類型和引用數(shù)據(jù)類型,基本數(shù)據(jù)類型有整數(shù)型(byte,short,int,long)、浮點型(float,double)、字符型(char)、布爾型(boolean),引用數(shù)據(jù)類型包含字符串、數(shù)組、類、接口、lambda。

  注意1:字符串不是基本類型而是引用類型;

      浮點類型是一個近似值,并非精確值;

      數(shù)據(jù)范圍與字節(jié)數(shù)不一定相關(guān),如float數(shù)據(jù)范圍比long更加廣泛,但float是4字節(jié),long是8字節(jié)。

      浮點數(shù)中默認類型為double,如果需要使用float類型則需要加上后綴F。

      如果是整數(shù)默認類型為int,如果需要之用long類型,則需要加上后綴L,如System.out.println(100L)中輸出為長整數(shù)類型。

      變量賦值數(shù)據(jù)不能夠超出數(shù)據(jù)類型范圍,否則會報錯。

  注意2:變量的創(chuàng)建中變量名稱不重復(fù);

       對float和long類型而言,字母后綴F和L不能丟;

       沒有進行賦值的變量不可以直接使用;

        使用byte或short類型的變量時右側(cè)數(shù)據(jù)值不能夠超過左側(cè)數(shù)據(jù)類型的范圍;

       變量使用不能夠超過作用域的范圍(作用域是從變量定義的一行開始,直到直接所屬的大括號結(jié)束為止);

       可以通過一個語句來創(chuàng)建多個變量,可創(chuàng)建變量后各自賦值或者創(chuàng)建變量時賦值。

  編譯器的兩個優(yōu)化:對于byte/short/char類型的數(shù)據(jù)如果右側(cè)賦值的數(shù)據(jù)沒有超過范圍,那么javac編譯器將會自動隱含地補上一個(byte)(short)(char).如果沒有超過左側(cè)范圍編譯器補上則強制轉(zhuǎn)換,如果右側(cè)超過左側(cè)范圍,那么編譯器會直接報錯。在給變量賦值的時候,如果右側(cè)的表達式全為常量沒有任何變量,那么編譯器javac會直接將若干個常量表達式計算得到結(jié)果(如 short res = 5+8;//等號右邊全部是常量,編譯完成后得到的class字節(jié)碼文件中相當于short res = 13;這就不需要程序運行耗費cpu),但是表達式中有變量參與時則不能進行優(yōu)化。(short a=5;short b=8;short res=a+b;這是錯誤寫法,左側(cè)需要int類型。)

 

 1 package come_one;
 2 //import java.util.*;
 3 public class demotwo {
 4     public static void main(String[] args) {
 5         //創(chuàng)建一個變量:數(shù)據(jù)類型 變量名稱
 6         int number1;
 7         //變量中存入一個數(shù)據(jù):變量名稱=數(shù)據(jù)值
 8         number1 = 100;
 9         //打印變量
10         System.out.println(number1);
11         
12         //一步走:數(shù)據(jù)類型 變量名稱=數(shù)據(jù)值
13         int number2 = 20;
14         System.out.println(number2);
15         
16         //改變變量值
17         number2 = 99;
18         System.out.println(number2);
19         
20         //浮點型與雙精度類型
21         float number3 = 30.0F;
22         System.out.println(number3);
23         double number4 = 100.0;
24         System.out.println(number4);
25         
26         //短型與長整型
27         short number5 = 30;
28         System.out.println(number5);
29         long number6 = 30000000000L;
30         System.out.println(number6);
31         
32         //字節(jié)類型
33         byte number7 = 20;
34         System.out.println(number7);
35         
36         //字符類型
37         char hanzi = '中';
38         System.out.println(hanzi);
39         
40         //布爾類型
41         boolean var1 = true;
42         System.out.println(var1);
43         boolean var2 = var1;
44     }
45 }

 

 2 數(shù)據(jù)類型轉(zhuǎn)換

  數(shù)據(jù)類型不一樣時會發(fā)生數(shù)據(jù)類型轉(zhuǎn)換。數(shù)據(jù)類型轉(zhuǎn)換有自動類型轉(zhuǎn)換和強制類型轉(zhuǎn)換兩種。

  自動類型轉(zhuǎn)換的特點是代碼不需要特殊處理能夠自動完成,規(guī)則是數(shù)據(jù)范圍從小到大。

  強制類型轉(zhuǎn)換的特點是代碼需要進行特殊的格式處理不能夠自動完成,格式是:范圍小的類型(范圍小的變量名) 范圍小的變量名  = (范圍小的類型)原本范圍大的數(shù)據(jù)。

  注意事項:強制類型不推薦使用,因為有可能發(fā)生精讀損失、數(shù)據(jù)溢出。byte/short/char類型的數(shù)據(jù)可以發(fā)生數(shù)學運算,在運算時首先成為int類型再計算。布爾類型不能發(fā)生數(shù)據(jù)轉(zhuǎn)換。

 1 package come_one;
 2 
 3 public class demo03 {
 4     public static void main(String args[]) {
 5         
 6         //數(shù)據(jù)類型轉(zhuǎn)換服從數(shù)據(jù)范圍從小到大
 7         System.out.println(1024);//int類型
 8         System.out.println(3.14);//double類型
 9         
10         //左邊long類型,右邊默認int類型,左右不一樣
11         //將int常量放到long變量容器中存儲
12         long num1 = 100;
13         System.out.println(num1);//100
14         
15         //左側(cè)是double類型,有測是float類型,左右不一樣
16         //將float類型量放入double類型變量
17         double num2 = 1.5F;
18         System.out.println(num2);
19         
20         //左邊是float類型,右邊是long類型
21         //數(shù)據(jù)類型 :long-》float
22         float num3 = 30L;
23         System.out.println(num3);
24         
25         //等號左邊為int,右邊為long long變int不是從小到大
26         //不符合從小到大不能夠自動類型轉(zhuǎn)換
27         //范圍小的類型 范圍小的變量名 = (范圍小的類型) 原本范圍大的數(shù)據(jù)
28         int num4 = (int)100L;
29         System.out.println(num4);
30         
31         //發(fā)生數(shù)據(jù)溢出
32         int num5 = (int)6000000000L;//1705032704
33         System.out.println(num5);
34         
35         //發(fā)生精度損失
36         int num6 = (int)3.5;
37         System.out.println(num6);//不是四舍五入,小數(shù)位舍棄
38         
39         char zifu1 = 'Z';
40         System.out.println(zifu1 + 1);
41         //char類型進行數(shù)學運算時char會被翻譯成為數(shù)字
42         
43         byte num7 = 50;
44         byte num8 = 40;
45         //下語句報錯,byte相加變成int+int
46         //byte res = num7 + num8;
47         int res = num7 + num8;
48         System.out.println(res);
49         
50         short num9 = 10;
51         //int強制轉(zhuǎn)換int,必須保證邏輯上真實大小本來沒有超過short范圍
52         short res2 = (short) (num9 + num8);
53     }
54 }

  **128個ASCII碼表關(guān)鍵記憶**

  48對應(yīng)'0',65對應(yīng)'A',97對應(yīng)'a'。除ASCII碼外,碼表還有Unicode萬國碼表。

 

3 運算符

  運算符是進行特定操作的符號,表達式是運算符連接的式子。

  運算符種類有算術(shù)運算符(+,-,*,/,%,++)、賦值運算符、比較運算符、邏輯運算符和三元運算符。

3.1 算術(shù)運算符

  注意事項:一旦運算中有不同類型的數(shù)據(jù),那么結(jié)果將會是數(shù)據(jù)類型范圍大的那種。  

       加號'+’的三種用法:(1)對數(shù)值而言是加法;(2)對字母char類型而言在計算之前會提升成為int然后再計算(ASCII碼表和Unicode表);(3)對字符串String(首字母大寫)并不是關(guān)鍵字而言,加號代表字符串連接操作。任何數(shù)據(jù)類型和字符串進行連接的時候結(jié)果都會變成字符串。

       只有變量才能使用自增自減運算符,常量不能使用自增自減。自增自減運算可以單獨使用,不與其他任何操作混合,自己獨立成為一個步驟;混合使用時可以和其他操作如賦值混合或與打印操作混合。單獨使用時前++和后++結(jié)果無區(qū)別?;旌鲜褂脮r前++是變量馬上+1拿著結(jié)果使用,后++是先使用變量后+1。

3.2 賦值運算符

  賦值運算符包含基本賦值運算符'=’和復(fù)合賦值運算符(+=,-=,/=,*=,%=)。

  只有變量才能使用賦值運算符,常量不能進行賦值。復(fù)合賦值運算符中隱含了強制類型轉(zhuǎn)換。

3.3 比較運算符

  比較運算符主要用于進行數(shù)值大小關(guān)系判斷,其結(jié)果一定是Boolean值要么true要么false;

  如果進行多次判斷,則不能連著寫如1<x<3這種數(shù)學形式不能直接寫,而是:1 < x && x  < 3。

3.4 邏輯運算符

  邏輯運算符有與(并且,&&)、或(或者,||)、非(取反,?。┻@三種運算符。

  與和或具有短路效果,根據(jù)左邊已經(jīng)可以判斷得到最終結(jié)果,那么右邊的代碼將不再執(zhí)行。

  邏輯運算符只能用于Boolean型,與、或需要左右各自有一個Boolean值,但是取反只要有唯一的一個Boolean值,與或兩種運算符如果有多個條件可以連續(xù)寫。

3.5 三元運算符

  一/二/三元運算符的區(qū)別需要數(shù)據(jù)的數(shù)目不同,一元運算如自增自減、取反,二元運算如加減乘除、賦值。

  三元運算符的格式是:數(shù)據(jù)類型 變量名稱 = 條件判斷 ? 表達式A:表達式B;

  首先判斷條件是否成立,判斷成立則將表達式A值賦值左側(cè)變量,如果不成立則將表達式B值賦值左側(cè)變量,二者選其一。

  注意:需要同時保證表達式A和表達式B都符合左側(cè)數(shù)據(jù)類型的要求。

     三元運算符的結(jié)果必須被使用,不能夠單獨成語句。

 

 1 package come_one;
 2 
 3 public class demo04 {
 4     public static void main(String args[]) {
 5         //算術(shù)運算符
 6         int a = 30;
 7         int b = 20;
 8         System.out.println(a + b);
 9         System.out.println(a - b);
10         System.out.println(a * b);
11         System.out.println(a / b);
12         System.out.println(a % b);
13         System.out.println(a++);
14         System.out.println(a);
15         //int + double -> double + double = double
16         System.out.println(a + 2.5);
17         //混合使用
18         int result = --a;
19         System.out.println(result);
20         
21         //字符串類型變量
22         String str1 = "Hello";
23         String str2 = "World";
24         System.out.println(str1 + str2);
25         //優(yōu)先級問題 String > int
26         //String + int + int = String + int = String
27         System.out.println("Java"+1+5);
28         System.out.println("Java"+(1+5));
29         
30         //賦值運算符
31         int num1 = 20;
32         num1 -= 2;
33         System.out.println(num1);
34         num1 += 2;
35         System.out.println(num1);
36         num1 /= 2;
37         System.out.println(num1);
38         num1 *= 2;
39         System.out.println(num1);
40         num1 %= 8;
41         System.out.println(num1);
42         
43         //比較運算符
44         //《 》 《= 》= == !=
45         System.out.println(10 > 5);
46         System.out.println(10 < 5);
47         System.out.println(10 != 5);
48         System.out.println(10 <= 5);
49         System.out.println(100 == 100);
50         
51         //邏輯運算符
52         System.out.println(true && false);
53         System.out.println(3 < 4 && 100 != 100);
54         System.out.println(true || false);
55         System.out.println(3 < 4 || 100 != 100);
56         System.out.println(!true);
57         
58         //三元運算符
59         int max;
60         a = 20;
61         b = 15;
62         max = (a > b) ? a : b;
63         System.out.println("最大值:"+max);
64     } 
65 }

 

4 方法入門

  方法是將一個功能抽取出來,把代碼單獨定義在一個大括號內(nèi),形成一個單獨的功能,當需要這個功能的時候就可以去調(diào)用,以此實現(xiàn)代碼的復(fù)用性、代碼的冗余性問題。方法是若干語句的功能集合,包含參數(shù)與返回值。參數(shù)是進入方法的數(shù)據(jù),返回值是方法中出來的數(shù)據(jù)。

  方法定義的格式:public static void 方法名稱(){ 方法體 }。方法名稱的命名規(guī)則與變量命名規(guī)則相同采用小駝峰式,方法體是大括號中可以包含任意條語句。定義方法的完整格式是:修飾符(public static) 返回值類型(方法最終產(chǎn)生的數(shù)據(jù)結(jié)構(gòu)的類型) 方法名稱(參數(shù)類型 參數(shù)名稱,...){方法體 + return 返回值;}

  return作用:第一是停止當前方法,第二是將后面的返回值還給調(diào)用處。返回值是方法執(zhí)行后最終產(chǎn)生的數(shù)據(jù)結(jié)果。

 

  調(diào)用方法的格式:方法名稱();

  方法調(diào)用過程是找到方法-參數(shù)傳遞-執(zhí)行方法體-帶著返回值回到方法的調(diào)用處

  方法調(diào)用有單獨調(diào)用、打印調(diào)用、賦值調(diào)用三種。void返回值類型的方法只能夠單獨調(diào)用不能夠賦值調(diào)用和打印調(diào)用。

 

  方法參數(shù)情況可以分為有參數(shù)和無參數(shù)兩種,有參數(shù)是指小括號中有內(nèi)容;無參數(shù)是小括號中留空,一個方法不需要任何數(shù)據(jù)條件自己就能獨立完成任務(wù)。

  方法返回值可以分為有返回值和無返回值,根據(jù)需求決定。

 

  注意事項

 

  方法定義的先后順序無所謂,方法的定義不能產(chǎn)生嵌套包含關(guān)系,方法定義后不會執(zhí)行如果要執(zhí)行則要進行方法的調(diào)用。

 

  return后面的返回值必須和方法名稱前面的返回值類型保持對應(yīng)。方法定義在類當中,不能在方法中定義方法(不能嵌套)。

 

  對于return沒有返回值的方法,不能寫return后面的返回值,只能return自己(即“return;”)。

 

  方法中最后一行的return可以省略不寫。一個方法中可以有多個return,但是必須保證同時只有一個return會執(zhí)行到,兩個return不能連寫。

 

public class demo05 {
    public static void main(String args[]) {
        //將菜的過程用代碼體現(xiàn)出來,但是這么多代碼無法分清楚執(zhí)行的對象是誰
        //可以將以下步驟分成四個主要對象,每個執(zhí)行內(nèi)容可以定義一個方法
        
        //農(nóng)民伯伯
         System.out.println("播種");
        System.out.println("澆水");
        System.out.println("施肥");
        System.out.println("除蟲");
        System.out.println("收割");
        System.out.println("賣給小商販");
        
        //小商販
         System.out.println("運輸?shù)睫r(nóng)貿(mào)市場");
        System.out.println("抬高價格");
        System.out.println("吆喝");
        System.out.println("賣給廚子");
        
        //廚子
         System.out.println("洗菜");
        System.out.println("切菜");
        System.out.println("炒菜");
        System.out.println("裝盤");
        
        //
        System.out.println("吃");

    }

 

package come_one;

public class demo05 {
    public static void main(String args[]) {
        //將菜的過程用代碼體現(xiàn)出來,但是這么多代碼無法分清楚執(zhí)行的對象是誰
        //可以將以下步驟分成四個主要對象,每個執(zhí)行內(nèi)容可以定義一個方法
        //下面采用方法的途徑來實現(xiàn)調(diào)用
        farmer();
        saler();
        cook();
        me();

    }
    
    //農(nóng)民伯伯
    public static void farmer() {
        System.out.println("播種");
        System.out.println("澆水");
        System.out.println("施肥");
        System.out.println("除蟲");
        System.out.println("收割");
        System.out.println("賣給小商販");
    }
    
    //小商販
    public static void saler() {
        System.out.println("運輸?shù)睫r(nóng)貿(mào)市場");
        System.out.println("抬高價格");
        System.out.println("吆喝");
        System.out.println("賣給廚子");
    }
    
    //廚子
    public static void cook() {
        System.out.println("洗菜");
        System.out.println("切菜");
        System.out.println("炒菜");
        System.out.println("裝盤");
    }
    
    //
    public static void me() {
        System.out.println("吃");
    }
}
package come_two;

public class demo01 {
    public static void main(String args[]) {
        //打印調(diào)用
        System.out.println(addTwonum(10,20));
        System.out.println("---------------");
        
        //單獨調(diào)用
        addTwonum(10,20);
        System.out.println("---------------");
        
        //賦值調(diào)用
        int sum = addTwonum(10,20);
        System.out.println("變量的值:"+sum);
    }
    
    public static int addTwonum(int a,int b) {
        System.out.println("方法執(zhí)行!");
        int sum;
        sum = a + b;
        return sum;
    }
}

   

  方法重載(Overload)

  方法重載是方法名稱相同但是參數(shù)列表不同,好處是只需要記住一個方法名稱就可以實現(xiàn)類似的功能。

  方法重載與下列因素相關(guān):參數(shù)個數(shù)不同,參數(shù)類型不同(可以強制轉(zhuǎn)換或自動轉(zhuǎn)換),參數(shù)類型順序不同。

  方法重載與下列因素無關(guān):參數(shù)名稱,方法的返回值類型

package come_two;

public class demo02 {
    public static void main(String args[]) {
        System.out.println(sum(10, 10, 10, 10));
        System.out.println(sum(10, 10, 10));
        System.out.println(sum(10, 10));
    }
    
    //方法重載:可實現(xiàn)多個參數(shù)的使用,名稱相同但是參數(shù)列表不同
    public static int sum(int a,int b) {
        
        return a + b;
    }
    
    public static int sum(int a,int b,int c) {
        return a + b + c; 
    }
    
    public static int sum(int a,int b,int c,int d) {
        return a + b + c + d;
    }
}
package come_two;

//方法重載練習1
//比較兩個數(shù)據(jù)是否相等
//參數(shù)類型為2個byte,2個short,2個int,2個long,并在main中測試
public class demo02 {

    public static void main(String arg[]) {
        byte a = 10;
        byte b = 20;
        System.out.println(isSame(a, b));
        System.out.println(isSame((short)10, (short)20));
        System.out.println(isSame(15,15));
        System.out.println(isSame(100L, 100L));
    }
    
    public static boolean isSame(byte a, byte b) {
        boolean same;
        if(a == b) {
            same = true;
        }else {
            same = false;
        }
        return same;
    }
    
    public static boolean isSame(short a, short b) {
        boolean same = a == b ? true:false;
        return same;
    }
    
    public static boolean isSame(long a, long b) {
        return a == b;
    }
    
    public static boolean isSame(int a, int b) {
        if(a == b) {
            return true;
        }else {
            return false;
        }
    }
}

 

5 流程與語法結(jié)構(gòu)

  流程有三種:順序、循環(huán)、選擇結(jié)構(gòu)。

  順序結(jié)構(gòu):開始->步驟A->步驟B->步驟C->結(jié)束,按箭頭順序操作執(zhí)行。

  判斷語句(選擇結(jié)構(gòu)):單if語句,if-else語句,復(fù)合if..else if... else語句,三元運算符和if-else語句比較。

  選擇語句(switch):每種情況用case表示,不滿足則用default。switch后面小括號中僅能是下列數(shù)據(jù)類型(基本數(shù)據(jù)類型:byte/short/char/int;引用數(shù)據(jù)類型:String字符串、enum枚舉)。switch語句前后順序可以顛倒,而且break語句可以省略,匹配哪一個case就從哪一個位置向下執(zhí)行,直到遇到break或者整體結(jié)束為止。

 

package come_one;
//單if語句
public class demo06 {
    public static void main(String args[]) {
        System.out.println("今天天氣不錯,正在遛馬路,突然發(fā)現(xiàn)一個快樂的地方:網(wǎng)吧");
        //int age = 16;
        //條件滿足執(zhí)行語句體,不滿足則跳過
        int age = 18;
        if(age >= 18) {
            System.out.println("進入網(wǎng)吧,開始high!");
            System.out.println("遇到了一群豬隊友,開始罵街");
            System.out.println("感覺不舒服,結(jié)賬走人");
        }
        System.out.println("回家吃飯");
    }
}
package come_one;
//if-else語句
public class demo06 {
    public static void main(String args[]) {
        int num = 666;
        
        if(num % 2 == 0) {
            System.out.println(num+"為偶數(shù)");
        }else {
            System.out.println(num+"為奇數(shù)");
        }
    }
}
package come_one;
//if-else if - else復(fù)合語句
public class demo06 {
    public static void main(String args[]) {
        int x = 2;
        int y;
        
        if(x >= 3) {
            y = 2 * x + 1;
        }else if(-1 < x && x < 3) {
            y = 2 * x;
        }else {
            y = 2 * x - 1;
        }
        System.out.println("結(jié)果是:"+ y);
    }
}
package come_one;
//使用三元運算符和標準的if-else語句分別實現(xiàn)兩個數(shù)字的最大值
public class demo06 {
    public static void main(String args[]) {
            int a = 20;
            int b = 30;
            //三元運算符
            int max = a > b ? a : b;
            
            int max1;
            if(a > b) {
                max1 = a;
            }else {
                max1 = b;
            }
            System.out.println(max);
            System.out.println(max1);
    }
}
package come_one;
//switch語句
public class demo06 {
    public static void main(String args[]) {
        int num = 5;
        switch(num) {
        case 1 :
            System.out.println("星期一");
            break;
        case 2 :
            System.out.println("星期二");
            break;
        case 3 :
            System.out.println("星期三");
            break;
        case 4 :
            System.out.println("星期四");
            break;
        case 5 :
            System.out.println("星期五");
            break;
        case 6 :
            System.out.println("星期六");
            break;
        case 7 :
            System.out.println("星期日");
            break;
        default:
            System.out.println("數(shù)據(jù)錯誤");
            break;//最后一個break可以省略,但建議保留
        }
    }
}

 

  循環(huán)結(jié)構(gòu)是滿足循環(huán)條件情況下反復(fù)執(zhí)行某一段代碼即循環(huán)體,在合適的時候?qū)⒀h(huán)條件修改為False而結(jié)束循環(huán)。循環(huán)結(jié)構(gòu)的基本組成部分可以分為初始化語句(在循環(huán)開始最初執(zhí)行,而且只做唯一一次)、條件判斷、循環(huán)體(重復(fù)做的若干行語句,事件內(nèi)容)、步進語句(每次循環(huán)之后進行的掃尾工作,每次循環(huán)結(jié)束后都要執(zhí)行一次)。

  循環(huán)語句有for循環(huán)語句,結(jié)構(gòu)為for(初始化表達式;布爾表達式;步進表達式)+ 循環(huán)體。

 

 

 

  while循環(huán)有一個標準格式還有一個擴展格式。標準格式是while(條件判斷)+循環(huán)體,擴展格式是初始化語句+while(條件判斷)+循環(huán)體(后跟步進語句)。

 

 

 

 do-while語句的格式是do+循環(huán)體+while(條件判斷);程序遇到do則無條件執(zhí)行循環(huán)體內(nèi)容,執(zhí)行完后判斷條件是否成立。擴展格式為初始化語句+do+循環(huán)體(后跟步進語句)+while(條件判斷);

package come_one;

public class demo07 {
    public static void main(String args[]) {
        
        //for語句
        for(int i = 1;i <= 10;i++) {
            System.out.println(i+"我錯了!請原諒我");
            }
        
        //while語句擴展格式
        int i = 1;
        while(i<=10) {
            System.out.println(i+"-我錯了!請原諒我");
            i++;
        }
        
        //do-while循環(huán)
        int j = 1;
        do {
            System.out.println(j+"--我錯了!請原諒我");
            j++;
        }while(j <= 10);
    }
}

  

  三種循環(huán)的區(qū)別

  1.如果條件判斷不滿足,那么for循環(huán)和while循環(huán)將會執(zhí)行0次,但是do-while循環(huán)會執(zhí)行至少一次。

  2.for循環(huán)的變量在小括號中定義,是局部變量,只有在循環(huán)內(nèi)部才可以使用。while循環(huán)和do-while循環(huán)的初始化語句在外面,出循環(huán)后可以繼續(xù)使用。

  ***補充:

  break關(guān)鍵字可用于switch中,一旦執(zhí)行整個switch語句立刻結(jié)束。還可以應(yīng)用于循環(huán)語句中,一旦執(zhí)行整個循環(huán)語句立刻結(jié)束,打斷循環(huán)。次數(shù)確定的場景可以用for循環(huán),否則可以用while循環(huán)。continue關(guān)鍵字一旦執(zhí)行立刻跳過當前次循環(huán)剩余內(nèi)容馬上開始下一次循環(huán)。

 

6 數(shù)組

  數(shù)組是一種容器,可以同時存放多個數(shù)據(jù)值。

  數(shù)組的特點:數(shù)組是一種引用的數(shù)據(jù)類型;數(shù)組當中的多個數(shù)據(jù),類型必須統(tǒng)一;數(shù)組的長度在程序運行期間不可改變。

  數(shù)組的初始化是在內(nèi)存中創(chuàng)建一個數(shù)組并且向其中賦予一些默認值。初始化方式可以是動態(tài)初始化(指定長度)和靜態(tài)初始化(指定內(nèi)容)、省略格式。雖然靜態(tài)初始化沒有直接告訴長度,但是根據(jù)大括號里面元素具體內(nèi)容也可以自動計算出長度。靜態(tài)初始化和動態(tài)初始化可以拆分為兩個步驟,具體寫代碼表達。靜態(tài)初始化一旦使用省略格式則不能夠拆分為兩個步驟。動態(tài)初始化數(shù)組時元素自動擁有一個默認值,整數(shù)類型默認0,浮點類型默認0.0,字符類型默認\u0000,布爾類型默認false,引用類型默認null。靜態(tài)初始化其實也有默認值過程,只不過系統(tǒng)自動馬上將默認值替換成為了大括號中具體數(shù)值。

  直接打印數(shù)組名稱得到的是數(shù)組對應(yīng)的內(nèi)存哈希地址。

   兩個數(shù)組的引用可以用arrayA = arrayB實現(xiàn),即將arrayB的地址傳送給arrayA,引用后A或B修改會影響兩者。

  數(shù)組索引編號從0開始到數(shù)組長度-1為止,訪問數(shù)組元素的時候索引編號不存在將會發(fā)生數(shù)組索引越界異常ARRAYINDEXOUTOFBOUNDSEXCEPTION,原因是索引編號錯誤,通過修改正確索引編號可解決問題。

  所有的引用類型變量都可以賦值為null值,但是代表其中什么都沒有。數(shù)組必須進行new初始化才能使用其中的元素,如果只是賦值一個null則沒有進行new創(chuàng)建,那么將會發(fā)生空指針異常(NULLPOINTEREXCEPTION),原因是忘了new,補上new則可解決。int []arrayA = null; arrayA = new int[3];

  數(shù)組的長度在程序運行期間不可改變。數(shù)組可以作為方法的參數(shù)和方法返回值實現(xiàn)傳輸或返回地址。如果希望方法中產(chǎn)生多個結(jié)果數(shù)據(jù)進行返回時可以使用一個數(shù)組作為返回值類型。

 

  JAVA的內(nèi)存需要分五個部分:(紅色部分為重點)

  1.棧(STACK):需要存放方法中局部變量,方法的運行一定要在棧當中。局部變量是方法的參數(shù),具有作用域(一旦超出作用域like從棧內(nèi)存消失)

  2.堆(HEAP):凡是new出來的東西都在堆當中,堆內(nèi)存里面的東西都有一個地址值(16進制),堆內(nèi)存里面的數(shù)據(jù)都有默認值(整數(shù)默認0,浮點默認0.0,字符默認\u0000,布爾默認false,引用默認null)

  3.方法區(qū)(METHOD AREA):存儲class相關(guān)信息,只是包含方法的信息,真正方法的運行在棧。

  4.本地方法棧(NATIVE METHOD STACK):與OS相關(guān)。

  5.寄存器(PC REGISTER):與CPU相關(guān)。

  

package come_two;

public class demo03 {
    public static void main(String arg[]) {
        //數(shù)組動態(tài)初始化的數(shù)據(jù)格式,直接指定數(shù)據(jù)元素個數(shù)
        //數(shù)據(jù)類型[] 數(shù)組名稱 = new 數(shù)據(jù)類型[數(shù)組長度]
        //左側(cè)數(shù)據(jù)類型也就是保存的數(shù)據(jù)全部是統(tǒng)一的類型
        //左側(cè)的中括號代表是一個數(shù)組,數(shù)組名稱表示一個名字
        //右側(cè)的new表示創(chuàng)建數(shù)組的動作,數(shù)據(jù)類型必須和左邊數(shù)據(jù)類型一致
        //數(shù)組長度表示數(shù)組中可以保存多少個數(shù)據(jù),是一個int數(shù)字
        int [] arrayA = new int[300];//創(chuàng)建數(shù)組
        double [] arrayB = new double[10];
        String[] arrayC = new String[100];
        int [] arrayAA;
        arrayAA = new int[] {100,200,300};
        
        //靜態(tài)初始化基本格式:數(shù)據(jù)類型[] 數(shù)據(jù)名稱 = new 數(shù)據(jù)類型[]{元素1,元素2,...}
        int [] arrayD = new int[] {5,15,25};
        String [] arrayE = new String[] {"Hello","World"};
        
        //省略格式:數(shù)據(jù)類型[] 數(shù)組名稱={元素1,元素2,...};
        int []arrayZ = {10,20,30};
        
    }
}

 

package come_two;

public class demo04 {
    public static void main(String args[]) {
        int [] array1 = {10,20,30};
        System.out.println(array1);//[I@6a5fc7f7 內(nèi)存地址
        
        //訪問數(shù)組元素的格式:數(shù)組名稱[索引值]
        //索引值從0開始,一直到數(shù)組長度-1為止,代表數(shù)組當中元素的編號。
        System.out.println(array1[0]);
        System.out.println(array1[1]);
        
        //動態(tài)初始化與賦值
        int [] array2 = new int[3];
        System.out.println(array2);
        System.out.println(array2[0]);
        System.out.println(array2[1]);
        array2[0] = 100;//100賦值給0號元素
        System.out.println(array2[0]);
    }
}
package come_two;
//java內(nèi)存部分分析
public class demo05 {
    public static void main(String args[]) {
        int []array = new int[3];//動態(tài)初始化
        System.out.println(array);//地址值
        System.out.println(array[0]);//0
        System.out.println(array[1]);//0
        System.out.println(array[2]);//0
        
        array[0] = 100;
        array[1] = 200;
        array[2] = 300;
        System.out.println(array);//地址值不變
        System.out.println(array[0]);//100
        System.out.println(array[1]);//200
        System.out.println(array[2]);//300
        
        /*
        棧:
        main(String args[])信息在棧中運行,開辟一段棧中新內(nèi)存空間
        局部變量 int []array 數(shù)組名稱即變量在棧中,根據(jù)地址可以找到堆中數(shù)組
        System.out.println(array); 保存地址
        array[0] 找到地址0x???? 重新賦值時修改堆內(nèi)數(shù)組空間元素值
        
        堆:
        new int[3]在堆中開辟三個空間默認值為0,空間起始有地址0x????,
        
        方法區(qū):
        main方法頭放在方法區(qū) public static void main(String args[])
        */
    }
}

 

package come_two;

/*
 1.如何獲取數(shù)組的長度與格式:數(shù)組名稱.length
 2.遍歷數(shù)組:將數(shù)組中每一個元素逐一打印輸出.
 3.求最大值
 4.數(shù)組元素反轉(zhuǎn):不能夠使用新數(shù)組,使用原數(shù)組
 */

public class demo06 {
    public static void main(String args[]) {
        int [] array = {10,20,30,40,50,60,70,80,90,100};
        int len = array.length;
        System.out.println("數(shù)組array的長度是:"+len);
        
        //遍歷輸出,for循環(huán)或者原始順序輸出
        for(int i = 0; i < array.length;i++) {
            System.out.println(array[i]);
        }
        printArray(array);//調(diào)用數(shù)組方法
        
        //最值判斷
        int max = array[0];
        for(int i = 1; i < array.length; i++) {
            if(array[i] > max) {
                max = array[i];
            }
        }
        System.out.println("最大值:"+max);
        
        //數(shù)組元素反轉(zhuǎn):是對稱位置的元素交換
        //對稱位置需要兩個索引:min,max
        //min==max或min》max時停止交換 即 min《max時應(yīng)該交換
        int []arrayA = new int[] {10,15,6,100,89};
        for(int i = 0; i < arrayA.length;i++) {
            System.out.println(arrayA[i]);
        }
        for(int min_1 = 0,max_1 = arrayA.length - 1;  min_1 < max_1; min_1++,max_1--) {
            if(min_1 < max_1) {
                int temp = arrayA[min_1];
                arrayA[min_1] = arrayA[max_1];
                arrayA[max_1] = temp;

            }
        }
        for(int i = 0; i < arrayA.length;i++) {
            System.out.println(arrayA[i]);
        }
        
        System.out.println("=============");
        //老數(shù)組,長度永遠是3不能改變
        int [] array1 = new int[3];//創(chuàng)建一個三個格子的變量空間
        System.out.println("數(shù)組array1的長度是:"+array1.length);
        //新數(shù)組,這里數(shù)組指的是堆中內(nèi)容
        array1 = new int[5];//又創(chuàng)建新的5個格子的變量空間
        System.out.println("數(shù)組array1的長度是:"+array1.length);
        
        
    }
    
    public static void printArray(int array[]) {
        for(int i = 0; i < array.length;i++) {
            System.out.println(array[i]);
        }    
    }
}
package come_two;
//數(shù)組作為方法的返回值返回的其實也是地址值
//數(shù)組作為方法的參數(shù)傳遞進去的也是數(shù)組的地址值
public class demo07 {
    public static void main(String args[]) {
        int []result = caculate(10, 20, 30);
        System.out.println("main方法內(nèi)部數(shù)組是");
        System.out.println(result);//地址值
        System.out.println("總和為:"+result[0]);
        System.out.println("平均值為:"+result[1]);
    }
    
    public static int[] caculate(int a,int b,int c) {
        int sum = a + b + c;
        int avg = sum / 3;    
        /*
        int []array = new int[2];
        array[0] = sum;
        array[1] = avg;
         */
        int array[] = {sum,avg};
        System.out.println("caculate方法內(nèi)部數(shù)組是");
        System.out.println(array);//地址值
        return array;    
    }
}

 

 7 面向?qū)ο?/span>

  7.1 過程和對象

  面向過程是當需要實現(xiàn)一個功能時每一個具體的步驟都要親力親為,詳細處理每一個細節(jié),強調(diào)步驟。

  面向?qū)ο笫钱斝枰獙崿F(xiàn)一個功能時不關(guān)心具體的步驟,而是找一個已經(jīng)具有該功能的人來做事,強調(diào)對象。面向?qū)ο蟮奶攸c是找一種復(fù)合思考習慣的思想,將復(fù)雜的事情簡單化并且將我們從執(zhí)行者變成指揮者。面向?qū)ο笾邪朔庋b、繼承和多態(tài)三大基本特征。

  封裝是面向?qū)ο蟮暮诵?。將對象的屬性和行為封裝起來,將對象的屬性和行為封裝起來的載體是類,類通常對客戶隱藏實現(xiàn)細節(jié)。封裝是將一些細節(jié)信息隱藏起來,對于外界不可見。封裝在JAVA中的體現(xiàn)有(方法是封裝,關(guān)鍵字private是封裝)。

  private(提高了代碼的安全性)修飾時本類中仍然可以訪問,但是超出本類之外不可直接訪問,但可以間接(具體步驟是get和set寫方法設(shè)置,set設(shè)置無返回值有參數(shù),get設(shè)置有返回值無參數(shù))

  繼承是類與類間存在關(guān)聯(lián),A類與B類有關(guān)聯(lián)但不完全相同時,B類可以保留和繼承A類的共同特征,縮短軟件開發(fā)時間,復(fù)用已定義好的類。繼承主要體現(xiàn)為父類和子類間的聯(lián)系。

  父類對象應(yīng)用于子類對象的特征是多態(tài),多態(tài)的實現(xiàn)依賴于抽象類和接口。多態(tài)中父類通常定義為抽象類,在抽象類中給出一個方法的標準而不給出實現(xiàn)的具體流程。而在多態(tài)的機制中,比抽象類更為方便的方式是將抽象類定義為接口,由抽象方法組成的集合即為接口。

  方法局部變量和類的成員變量重名的時候,根據(jù)就近原則優(yōu)先使用局部變量。如果需要訪問本類中的成員變量,需要使用格式this.成員變量。(通過誰調(diào)用的方法,誰就是this)

package come_three;

import java.util.Arrays;
import java.util.Iterator;

public class demo01 {
    public static void main(String args[]) {
        int []array = {10,20,30,40,50};
        //面向過程,每個步驟親力親為
        System.out.println("[");
        for(int i = 0; i < array.length; i++) {
            if(i == array.length - 1) {
                System.out.println(array[i] + "]");
            }else {
                System.out.println(array[i]+",");
            }
        }
        
        //面向?qū)ο?找一個JDK提供好的array類
        //其中tostring方法直接把數(shù)組編程想要的格式的字符串
        System.out.println("===========");
        System.out.println(Arrays.toString(array));
    }
}
//文件1
package
come_three; /* 定義年齡時無法阻止不合理的數(shù)值設(shè)置進來,通過private保護成員變量進行修飾 一旦使用private修飾那么本類中仍然可以隨意訪問,但是超出了本類范圍之外的不能夠直接訪問 */ public class Person { String name; private int age; public void show() { System.out.println("我叫:"+name+",年齡:"+age); } //這個成員方法用于向成員變量age設(shè)置值 public void setAge(int num) { if (num < 100 && num >= 0) { age = num; }else { System.out.println("數(shù)據(jù)不合理"); } } //這個方法用于獲取age public int getAge() { return age; } } //文件二 package come_three; public class demo07 { public static void main(String args[]) { Person person = new Person(); person.show(); person.name = "丁香醫(yī)生"; person.setAge(20); person.show(); } }
package come_three;

/*
public class demo09 {
        
        String name;
        
        //參數(shù)who是對方的名字
        //成員變量name是自己的名字
        public void sayHello(String who) {
            System.out.println(who + ",你好。我是" + name);
        }
}
*/

/*
 方法局部變量和類的成員變量重名的時候,根據(jù)就近原則優(yōu)先使用局部變量。如果需要訪問本類中的成員變量,需要使用格式this.成員變量
 通過誰調(diào)用的方法,誰就是this
 */
public class demo09 {
    
    String name;
    
    //參數(shù)who是對方的名字
    //成員變量name是自己的名字
    public void sayHello(String name) {
        System.out.println(name + ",你好。我是" + this.name);
    }
}

package come_three;

public class demo10 {
    
    public static void main(String args[]) {
        demo09 persons = new demo09();
        persons.name = "王健林";
        persons.sayHello("王思聰");
    }
}

 

  7.2 類和對象

    類是一種相關(guān)屬性和行為的集合,是一類事物的模板,使用事物的屬性特征和行為特征來描述該類事物。屬性是事物的狀態(tài)信息,行為是事物能夠做什么。對象是一類事物的具體體現(xiàn),對象是類的一個實例,必然具備該類事物的屬性和行為。

  比如:手上有個手機,手機的長寬高的特征是屬性,手機可以打電話發(fā)短信的能力是行為

  關(guān)系:類是對一類事物的描述,抽象的。對象是一類事物的具體實例,是具體的。類是對象的模板,對象是類的實體

  注意事項:成員方法直接定義在類當中,在方法外邊;成員方法不要寫static關(guān)鍵字。

  

  通常一個類并不能直接使用,需要根據(jù)類創(chuàng)建一個對象才能使用。

  需要以下步驟:

  1.導(dǎo)包:也就是指出需要使用的類在什么位置。

  import 包名稱.類名稱

  對于和當前類屬于同一個包的情況,可以省略包語句不寫。

  2.創(chuàng)建,格式:

  類名稱 對象名 = new 類名稱();

  3.使用,分為兩種情況:

  使用成員變量,對象名.成員變量名

  使用成員方法,對象名.成員方法名(參數(shù))

  成員變量沒有進行賦值時會有默認值,規(guī)則和數(shù)組相同。

 

  成員變量和局部變量的區(qū)別:+ 方法的參數(shù)就是局部變量,參數(shù)在方法調(diào)用時必然被賦值。

  1.定義位置不同:局部變量定義在方法內(nèi)部;成員變量定義在方法外部,直接寫在類中。

  2.作用范圍不一樣:局部變量只有在方法中使用,出了方法不可以使用;整個類全部可以使用。

  3.默認值不一樣:局部變量沒有默認值,如果要想使用必須手動賦值;成員變量不賦值會有默認值,規(guī)則和數(shù)組一樣。

  4.內(nèi)存位置不一樣:局部變量位于棧內(nèi)存,成員變量位于堆內(nèi)存

  5.生命周期不一樣:局部變量隨著方法進棧產(chǎn)生,隨著方法出棧消失;成員變量隨著對象創(chuàng)建而產(chǎn)生,隨著對象被垃圾回收而消失。

package come_three;
/*
 public class Classname{
 //成員變量
 //成員方法
 }
 */

/*
 定義一個類,用于模擬學生事務(wù),其中有兩個組成部分
 屬性(是什么)
     姓名
     年齡
 行為(能做什么)
     吃飯
     睡覺
     學習
 對應(yīng)到JAVA類中:
 成員變量(屬性)
     String name;
     int age;
 成員方法(行為)
     public  void eat();
     public  void sleep();
     public  void study();
 */
public class demo02 {
    //成員變量
    String name;//姓名
     int age;//年齡
     
    //成員方法
     public  void eat() {
         System.out.println("吃飯");
     }
     public  void sleep() {
         System.out.println("睡覺");
     }
     public  void study() {
         System.out.println("學習");
     }
}
package come_three;

public class demo03 {
    public static void main(String args[]) {
        //導(dǎo)包
        //使用的類在同一個包下可以省略導(dǎo)包語句
        
        //創(chuàng)建
        demo02 stu = new demo02();
        
        //使用其中成員變量
        System.out.println(stu.age);
        System.out.println(stu.name);
        
        stu.age = 36;
        stu.name = "趙麗穎";
        System.out.println(stu.age);
        System.out.println(stu.name);
        stu.eat();
    }
}
package come_three;

public class demo04 {
    public static void main(String args[]) {
        //根據(jù)Phone類創(chuàng)建一個phone的對象
        Phone phone = new Phone();
        System.out.println(phone.brand);
        System.out.println(phone.color);
        System.out.println(phone.price);
        
        phone.brand = "iPhone SE";
        phone.price = 8888;
        phone.color = "Blue";
        System.out.println(phone.brand);
        System.out.println(phone.color);
        System.out.println(phone.price);
        
        phone.call("喬布斯");
        phone.sendMessage();
        
        //引用
        Phone phone1 = phone;
        System.out.println(phone1.brand);
        System.out.println(phone1.color);
        System.out.println(phone1.price);
        
        phone1.brand = "iPhone SE";
        phone1.price = 8888;
        phone1.color = "Blue";
        System.out.println(phone1.brand);
        System.out.println(phone1.color);
        System.out.println(phone1.price);
        
        phone.call("喬布斯");
        phone.sendMessage();
    }
}
package come_three;

public class demo05 {
    public static void main(String args[]) {
        //使用對象類型作為方法的參數(shù)
        //Phone one = new Phone();
        //one.brand = "華為";
        //one.color = "Blue";
        //one.price = 8338;
        //method(one);//傳遞進去的參數(shù)是地址值
        
        //使用對象類型作為方法的返回值
        Phone two = gethPhone();
        System.out.println(two.brand);
        System.out.println(two.color);
        System.out.println(two.price);
    }
    
    //使用對象類型作為方法的參數(shù)
    public static void method(Phone param) {
        System.out.println(param.brand);
        System.out.println(param.color);
        System.out.println(param.price);
    }
    
    //使用對象類型作為方法的返回值
    public static Phone gethPhone() {
        Phone one = new Phone();
        one.brand = "蘋果";
        one.price = 8338;
        one.color = "BLUE";
        return one;        
    }
}

 

package come_three;
/*
  boolean類型當中的boolean值 get方法一定要寫成isXXX的形式
 */
public class Student {
        
        private String name;
        private int age;
        private boolean male;
        
        public void setMale(boolean b) {
            male = b;
        }
        
        public boolean isMale() {
            return male;
        }
        
        public void setName(String str) {
            name = str;
        }
        
        public String getName() {
            return name;
        }
        
        public void setAge(int num) {
            age = num;
        }
        
        public int getAge() {
            return age;
        }
    }


package come_three;

public class demo08 {

    public static void main(String args[]) {
        Student stu = new Student();
        stu.setName("蘆薈");
        stu.setAge(20);
        stu.setMale(true);
        
        System.out.println("姓名:"+stu.getName());
        System.out.println("年齡:"+stu.getAge());
        System.out.println("是不是爺們兒:"+stu.isMale());
    }
}

 

  7.3 構(gòu)造方法

  加入構(gòu)造方法后,類可以由四部分組成:成員變量,無參構(gòu)造,有參構(gòu)造,setter和getter。

  1. 構(gòu)造方法的名稱和所在的類名稱完全一樣,大小也一樣。

  2. 構(gòu)造方法不需要返回值類型,void都不寫。

  3. 構(gòu)造方法的調(diào)用是通過new關(guān)鍵字加上構(gòu)造方法名稱,而不是通過“.”

  4. 構(gòu)造方法不能return一個具體的返回值。

  5. 如果沒有編寫任何構(gòu)造方法,編譯期將會默認贈送一個構(gòu)造方法,沒有參數(shù),方法體什么事情都不做。

  6.一旦編寫至少一個構(gòu)造方法,那么編譯器將不再贈送。

  7.構(gòu)造方法重載:方法名稱相同,參數(shù)列表不同

  

package come_three;

/*
 構(gòu)造方法是專門用來創(chuàng)建對象的方法,當通過關(guān)鍵字new來創(chuàng)建對象時其實就是在調(diào)用構(gòu)造方法。
 格式:
 public 類名稱(參數(shù)類型 參數(shù)名稱){
 方法體
 }
 
 */
public class demo11 {
    //成員變量
    private int age;
    private String name;
    
    //無參構(gòu)造
    public demo11() {
        System.out.println("無參構(gòu)造方法執(zhí)行了!");
    }
    
    //重載:有參構(gòu)造
    public demo11(String name,int age) {
        System.out.println("有參構(gòu)造方法執(zhí)行了!!");
        this.name = name;
        this.age = age;
    }
    
    //GETTER SETTER
    public void setName(String name) {
        this.name = name; 
    }
    
    public void setAge(int age) {
        this.age = age;
    }
    
    public int getAge() {
        return age;
    }
    
    public String getName() {
        return name;
    }
}


package come_three;

public class demo12 {

    public static void main(String args[]) {
        demo11 demo1  = new demo11(); //無參
        demo11 demo2  = new demo11("趙麗穎",20); //全參
        System.out.println("姓名:" + demo2.getName() + ",年齡:" + demo2.getAge());
        
        //改變對象中成員變量數(shù)據(jù)內(nèi)容仍然需要使用setter方法
        demo2.setAge(22);
        System.out.println("姓名:" + demo2.getName() + ",年齡:" + demo2.getAge());
    }
}
package come_four;

/*
 一個標準的類通常滿足下面四個組成部分
 1.所有的成員變量都要使用private關(guān)鍵字修飾
 2.為每一個成員變量編寫一對getter/setter
 3.編寫一個無參構(gòu)造方法
 4.編寫一個有參構(gòu)造方法
 
 標準的類成為 JAVA BEAN
 */
public class Student {

    private String name;
    private int age;
    
    //無參構(gòu)造
    public Student() {

    }
    
    //有參構(gòu)造
    public Student(String name,int age) {
        this.name = name;
        this.age = age;
    }
    
    //GETTER SETTER
    public void setName(String name) {
        this.name = name; 
    }
    
    public void setAge(int age) {
        this.age = age;
    }
    
    public int getAge() {
        return age;
    }
    
    public String getName() {
        return name;
    }
}


package come_four;

public class demo01 {

    public static void main(String args[]) {
        Student stu1 = new Student();
        stu1.setName("迪麗熱巴");
        stu1.setAge(22);
        System.out.println("姓名:" + stu1.getName() + ",年齡:" + stu1.getAge());
        System.out.println("===========");
        
        Student stu2 = new Student();
        stu2.setName("古力娜扎");
        stu2.setAge(32);
        System.out.println("姓名:" + stu2.getName() + ",年齡:" + stu2.getAge());
        System.out.println("===========");
    }
}

 

  7.4 API和Scanner

   API(Application Programming Interface)是應(yīng)用程序編程接口,是JDK提供給使用的類的說明文檔。

  API使用步驟:打開幫助文檔;點擊顯示找到索引,回車;在輸入框輸入名稱后回車;看包(java.lang的類不需要導(dǎo)入包,其他需要);看類的解釋和說明;學習構(gòu)造方法;使用成員方法。

  Scanner是用戶能夠通過鍵盤輸入到程序中,使用步驟是導(dǎo)包、創(chuàng)建、調(diào)用。

package come_four;
/*
 scanner是一個類,可以實現(xiàn)鍵盤輸入數(shù)據(jù)到程序中
 引用類型的一般使用步驟:
 1.導(dǎo)入包
 import 包路徑.類名稱
 如果需要使用的目標類和當前類位于同一個包可以省略導(dǎo)包語句
 
 2.創(chuàng)建
 類名稱 對象名 = new 類名稱();
 
 3.使用
 對象名.成員方法名();
 
 */
import java.util.Scanner; //導(dǎo)包

public class demo02 {

    public static void main(String args[]) {
        //創(chuàng)建
        //System.in表示從鍵盤進行輸入
        Scanner sc = new Scanner(System.in);
            
        //第一個案例:兩個數(shù)字相加
        //System.out.println("請輸入第一個數(shù)字");
        //int num1 = sc.nextInt();
        //System.out.println("請輸入第二個數(shù)字");
        //int num2 = sc.nextInt();
        //int result = num1 + num2;
        //System.out.println("輸入的數(shù)字和是:" + result);
        
        //第二個案例:三個數(shù)最大?
        System.out.println("請輸入第1個數(shù)字");
        int num1 = sc.nextInt();
        System.out.println("請輸入第2個數(shù)字");
        int num2 = sc.nextInt();
        System.out.println("請輸入第3個數(shù)字");
        int num3 = sc.nextInt();
        int temp = num1 > num2 ? num1 : num2;
        int max = temp > num3 ? temp : num3;
        System.out.println("輸入的數(shù)字最大值是:" + max);
        
        //獲取鍵盤輸入的字符串
        //String str = sc.next();
        //System.out.println("輸入的String字符串是:" + str);
        
    }
}

 

  7.5 匿名對象

  匿名對象是只有右邊的對象,沒有左邊的名字和賦值運算符。格式:new 類名稱();匿名對象只能使用唯一的一次,下次再用不得不再創(chuàng)建一個新對象。如果確定有一個對象只需要使用唯一的一次,就可以用匿名對象。匿名對象也可以作為參數(shù)和返回值。

package come_four;

import java.util.Scanner;

/*
 創(chuàng)建對象標準格式
 類名稱 對象名 = new 類名稱();
 
 */
public class demo03 {

    public static void main(String args[]) {
        //匿名對象的創(chuàng)建
//        new Person().name = "吳協(xié)康";
//        new Person().showName(); // 我叫,null
        
        //普通使用方式
//        Scanner sc = new Scanner(System.in);
//        int num = sc.nextInt();
        //匿名對象方式:使用一次
//        int nums = new Scanner(System.in).nextInt();
//        System.out.println("輸入的是:" + nums);
        
        //使用一般寫法傳入?yún)?shù)
//        Scanner sc = new Scanner(System.in);
//        methodParam(sc);
        //使用匿名對象傳入?yún)?shù)
//        methodParam(new Scanner(System.in));
        
        Scanner sc = methoReturn();
        int num = sc.nextInt();
        System.out.println("輸入的是:" + num);
        
//        Person one = new Person();
//        one.name = "楊毅";
//        one.showName();
        
    }
        
    
    public static void methodParam(Scanner sc) {
        int num = sc.nextInt();
        System.out.println("輸入的是:" + num);
    }
    
    public static Scanner methoReturn() {
        //Scanner sc = new Scanner(System.in);
        //return sc;
        return new Scanner(System.in);
    }
}

 

  7.6 RANDOM

  RANDOM類用于生成隨機數(shù)據(jù),使用步驟是導(dǎo)包、創(chuàng)建、調(diào)用。

  獲取一個隨機的int數(shù)字(范圍是int所有范圍,有正負兩種):nextInt()

  獲取一個隨機的int數(shù)字(參數(shù)代表了范圍,左閉右開區(qū)間):[0,3)表示的是0-2,也是用nextInt()

package come_four;

import java.util.Random;
import java.util.Scanner;
public class demo04 {

    public static void main(String args[]){
        Random r = new Random();
        
        //產(chǎn)生隨機數(shù)的方法
        //int num1 = r.nextInt();
        //System.out.println("隨機數(shù)是:" + num1);
        
        //產(chǎn)生0-9的隨機數(shù)
        //for (int i = 0; i < 100; i++) {
        //    int num2 = r.nextInt(10);//參數(shù)代表范圍,左閉右開
        //    System.out.println("隨機數(shù)是:" + num2);
        //}
        
        //根據(jù)int變量n的值 獲取隨機數(shù)字 范圍是1-n
        //Scanner n = new Scanner(System.in);
        //int num3 = n.nextInt();
        //for (int i = 0; i < 100; i++) {
        //    int num4 = r.nextInt(num3) + 1 ;
        //    System.out.println("產(chǎn)生的隨機數(shù)是:" + num4);
        //}
        
        //猜數(shù)字游戲
        /*
         首先產(chǎn)生一個隨機數(shù)據(jù)并且一旦產(chǎn)生不再變化
         需要鍵盤輸入,用到scanner
         獲取鍵盤輸入的數(shù)字
         得到兩個數(shù)字 判斷是否太大,如果太大提示太大,如果太小提示太小,猜中則結(jié)束
         */
        int num = r.nextInt(100) + 1;
        Scanner sc = new Scanner(System.in);
        
        while(true) {
            System.out.println("請輸入你要猜的數(shù)字");
            int guessnum = sc.nextInt();
            if(guessnum > num) {
                System.out.println("太大了,請重試");
            }else if (guessnum < num){
                System.out.println("太小了,請重試");
            }else {
                System.out.println("恭喜你猜對了");
                break;
            }
        }
        System.out.println("游戲結(jié)束");
        
    }
}

 

  

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多