国产宅男网站在线|亚洲A级性爱免费视频|亚洲中精品级在线|午夜福利AA毛

  • <dd id="gf5jf"><th id="gf5jf"></th></dd>

    <cite id="gf5jf"><label id="gf5jf"></label></cite>
  • <div id="gf5jf"><listing id="gf5jf"></listing></div>
    學(xué)習(xí)啦 > 知識大全 > 知識百科 > 百科知識 > 類方法和實(shí)例方法的區(qū)別有哪些

    類方法和實(shí)例方法的區(qū)別有哪些

    時(shí)間: 映芳735 分享

    類方法和實(shí)例方法的區(qū)別有哪些

      我們已經(jīng)知道類體中的方法分為實(shí)例方法和類方法兩種,用static修飾的是類方法。下面小編跟大家講講類方法和實(shí)例方法的區(qū)別,一起來看看。

      類方法和實(shí)例方法的區(qū)別

      當(dāng)一個(gè)類創(chuàng)建了一個(gè)對象后,這個(gè)對象就可以調(diào)用該類的方法。當(dāng)類的字節(jié)碼文件被加載到內(nèi)存時(shí),類的實(shí)例方法不會被分配入口地址,當(dāng)該類創(chuàng)建對象后,類中的實(shí)例方法才分配入口地址,從而實(shí)例方法可以被類創(chuàng)建的任何對象調(diào)用執(zhí)行。

      需要注意的是,當(dāng)我們創(chuàng)建第一個(gè)對象時(shí),類中的實(shí)例方法就分配了入口地址,當(dāng)再創(chuàng)建對象時(shí),不再分配入口地址,也就是說,方法的入口地址被所有的對象共享,當(dāng)所有的對象都不存在時(shí),方法的入口地址才被取消。

      對于類中的類方法,在該類被加載到內(nèi)存時(shí),就分配了相應(yīng)的入口地址。從而類方法不僅可以被類創(chuàng)建的任何對象調(diào)用執(zhí)行,也可以直接通過類名調(diào)用。類方法的入口地址直到程序退出才被取消。

      類方法在類的字節(jié)碼加載到內(nèi)存時(shí)就分配了入口地址,因此,Java語言允許通過類名直接調(diào)用類方法,而實(shí)例方法不能通過類名調(diào)用。

      在講述類的時(shí)候我們強(qiáng)調(diào)過,在Java語言中,類中的類方法不可以操作實(shí)例變量,也不可以調(diào)用實(shí)例方法,這是因?yàn)樵陬悇?chuàng)建對象之前,實(shí)例成員變量還沒有分配內(nèi)存,而且實(shí)例方法也沒有入口地址。

      下面小編給大家舉個(gè)例子說明一下兩種方法的區(qū)別

      class A

      { int x,y;

      static float f(int a){}

      float g(int x1,int x2){}

      }

      class B

      { public static void main(String args[])

      { A a1=new A();

      A.f(2,3); //合法。

      a1.f(2,4); //合法。

      a1.g(2,5); //合法。

      A.g(3,2); //非法。

      }

      }

      實(shí)例方法的介紹

      實(shí)例方法也叫做對象方法。

      類方法是屬于整個(gè)類的,而實(shí)例方法是屬于類的某個(gè)對象的。

      由于類方法是屬于整個(gè)類的,并不屬于類的哪個(gè)對象,所以類方法的方法體中不能有與類的對象有關(guān)的內(nèi)容。即類方法體有如下限制:

      (1) 類方法中不能引用對象變量;

      (2) 類方法中不能調(diào)用類的對象方法;

      (3) 在類方法中不能使用super、this關(guān)鍵字。

      (4)類方法不能被覆蓋。

      如果違反這些限制,就會導(dǎo)致程序編譯錯(cuò)誤。

      與類方法相比,對象方法幾乎沒有什么限制:

      (1) 對象方法中可以引用對象變量,也可以引用類變量;

      (2) 對象方法中可以調(diào)用類方法;

      (3) 對象方法中可以使用super、this關(guān)鍵字。

      在程序設(shè)計(jì)中,一些通用的、公用型的方法與類的對象無關(guān),因此常常被作為類方法實(shí)現(xiàn)。如Java類庫中Math類,其中多數(shù)的數(shù)學(xué)運(yùn)算操作都被定義成靜態(tài)方法。因此,可以使用類方法把一些通用的、公用型的方法放在合適的類中,從而很好地將它們組織起來。應(yīng)用程序中的主方法main就是類方法。

      例如:

      class Clerk {

      int c_ClerkNo;//職員號

      String c_ClerkName;//職員姓名

      double c_ClerkSalary;//工資

      static int c_NextClerkNo=1000;//下一個(gè)職員號

      static double c_LowSalary=280;//例4-11

      public Clerk(String name,double salary) {

      c_ClerkNo=++c_NextClerkNo;

      // c_ClerkNo=c_NextClerkNo++;

      c_ClerkName=new String(name);

      // c_ClerkName=name;

      c_ClerkSalary=salary;

      }

      }

      public class InstanceClerk

      {

      public static void main(String[] args)

      {

      Clerk objclerk1=new Clerk("張三",892.5);

      Clerk objclerk2=new Clerk("李四",1025.8);

      String aName=new String("王五");

      Clerk objclerk3=new Clerk(aName,2000);

      System.out.println("姓名:"+objclerk1.c_ClerkName+"編號:"+objclerk1.c_ClerkNo+"工資:"+objclerk1.c_ClerkSalary);

      System.out.println("姓名:"+objclerk2.c_ClerkName+"編號:"+objclerk2.c_ClerkNo+"工資:"+objclerk2.c_ClerkSalary);

      System.out.println("姓名:"+objclerk3.c_ClerkName+"編號:"+objclerk3.c_ClerkNo+"工資:"+objclerk3.c_ClerkSalary);

      System.out.println("最低工資:職員1="+objclerk1.c_LowSalary);

      System.out.println("最低工資:職員2="+objclerk2.c_LowSalary);

      Clerk.c_LowSalary=330;

      System.out.println("提高以后");

      System.out.println("最低工資:職員1="+objclerk1.c_LowSalary);

      System.out.println("最低工資:職員2="+objclerk2.c_LowSalary);

      }

      }

      你可以參考這個(gè)源程序,然后自己將注釋的語句去掉注釋等等,運(yùn)行一下就會明白的。

      Java中string類的方法

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

      String(byte[ ] bytes):通過byte數(shù)組構(gòu)造字符串對象。

      String(char[ ] value):通過char數(shù)組構(gòu)造字符串對象。

      String(Sting original):構(gòu)造一個(gè)original的副本。即:拷貝一個(gè)original。

      String(StringBuffer buffer):通過StringBuffer數(shù)組構(gòu)造字符串對象。

      例如:

      byte[] b = {'a','b','c','d','e','f','g','h','i','j'};

      char[] c = {'0','1','2','3','4','5','6','7','8','9'};

      String sb = new String(b); //abcdefghij

      String sb_sub = new String(b,3,2); //de

      String sc = new String(c); //0123456789

      String sc_sub = new String(c,3,2); //34

      String sb_copy = new String(sb); //abcdefghij

      System.out.println("sb:"+sb);

      System.out.println("sb_sub:"+sb_sub);

      System.out.println("sc:"+sc);

      System.out.println("sc_sub:"+sc_sub);

      System.out.println("sb_copy:"+sb_copy);

      輸出結(jié)果:sb:abcdefghij

      sb_sub:de

      sc:0123456789

      sc_sub:34

      sb_copy:abcdefghij


    猜你感興趣:

    1.幾種提高記憶能力的方法

    2.家務(wù)活的種類及分類方法有什么

    3.ajax調(diào)用java方法

    4.曇花的養(yǎng)殖方法和注意事項(xiàng)

    5.創(chuàng)業(yè)類型和案例

    537061