『壹』 靜態static的函數調用的方式
在C語言中,可以用以下幾種方式調用函數:
1. 函數表達式:函數作為表達式中的一項出現在表達式中,清逗以函數返回值參與表達式的運算。這種方式要求函數是有返回值的。例如:z=max(x,y)是一個賦值表達式,把max的返回值賦予變數z。
2. 函數語句:函數調用的一般形式加上分號即構成函數語句。例如: printf (%d,a);scanf (%d,&b);都是以函數語句的方式調用函數。
3. 函數實參:函數作為另一個函數調用的實際參數出現。這種情況是把該函數的返回值作為實參進行傳送,因此要求該函數必須是有返回值的。例如: printf(%d,max(x,y)); 即是把max調用的返回值又作為printf函數的實參來使用的。在函數調用乎虧中還應該注意的一個問題是求值順序的問題。所謂求值順序是指對實參表中各量是自左至右使用呢,還是自右至左使用。對此,各系統的規定不一定相同。介紹printf 函數時已提到過,這里從函數調用的角度再強調一下。
【例】
main()
{
int i=8;
printf(%d
%d
%d
%d
,++i,--i,i++,i--);
}
如按照從右至左的順序求值。運行結果應為答頃賣:
8
7
7
8
如對printf語句中的++i,--i,i++,i--從左至右求值,結果應為:
9
8
8
9
應特別注意的是,無論是從左至右求值, 還是自右至左求值,其輸出順序都是不變的, 即輸出順序總是和實參表中實參的順序相同。由於Turbo C現定是自右至左求值,所以結果為8,7,7,8。上述問題如還不理解,上機一試就明白了。
『貳』 怎麼調用靜態方法
靜態方法不能訪問非靜態的實例變數和實例方法。實例方法可以訪問靜態成員和非靜態成員。
1在本來中直接調用靜態方法
2可以通過類名來調用該類的靜態方法
3通過實例調用靜態方法
// 外部類,不能是靜態的
public class OuterClass {
// 靜態方法,又稱為類方法,屬於Test類
public static void staticFun() {
}
// 非靜態方法,又稱為實例方法,屬於Test類的具體實例
public void nonStaticFun() {
}
// 靜態內部類,靜態類只能是內部類
public static class StaticInnerClass {
// 靜態方法,屬於StaticInnerClass類
public static void staticFun() {
}
// 非靜態方法,屬於StaticInnerClass類的實例
public void nonStaticFun() {
}
}
// 非靜態內部類,不能有靜態方法
public class NonStaticInnerClass {
// 非靜態方法,屬於NonStaticInnerClass的實例
public void nonStaticFun() {
}
}
// 測試代碼如下:
public static void main(String[] args) {
// 對於靜態方法,使用類直接訪問
OuterClass.staticFun();
StaticInnerClass.staticFun();
// 對於非靜態方法,需要使用類的實例訪問
new OuterClass().nonStaticFun();
new StaticInnerClass().nonStaticFun();
// 對於非靜態內部類,必須創建外部類後才能使用
OuterClass outerClass = new OuterClass();
NonStaticInnerClass nonStaticInnerClass = outerClass.new NonStaticInnerClass();
nonStaticInnerClass.nonStaticFun();
}
}
『叄』 靜態方法怎麼調用
C++中,若類的 方法 前加了static關鍵字,則該方法稱為靜態方法,反之為實例方法。那麼,靜態方法怎麼調用?
C#的類中可以包含兩種方法:靜態方法和非靜態方法。
使用了static 修飾符的方法為靜態方法,反之則是非靜態方法。
靜態方法是一種 特殊的成員方法,它不屬於類的某一個具體的實例,而是屬於類本身。
所以對靜態方法不需要 首先創建一個類的實例,而是採用類名.靜態方法的格式 。
1.static方法是類中的一個成員方法,屬於整個類,即不用創建任何對象也可以直接調用!
static內部只能出現static變數和其他static方法!而且static方法中還不能使用this....等關鍵字..因為它是 屬於整個類!
2.靜態方法效率上要比實例化高,靜態方法的缺點是不自動進行銷毀,而實例化的則可以做銷毀。
3.靜態方法和靜態變數創建後始終使用同一塊內存,而使用實例的方式會創建多個內存.
4.C#中的方法有兩種:實例方法,靜態方法. 類的方法代碼只有一份,它們的生命周期和類是一致的.實例方法是通過對象名調用的,靜態方法與類關聯而不是 與對象名關聯.
5.那麼在程序中什麼地方可以利用靜態欄位和靜態構造方法,通常適用於於一些不會經常變化而又頻繁使用的數 據,比如連接字元串,配置信息等,當滿足上面所 說的兩點時,進行一次讀取,以後就可以方便的使用了,同 時也節約了託管資源,因為對於靜態成員,一個靜態欄位只標識一個存儲位置。
對一個類無論創建了多少 個實 例,它的靜態欄位永遠都只有一個副本(副本我理解為只有一塊內存 靜態成員存在於內存,非靜態成員需要實例化才會分配內存,所以靜態成員不能訪問非靜態的成員..因為靜態成員 存在於內存,所以非靜態成員可以直接訪問類中靜態的成員.
公用的處理函數,使用靜態方法應該沒有問題..牽涉 到數據共享,靜態變數的函數要多考慮...靜態變數要小心使用..
靜態方法 原理就是共享代碼段 共享代碼段不會產生任何問題 因為代碼段都是給CPU作為"讀取"用的,除非你進行惡意"修改"運行時的代碼段 所以靜態方法是可以放心使用的
靜態變數 原理就是共享數據段 同上 只要沒有進行"寫入"操作就不會產生問題 但是數據通常都是用於讀和寫 所以靜態變數要注意使用
下面是一個使用靜態方法的例子
復制代碼代碼如下:
class Class1 {
[STAThread]
static void Main(string[] args)
{
int i = MyClass.Add(3,5); //調用靜態方法
Console.WriteLine(i);
}
}
class MyClass
{
public static int Add(int x,int y )
{ return x + y ;
}
『肆』 靜態方法的方法使用
靜態方法與靜態變數一樣,屬於類本身,而不屬於那個類的一個對象。調用一個被定義為static的方法,可以通過在它前面加上這個類的名稱,也可以像調用非靜態方法一樣通過類對象調用。
實例方法必須通過類的實例來使用。實例方法可以使用類的非靜態成員,也可以使用類的靜態成員。
類的靜態方法,靜態變數是在類裝載的時候裝載的。但是要特別注意,類的靜態變數是該類的對象所共有的,即是所有對象共享變數。所以建議盡量少用靜態變數。盡量在靜態方法中使用內部變數。 其中static關鍵字即表示靜態的。聲明靜態方法的語法如下:
<訪問修飾符>static返回類型 方法名(參數列表)
{//方法體} 靜態方法與實例方法唯一不同的,就是靜態方法在返回類型前加static關鍵字。靜態方法的調用有兩種途徑:
(1)通過類的實例對象去調用
調用格式為: 對象名.方法名
(2) 通過類名直接調用
調用格式為: 類名::方法名 我們在使用時要注意:
靜態方法只能訪問類的靜態成員,不能訪問類的非靜態成員;
非靜態方法可以訪問類的靜態成員,也可以訪問類的非靜態成員;
靜態方法既可以用實例來調用,也可以用類名來調用。 #include<iostream>using namespace std;
class CStaticTest{public:CStaticTest(int a){this->a = a;}~CStaticTest(){}
static int add(CStaticTest& c1, CStaticTest& c2){return c1.a + c2.a;}
private:int a;};
int main(){CStaticTest tmp1(1);CStaticTest tmp2(2);int sum1 = tmp1.add(tmp1, tmp2);int sum2 = CStaticTest::add(tmp1, tmp2);
cout << sum1 << endl;cout << sum2 << endl;return 0;} 1. 有靜態屬性的類,一般會定義靜態方法。
2. 沒有屬性的類,一般會定義靜態方法,這樣在使用時,通過類名::方法名即可調用,
而不用先定義對象,再調用,這樣可以省去一行代碼。
『伍』 c++怎樣調用類的靜態方法
1、靜態數據成員在定義或說明時前面加關殲橋鍵字static。//靜態變數的定義
2、靜態成員初始化辯帆與一般數據成員初始化不同。靜態數據氏灶猛成員初始化的格式如下:
<數據類型><類名>::<靜態數據成員名>=<值> //靜態變數的初始化
『陸』 c++怎樣調用類的靜態方法
靜態方法是不用對象調用的,Mouse::hide()就行了。
『柒』 靜態方法怎麼調用
先在eclipse中創建一個Java工程文件。並在src下創建demo包,在demo包下創建類DemoClass。創建後的工程目錄如圖。
02
接下來在DemoClass類中添加一個靜態屬性和靜態方法。被static修飾的屬性或方法就是靜態的。
03
對於靜態方法的調用,可以使用調用非靜態方法的方式去調用,即創建一個類的對象,然後再調用靜態方法,具體代碼如下圖。
04
編輯好代碼後,通過java應用程序的方式運行DemoClass.java文件,運行結果如圖2,說明成功調用了靜態方法。
05
不過,上面調用靜態方法的方式是不推薦的。如果使用上面的方式調用靜態方法,在eclipse中,你可以看到下圖的警告,大概的意思是要你使用正確的調用靜態方法的方式去調用該方法。
06
對於靜態方法,正確調用的方式是直接通過類名來調用的。用調用例子中的staticFunction為例,正確調用該方法的代碼為
DemoClass.staticFunction。當用類來調用靜態方法時,可以看到eclipse就不報警告了。
07
再次運行該文件,運行結果和剛剛一樣,說明也成功調用了靜態方法。
08
多說一句,對於靜態屬性的調用,也是用類名+點+靜態屬性的方式來調用的,正常都不會先創建一個對象,然後再通過對象來調用靜態屬性。
『捌』 一個類裡面怎樣在一個方法裡面調用另一個方法 C
java類有兩種方法一種是類方法就是用static修飾的,一種是實例方法,就是沒有static修飾的方法。類方法可以同時類名.方法名的方式調用。而實例方法必須先生存類的實例在通過實例.方法名的方式調用。例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class MethodCall
{
public static void main(String[] args)
{
Test.sayStatic();
Test test = new Test();
test.sayInstance();
}
}
class Test
{
public static void sayStatic()
{
System.out.println("這是一個靜態方法。");
}
public void sayInstance()
{
System.out.println("這是一個實例方法。");
}
}
『玖』 如何調用內部類中的靜態方法
一般來說,外部類調用內部類的方法分為以下幾種情況:
1.使用static可以聲明一個內部類, 可以直接在外部調用
// 定義外部類
class Outer
{
// 定義外部類的私有屬性
private static String info = "hello world";
// 使用static定義內部類為外部類
static class Inner
{
// 定義內部類的方法
public void print()
{
// 直接訪問外部類的私有屬性
System.out.println(info);
}
};
// 定義外部類的方法
public void fun()
{
// 通過內部類的實例化對象調用方法
new Inner().print();
}
};
public class InnerClassDemo03
{
public static void main(String args[])
{
// 調用外部類的fun()方法
new Outer.Inner().print() ;
}
};
2.不使用statc聲明一個內部類 ,使外部調用
//定義外部類
class Outer
{
//定義外部類的私有屬性
private String info = "hello world";
//定義內部類
class Inner
{
//定義內部類的方法
public void print()
{
//直接訪問外部類的私有屬性
System.out.println(info);
}
};
//定義外部類的方法
public void fun()
{
//通過內部類的實例化對象調用方法
new Inner().print();
}
};
『拾』 C#中如何調用靜態類中的構造函數
•靜帶運態構造函數既沒有訪問修飾符,也沒有參數。
•如果沒有編寫靜態構造函數,而這時類中包含帶有初始值設定的靜態欄位,那麼編譯器會自動生成默認的靜態構造函數扮和。
•在創建第一個類實例或任何靜態成員被引用時,.NET將自動調用靜態構造函數來初始化類,也就是說我們無法直接調用靜態構造函數,也就無法控制什麼時候執行靜態構造函數了。
•如果類中包含用來開始執行的 Main 方法,則該類的靜態構造函數將在調用 Main 方法之前執行。
•如果類中的靜態欄位帶有初始化,則靜態欄位的初始化語句將在靜態構造函數之前運行。
•一個類只能有一個靜態構造函數。
•無參數的構造函數可以與靜態構造函數共存。盡管參數列表相同,但一個廳行盯屬於類,一個屬於實例,所以不會沖突。
•最多隻運行一次。
•靜態構造函數不可以被繼承。
•示例代碼如下: