Java基礎(chǔ) - 方法和數(shù)組

13.方法和數(shù)組

方法

  • 方法定義

    程序中完成某個(gè)獨(dú)立的功能,可重復(fù)使用的一段代碼的集合,解決功能重復(fù)的問(wèn)題;

  • 方法結(jié)構(gòu)

      [修飾符] 返回值類型 方法名([數(shù)據(jù)類型 變量名1逗爹,數(shù)據(jù)類型 變量名2,...]) {
    
              方法體;
    
              [return 值;]
      }
    

    參數(shù)列表:又稱為參數(shù)清單,包含參數(shù)的個(gè)數(shù)胎挎、參數(shù)類型、參數(shù)順序忆家。

    方法簽名:方法名+方法參數(shù)列表犹菇,判斷是否是同一個(gè)方法的標(biāo)準(zhǔn)。

  • 方法特點(diǎn)

    • 它可以實(shí)現(xiàn)獨(dú)立的功能芽卿,必須定義在類里面揭芍。

    • 它只有被調(diào)用才會(huì)執(zhí)行,它可以被重復(fù)使用卸例。

    • 方法結(jié)束后方法里的對(duì)象失去引用, 變量會(huì)消失称杨。

  • 方法的重載

    在同一個(gè)類中,允許多個(gè)方法的名字相同筷转,但是他們的參數(shù)列表絕對(duì)不能相同

    遵守的原則:兩同一不同

    • 兩同:同一個(gè)類列另,方法名相同

    • 一不同:方法的形參列表(參數(shù)的個(gè)數(shù),參數(shù)的類型,參數(shù)順序)

    注意:方法重載和方法的返回值類型無(wú)關(guān)。

  • 方法的遞歸

    所謂遞歸就是方法自己調(diào)用自己,可以執(zhí)行結(jié)束(有出口),

  • 方法參數(shù)的值傳遞機(jī)制

    方法被調(diào)用時(shí)旦装,方法里的參數(shù)是以值傳遞的方式傳遞的页衙。

    所謂值傳遞,就是將實(shí)際參數(shù)的副本(復(fù)制品)傳入方法阴绢,而參數(shù)本身不受影響店乐。

    • 若是基本數(shù)據(jù)類型,就直接傳遞實(shí)參值的副本呻袭。

    • 若是引用數(shù)據(jù)類型眨八,就傳遞實(shí)際參數(shù)的16進(jìn)制地址值

    示例代碼:

    基本類型

      需求:定義一個(gè)方法change左电,改變傳入實(shí)參的值廉侧。   
      public static void main(String[] args) {
          int x=10;
          change(x);
          System.out.println("main中執(zhí)行change后的x=" + x); //輸出 x = 10
      }
    
      public static void change(int x) {
          System.out.println("change前...x=" + x); // x = 10
          x=20;
          System.out.println("change后...x=" + x); // x = 20
      }
    

    引用類型

      案例:定義一個(gè)change方法页响,改變數(shù)組索引為1的元素的值。
    
      public static void main(String[] args) {
          int[] arr = {1段誊,2 };
          change(arr);
          System.out.println("main中執(zhí)行change后arr[1]= " + arr[1] );// {1,10}
      }
    
      public static void change(int[] arr) {
          System.out.println("chagne前...arr[1]= " + arr[1] ); // {1,2}
          arr[1] = 10;
          System.out.println("chagne后...arr[1]= " + arr[1] ); // {1,10}
      }
    

數(shù)組

  • 數(shù)組定義

    把具有相同類型的若干變量按有序的形式組織起來(lái), 這些按一定順序排列的同類型數(shù)據(jù)的集合稱為數(shù)組

    數(shù)組也是一種數(shù)據(jù)類型.

  • 數(shù)組初始化

    Java中數(shù)組必先初始化后才能使用闰蚕,所謂初始化就是給數(shù)組元素分配內(nèi)存,并為每個(gè)元素賦初始值连舍。

    初始化數(shù)組的兩種方式:

    1. 靜態(tài)初始化

       元素類型[] 數(shù)組名 = new 元素類型[]{值1没陡,值2,...}
       int[] arr = new int[]{1,2,3}    
       
       簡(jiǎn)寫(xiě)語(yǔ)法:
      
       元素類型[] 數(shù)組名 = {元素1,元素2,元素3...元素n}
       int[] arr = {1,2,3}
      
    2. 動(dòng)態(tài)初始化

       元素類型[] 數(shù)組名 = new 元素類型[長(zhǎng)度]
       int[] arr = new int[10];
      
  • 二維數(shù)組

    1. 一維數(shù)組中每一個(gè)元素都是一個(gè)值

    2. 二維數(shù)組:就是里面的每一個(gè)元素都是一個(gè)一維數(shù)組(內(nèi)存地址值)

      int[][] arr = {{1,2,3},{5,6,7},{8}}

    3. 三維數(shù)組索赏,就是里面是每一個(gè)元素都的二維數(shù)組(內(nèi)存地址值)

  • 可變參數(shù)

      public void test(int a,int...ss)
    

    可變參數(shù)也是編譯器的特性(語(yǔ)法糖)盼玄,底層依然是數(shù)組,和數(shù)組的打包

    一個(gè)方法中可變參數(shù)只能有1個(gè)潜腻,且必須位于最后

    二維數(shù)組的可變參數(shù)是int[]... arr

  • 排序算法

    1. 冒泡排序(Bubble Sort)

      這是最簡(jiǎn)單的排序法埃儿,

      • 基本思路:

        對(duì)未排序的各元素從頭到尾依次比較相鄰的兩個(gè)元素大小關(guān)系,若大于則交換位置融涣,經(jīng)過(guò)第一輪比較排序后可得出最大值蝌箍,然后使用同樣的方法把剩下的元素逐個(gè)比較即可。

        可以看出若有N個(gè)元素暴心,那么一共要進(jìn)行N-1輪比較妓盲,第M輪要進(jìn)行N-M次比較。(若6個(gè)元素专普,要進(jìn)行6-1輪比較悯衬,第一輪比較6-1次,第三輪比較6-3次)檀夹。

      • 示例代碼:

          int[] arr = {3, 5, 4, 1, 8, 2};
          //外層循環(huán)表示要比較多少輪
          for (int i = 1; i < arr.length; i++) {
              //內(nèi)循環(huán)表示每輪比較多少次
              for (int j = 0; j < arr.length - i; j++) {
                  //每次比較時(shí),相鄰的兩個(gè)數(shù),前面大于后面的元素,則交換值,得到該次比較的最大值
                  if (arr[j] > arr[j + 1]) {
                      //異或的位運(yùn)算,交換值
                      arr[j] = arr[j] ^ arr[j + 1];
                      arr[j + 1] = arr[j] ^ arr[j + 1];
                      arr[j] = arr[j] ^ arr[j + 1];
                  }
              }
          }
        
    2. 選擇排序

      • 基本思路

        選擇某個(gè)索引位置的元素筋粗,然后和后面元素依次比較,若大于則交換位置炸渡,經(jīng)過(guò)第一輪比較排序后可得出最小值娜亿,然后使用同樣的方法把剩下的元素逐個(gè)比較即可。

        可以看出選擇排序蚌堵,第一輪會(huì)選出最小值买决,第二輪會(huì)選出第二小的值,直到最后吼畏。

        第一輪從arr[0]和后面元素相比較督赤,第二輪從arr[1]和后面的元素相比較,依次類推泻蚊。N個(gè)數(shù)要進(jìn)行N-1輪躲舌。相對(duì)于冒泡排序效率高一些。

      • 示例代碼

          int[] arr = {3, 5, 4, 1, 8, 2};
          for (int i = 0; i < arr.length - 1; i++) {
              for (int j = i + 1; j < arr.length; j++) {
                  if (arr[i] > arr[j]) {
                      //異或的位運(yùn)算,交換值
                      arr[i] = arr[i] ^ arr[j];
                      arr[j] = arr[i] ^ arr[j];
                      arr[i] = arr[i] ^ arr[j];
                  }
              }
          }
        
    3. 二分查找

      當(dāng)數(shù)據(jù)量很大適宜采用該方法性雄。采用二分法查找時(shí)没卸,數(shù)據(jù)需是排好序的

      • 基本思路

        每一次都跟數(shù)組的中間變量作比較,根據(jù)大于或者小于來(lái)改動(dòng)開(kāi)始和結(jié)束的索引

        只要中間值和key相同就返回索引

        如果循環(huán)結(jié)束都沒(méi)有返回那就說(shuō)明key在數(shù)組中不存在,返回-1

  • 數(shù)組工具類 Arrays

    常用方法

      int binarySearch(type[] arr,type key)   使用二分法查找數(shù)組里某元素并返回其索引羹奉,若找不到返回負(fù)數(shù).
    
      void sort(type[] arr)   使用調(diào)優(yōu)后的快速法對(duì)指定數(shù)組排序。
    
      String toString(type[] arr) 返回指定數(shù)組內(nèi)容的字符串表示形式约计。
    
      public static type[] copyOf(type[] original, int newLength) 復(fù)制指定的數(shù)組诀拭,截取或用 0 填充(如有必要),以使副本具有指定的長(zhǎng)度病蛉。
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末炫加,一起剝皮案震驚了整個(gè)濱河市瑰煎,隨后出現(xiàn)的幾起案子铺然,更是在濱河造成了極大的恐慌,老刑警劉巖酒甸,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件魄健,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡插勤,警方通過(guò)查閱死者的電腦和手機(jī)沽瘦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)农尖,“玉大人析恋,你說(shuō)我怎么就攤上這事∈⒖ǎ” “怎么了助隧?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)滑沧。 經(jīng)常有香客問(wèn)我并村,道長(zhǎng),這世上最難降的妖魔是什么滓技? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任哩牍,我火速辦了婚禮,結(jié)果婚禮上令漂,老公的妹妹穿的比我還像新娘膝昆。我一直安慰自己,他們只是感情好叠必,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布外潜。 她就那樣靜靜地躺著,像睡著了一般挠唆。 火紅的嫁衣襯著肌膚如雪处窥。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天玄组,我揣著相機(jī)與錄音滔驾,去河邊找鬼谒麦。 笑死,一個(gè)胖子當(dāng)著我的面吹牛哆致,可吹牛的內(nèi)容都是我干的绕德。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼摊阀,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼耻蛇!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起胞此,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤臣咖,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后漱牵,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體夺蛇,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年酣胀,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了刁赦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡闻镶,死狀恐怖甚脉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情铆农,我是刑警寧澤牺氨,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站顿涣,受9級(jí)特大地震影響波闹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜涛碑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一精堕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蒲障,春花似錦歹篓、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至毙籽,卻和暖如春洞斯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背坑赡。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工烙如, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留么抗,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓亚铁,卻偏偏與公主長(zhǎng)得像蝇刀,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子徘溢,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容