‘壹’ 静态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 方法之前执行。
•如果类中的静态字段带有初始化,则静态字段的初始化语句将在静态构造函数之前运行。
•一个类只能有一个静态构造函数。
•无参数的构造函数可以与静态构造函数共存。尽管参数列表相同,但一个厅行盯属于类,一个属于实例,所以不会冲突。
•最多只运行一次。
•静态构造函数不可以被继承。
•示例代码如下: