第八節(jié):方法

Java 方法

一個(gè) Java 方法是為了執(zhí)行某個(gè)操作的一些語(yǔ)句的組合昂儒。舉個(gè)例子來(lái)說(shuō),當(dāng)你調(diào)用 System.out.println("字符串") 方法時(shí)瓶蝴,系統(tǒng)實(shí)際上會(huì)執(zhí)行很多語(yǔ)句才能在控制臺(tái)上輸出信息毒返。

現(xiàn)在你將學(xué)習(xí)怎么創(chuàng)建你自己的方法,他們可以有返回值也可以沒(méi)有返回值舷手,可以有參數(shù)拧簸,也可以沒(méi)有參數(shù),重載方法要使用相同的方法名稱(chēng)男窟,并在程序設(shè)計(jì)中利用抽象的方法盆赤。

創(chuàng)建方法

我們用下面的例子來(lái)解釋方法的語(yǔ)法

public static int funcName(int a, int b) {
  
     int i = 9;
     return i;
  }

在這里

public static:修飾符
int:返回值類(lèi)型
funcName:函數(shù)名稱(chēng)(function)
a,b:形式參數(shù)
int a,int b:參數(shù)列
方法的定義包含方法頭和方法體歉眷。如下所示:
modifier returnType nameOfMethod (Parameter List) {
 // method body
}

以上的語(yǔ)法包括

modifier:他定義了方法的訪問(wèn)類(lèi)型牺六,它是可選的。
returnType:方法是可能返回一個(gè)值的姥芥。
nameOfMethod:這是方法的名稱(chēng)兔乞。方法簽名包括方法名稱(chēng)和參數(shù)列表汇鞭。
Parameter List:參數(shù)列表凉唐,它是參數(shù)的次序,類(lèi)型霍骄,以及參數(shù)個(gè)數(shù)的集合台囱。這些都是可選的,當(dāng)然方法也可以沒(méi)有參數(shù)读整。

方法體:方法體定義了這個(gè)方法是用來(lái)做什么的簿训。
示例

這是上面定義的方法max(),該方法接受兩個(gè)參數(shù)num1和num2返回兩者之間的最大值米间。

/** the snippet returns the minimum between two numbers */
public static int minFunction(int n1, int n2) {
   int min;
   if (n1 > n2)
      min = n2;
   else
      min = n1;

   return min; 
}

方法調(diào)用

要想使用一個(gè)方法强品,該方法必須要被調(diào)用。方法調(diào)用有兩種方式屈糊,一種是有返回值的的榛,一種是沒(méi)有返回值的。

調(diào)用方法很簡(jiǎn)單逻锐,當(dāng)程序需要調(diào)用一個(gè)方法時(shí)夫晌,控制程序轉(zhuǎn)移到被調(diào)用的方法雕薪,方法將會(huì)返回兩個(gè)條件給調(diào)用者:

返回一條執(zhí)行語(yǔ)句
執(zhí)行到方法結(jié)束
將返回void的方法作為一個(gè)調(diào)用語(yǔ)句,讓我看下面的例子:

System.out.println("hello!");
該方法的返回值可以通過(guò)下面的例子被理解:

int result = sum(6, 9);
示例

下面的例子表明了怎么定義方法和怎么調(diào)用它:

public class ExampleMinNumber{

   public static void main(String[] args) {
      int a = 11;
      int b = 6;
      int c = minFunction(a, b);
      System.out.println("Minimum Value = " + c);
   }

   /** returns the minimum of two numbers */
   public static int minFunction(int n1, int n2) {
      int min;
      if (n1 > n2)
         min = n2;
      else
         min = n1;

      return min; 
   }
}

將會(huì)產(chǎn)生如下的結(jié)果

Minimum value = 6
關(guān)鍵字 void

關(guān)鍵字 void 允許我們創(chuàng)建一個(gè)沒(méi)有返回值的方法晓淀。這里我們?cè)谙乱粋€(gè)例子中創(chuàng)建一個(gè) void 方法 methodRankPoints所袁。這個(gè)方法是沒(méi)有返回值類(lèi)型的。調(diào)用 void 方法必須聲明 methodRankPoints(255.7); Java 語(yǔ)句以分號(hào)結(jié)束,如下所示:

public class ExampleVoid {

   public static void main(String[] args) {
      methodRankPoints(255.7);
   }

   public static void methodRankPoints(double points) {
      if (points >= 202.5) {
         System.out.println("Rank:A1");
      }
      else if (points >= 122.4) {
         System.out.println("Rank:A2");
      }
      else {
         System.out.println("Rank:A3");
      }
   }
}

這將產(chǎn)生如下的結(jié)果:

Rank:A1
方法的重載

當(dāng)一個(gè)方法有兩個(gè)或者更多的方法凶掰,他們的方法名字一樣但是參數(shù)不同時(shí)燥爷,就叫做方法的重載。它與覆蓋是不同的懦窘。覆蓋是指方法具有相同的名字局劲,類(lèi)型以及參數(shù)的個(gè)數(shù)。

讓我們來(lái)考慮之前的找最小整型數(shù)的例子奶赠。如果我們要求尋找浮點(diǎn)型中最小的數(shù)時(shí)鱼填,我們就需要利用方法的重載來(lái)去創(chuàng)建函數(shù)名相同,但參數(shù)不一樣的兩個(gè)或更多的方法毅戈。

下面的例子給予解釋?zhuān)?/p>

public class ExampleOverloading{

   public static void main(String[] args) {
      int a = 11;
      int b = 6;
      double c = 7.3;
      double d = 9.4;
      int result1 = minFunction(a, b);
      // same function name with different parameters
      double result2 = minFunction(c, d);
      System.out.println("Minimum Value = " + result1);
      System.out.println("Minimum Value = " + result2);
   }

  // for integer
   public static int minFunction(int n1, int n2) {
      int min;
      if (n1 > n2)
         min = n2;
      else
         min = n1;

      return min; 
   }
   // for double
   public static double minFunction(double n1, double n2) {
     double min;
      if (n1 > n2)
         min = n2;
      else
         min = n1;

      return min; 
   }
}

這將產(chǎn)生如下結(jié)果:

Minimum Value = 6
Minimum Value = 7.3
重載方法使程序易讀苹丸。在這里,兩種方法名稱(chēng)相同但參數(shù)不同。產(chǎn)生整型和浮點(diǎn)類(lèi)型的最小數(shù)作為程序運(yùn)行結(jié)果苇经。

構(gòu)造函數(shù)

這是一個(gè)簡(jiǎn)單的使用構(gòu)造函數(shù)的例子:

// A simple constructor.
class MyClass {
   int x;

   // Following is the constructor
   MyClass() {
      x = 10;
   }
}

你可以通過(guò)以下方法來(lái)調(diào)用構(gòu)造函數(shù)來(lái)實(shí)例化一個(gè)對(duì)象:

public class ConsDemo {

   public static void main(String args[]) {
      MyClass t1 = new MyClass();
      MyClass t2 = new MyClass();
      System.out.println(t1.x + " " + t2.x);
   }
}

通常赘理,你將需要用構(gòu)造函數(shù)來(lái)接受一個(gè)或多個(gè)參數(shù)。參數(shù)的傳遞和以上介紹的普通方法的參數(shù)傳遞是一樣的扇单,就是在構(gòu)造函數(shù)的名字后面列出參數(shù)列表商模。

示例

這是一個(gè)簡(jiǎn)單的使用構(gòu)造函數(shù)的例子:

// A simple constructor.
class MyClass {
   int x;

   // Following is the constructor
   MyClass(int i ) {
      x = i;
   }
}

你可以通過(guò)以下方法來(lái)調(diào)用構(gòu)造函數(shù)來(lái)實(shí)例化一個(gè)對(duì)象:

public class ConsDemo {

public static void main(String args[]) {
MyClass t1 = new MyClass( 10 );
MyClass t2 = new MyClass( 20 );
System.out.println(t1.x + " " + t2.x);
}
}
這將產(chǎn)生如下的結(jié)果:

10 20
可變長(zhǎng)參數(shù)

JDK1.5 能夠允許你傳遞可變長(zhǎng)的同一類(lèi)型的參數(shù)。用如下方法進(jìn)行聲明:

typeName... parameterName
方法聲明時(shí)蜘澜,你要在省略號(hào)前明確參數(shù)類(lèi)型施流,并且只能有一個(gè)可變長(zhǎng)參數(shù),并且可變長(zhǎng)參數(shù)必須是所有參數(shù)的最后一個(gè)鄙信。

示例

public class VarargsDemo {

   public static void main(String args[]) {
      // Call method with variable args  
      printMax(34, 3, 3, 2, 56.5);
      printMax(new double[]{1, 2, 3});
   }

   public static void printMax( double... numbers) {
   if (numbers.length == 0) {
      System.out.println("No argument passed");
      return;
   }

   double result = numbers[0];

   for (int i = 1; i <  numbers.length; i++)
      if (numbers[i] >  result)
      result = numbers[i];
      System.out.println("The max value is " + result);
   }
}

這將產(chǎn)生如下的結(jié)果:

The max value is 56.5
The max value is 3.0

課件代碼


//  class為:類(lèi)瞪醋,一個(gè).java文件里只能有一個(gè)公共類(lèi)(public class)
public class People{

   // 【屬性,實(shí)體變量,成員變量】
   int age;
   String color;

   /*
   
   1.通過(guò)方法的重載装诡,一個(gè)類(lèi)里可以有多個(gè)構(gòu)造函數(shù)
   2. 如果不寫(xiě)構(gòu)造函數(shù)银受,會(huì)默認(rèn)生成 最簡(jiǎn)單的構(gòu)造函數(shù)
      類(lèi)名(){
  
      }
    3.構(gòu)造函數(shù)需要注意:①方法名與類(lèi)名一樣,首字母大寫(xiě)
    ② 沒(méi)有返回值 ③可以傳若干參數(shù)(初始化對(duì)象用)
    4.構(gòu)造函數(shù)的作用就是 創(chuàng)建對(duì)象 用的 給初始值鸦采,
    */
   // 構(gòu)造函數(shù)
   People() {
      age = 10;
      color = "black";
   }
   // 方法的重載
   People(int a) {
      age = a;
      color = "white";
   }

   People(int a,String c){
    age = a;
    color = c;
   }

    /* 跳多高
      方法的修飾符 不是必須寫(xiě)的,取決于需要
    */
    void jump(int j){
        System.out.println("我可以跳:"+j+"米");

    }
    public static void main(String args[]) {

      // 定義一個(gè) 對(duì)象 【非常重要】.People是類(lèi),jhon jerry littleH 是對(duì)象宾巍,對(duì)象可以調(diào)用類(lèi)的【方法和屬性】
      People jhon = new People();
      // 通過(guò)方法的重載,調(diào)用People(int a) {...}
      People jerry = new People(20);

      People litleH = new People(23,"blue");

      litleH.jump(3);

      System.out.println(" litleH: "+litleH.age + " " + litleH.color);
      System.out.println(" jerry: "+jerry.age + " " + jhon.color);
      System.out.println(" jhon: "+jhon.age + " " + jhon.color);
   }

}
// 一個(gè).java 文件中可以有多個(gè)class,但是只能有一個(gè)public clss
 class Women{ 
  

}

class Men{

  
}


public class UserString{

    public static void main(String[] args) {
        
      UserString us = new UserString();
      int [] arrList = {19,3,22,28,32};
      int reslut = us.max(arrList);
      System.out.print(reslut);


    }

   /*
      function:比較兩個(gè)數(shù)的大小
      param: int x, int y
      return: int 比較結(jié)果 
    */
   public  int[] max(int[] arr){

     int max = arr[0];

     for (int x : arr) {
        
        if (x > max) {
           max = x;
        }
     }
     return max;

   }

}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末渔伯,一起剝皮案震驚了整個(gè)濱河市顶霞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌咱旱,老刑警劉巖确丢,帶你破解...
    沈念sama閱讀 221,635評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绷耍,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡鲜侥,警方通過(guò)查閱死者的電腦和手機(jī)褂始,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)描函,“玉大人崎苗,你說(shuō)我怎么就攤上這事∫ㄔⅲ” “怎么了胆数?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,083評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)互墓。 經(jīng)常有香客問(wèn)我必尼,道長(zhǎng),這世上最難降的妖魔是什么篡撵? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,640評(píng)論 1 296
  • 正文 為了忘掉前任判莉,我火速辦了婚禮,結(jié)果婚禮上育谬,老公的妹妹穿的比我還像新娘券盅。我一直安慰自己,他們只是感情好膛檀,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,640評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布锰镀。 她就那樣靜靜地躺著,像睡著了一般咖刃。 火紅的嫁衣襯著肌膚如雪泳炉。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,262評(píng)論 1 308
  • 那天僵缺,我揣著相機(jī)與錄音胡桃,去河邊找鬼踩叭。 笑死磕潮,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的容贝。 我是一名探鬼主播自脯,決...
    沈念sama閱讀 40,833評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼斤富!你這毒婦竟也來(lái)了膏潮?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,736評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤满力,失蹤者是張志新(化名)和其女友劉穎焕参,沒(méi)想到半個(gè)月后轻纪,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡叠纷,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,369評(píng)論 3 340
  • 正文 我和宋清朗相戀三年刻帚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涩嚣。...
    茶點(diǎn)故事閱讀 40,503評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡崇众,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出航厚,到底是詐尸還是另有隱情顷歌,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布幔睬,位于F島的核電站眯漩,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏麻顶。R本人自食惡果不足惜坤塞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,870評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望澈蚌。 院中可真熱鬧摹芙,春花似錦、人聲如沸宛瞄。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,340評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)份汗。三九已至盈电,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間杯活,已是汗流浹背匆帚。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,460評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留旁钧,地道東北人吸重。 一個(gè)月前我還...
    沈念sama閱讀 48,909評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像歪今,于是被迫代替她去往敵國(guó)和親嚎幸。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,512評(píng)論 2 359

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

  • 第5章 引用類(lèi)型(返回首頁(yè)) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類(lèi)型 使用基本類(lèi)型...
    大學(xué)一百閱讀 3,238評(píng)論 0 4
  • C++運(yùn)算符重載-下篇 本章內(nèi)容:1. 運(yùn)算符重載的概述2. 重載算術(shù)運(yùn)算符3. 重載按位運(yùn)算符和二元邏輯運(yùn)算符4...
    Haley_2013閱讀 1,445評(píng)論 0 49
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理寄猩,服務(wù)發(fā)現(xiàn)嫉晶,斷路器,智...
    卡卡羅2017閱讀 134,701評(píng)論 18 139
  • 每到夏天,姐妹們最歡喜的無(wú)非是穿上自己最喜歡的裙子替废、短褲箍铭,既彰顯了女性魅力,又很是涼爽椎镣。著裝上徹底的坡疼,很輕松的感覺(jué)...
    0061澳洲制造閱讀 212評(píng)論 0 0