類方法和例項方法的區別有哪些
我們已經知道類體中的方法分為例項方法和類方法兩種,用static修飾的是類方法。下面小編跟大家講講類方法和例項方法的區別,一起來看看。
類方法和例項方法的區別
當一個類建立了一個物件後,這個物件就可以呼叫該類的方法。當類的位元組碼檔案被載入到記憶體時,類的例項方法不會被分配***地址,當該類建立物件後,類中的例項方法才分配***地址,從而例項方法可以被類建立的任何物件呼叫執行。
需要注意的是,當我們建立第一個物件時,類中的例項方法就分配了***地址,當再建立物件時,不再分配***地址,也就是說,方法的***地址被所有的物件共享,當所有的物件都不存在時,方法的***地址才被取消。
對於類中的類方法,在該類被載入到記憶體時,就分配了相應的***地址。從而類方法不僅可以被類建立的任何物件呼叫執行,也可以直接通過類名呼叫。類方法的***地址直到程式退出才被取消。
類方法在類的位元組碼載入到記憶體時就分配了***地址,因此,Java語言允許通過類名直接呼叫類方法,而例項方法不能通過類名呼叫。
在講述類的時候我們強調過,在Java語言中,類中的類方法不可以操作例項變數,也不可以呼叫例項方法,這是因為在類建立物件之前,例項成員變數還沒有分配記憶體,而且例項方法也沒有***地址。
下面小編給大家舉個例子說明一下兩種方法的區別
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***; //非法。
}
}
例項方法的介紹
例項方法也叫做物件方法。
類方法是屬於整個類的,而例項方法是屬於類的某個物件的。
由於類方法是屬於整個類的,並不屬於類的哪個物件,所以類方法的方法體中不能有與類的物件有關的內容。即類方法體有如下限制:
***1*** 類方法中不能引用物件變數;
***2*** 類方法中不能呼叫類的物件方法;
***3*** 在類方法中不能使用super、this關鍵字。
***4***類方法不能被覆蓋。
如果違反這些限制,就會導致程式編譯錯誤。
與類方法相比,物件方法幾乎沒有什麼限制:
***1*** 物件方法中可以引用物件變數,也可以引用類變數;
***2*** 物件方法中可以呼叫類方法;
***3*** 物件方法中可以使用super、this關鍵字。
在程式設計中,一些通用的、公用型的方法與類的物件無關,因此常常被作為類方法實現。如Java類庫中Math類,其中多數的數學運算操作都被定義成靜態方法。因此,可以使用類方法把一些通用的、公用型的方法放在合適的類中,從而很好地將它們組織起來。應用程式中的主方法main就是類方法。
例如:
class Clerk {
int c_ClerkNo;//職員號
String c_ClerkName;//職員姓名
double c_ClerkSalary;//工資
static int c_NextClerkNo=1000;//下一個職員號
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***;
}
}
你可以參考這個源程式,然後自己將註釋的語句去掉註釋等等,執行一下就會明白的。
Java中string類的方法
一、建構函式
String***byte[ ] bytes***:通過byte陣列構造字串物件。
String***char[ ] value***:通過char陣列構造字串物件。
String***Sting original***:構造一個original的副本。即:拷貝一個original。
String***StringBuffer buffer***:通過StringBuffer陣列構造字串物件。
例如:
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***;
輸出結果:
sb_sub:de
sc_sub:34
- 類方法和例項方法的區別有哪些
- 有關描寫朋友的英語作文
- 痛經有什麼方法緩解疼痛
- 香港寶蓮禪寺導遊詞
- 護士個人年終工作總結精選範文
- 中考語文閱讀答題技巧及解答高分策略
- 養生煲湯食譜大全
- 小學五年級英語下冊教學工作總結
- 白帶有股腥味怎麼回事
- 雨中情一年級作文
- 冬天運動有哪些注意事項
- 關於財富的英語諺語
- 八年級下冊英語人教版作文
- 英國哪個大學留學學費費用較低
- 如何跟老公說道歉的話
- 可愛的暱稱女生唯美
- 簡版汽車抵押合同範本
- 大學生創業培訓的心得體會3篇
- 唐姓女孩優雅有內涵的名字
- 因努力而成功的作文優秀範文
- 康熙字典五行屬金的字
- 康熙字典五行屬木的字
- 康熙字典五行屬水的字
- 康熙字典五行屬火的字
- 康熙字典五行屬土的字