C#高手来 谢谢

三、写出以下程序的运行结果(每题5分,共20分)
1.using System;
class Test
{ public static void Main()
{ int x = 5;
int y = x++;
Console.WriteLine(y);
y=++x;
Console.WriteLine(x);
} }
答案:

2.描述下列方法的功能。
Static int SA(int a,int b)
{ if (a>b)
return 1;
else if (a==b)
return 0;
else
return -1; }
答:

3.当使用new B()创建B的实例时,产生什么输出?
Using System;
class A
{ public A()
{ PrintFields(); }
public virtual void PrintFields() { }
}

class B : A
{ int x = 1;
int y;
public B()
{ y = -1;
PrintFields(); }
public override void PrintFields()
{ Console.WriteLine(“x={0},y={1}”, x, y); }
}

class Program
{ static void Main(string[] args)
{ B b = new B();
Console.Read();
} }
答案:

4. 写出下列方法的功能。
Static float FH()
{ float y=0,n=0;
int x = Convert.ToInt32(Console.ReadLine());
while (x!=-1)
{ n++; y+=x;
x = Convert.ToInt32(Console.ReadLine());
}
if (n==0)
return y;
else
return y/n;
}
答案:

1、static{}语句块执行的时机,即类被加载准确含义:
  (1)用Class.forName()显示加载的时候;
  (2)实例化一个类的时候,如将main()函数的内容改为:Test t=new Test();//这种形式其实和1相比,原理是相同的,都是显示的加载这个类,读者可以验证Test t=new Test();和Test t=(Test)Class.forName().newInstance();这两条语句效果相同。
  (3)调用类的静态方法的时候,如将main()函数的内容改为:Test.display();
  (4)调用类的静态变量的时候,如将main()函数的内容改为:System.out.println(Test.X);

  总体来说就这四种情况,但是我们特别需要注意一下两点:
  (1)调用类的静态常量的时候,是不会加载类的,即不会执行static{}语句块,读者可以自己验证一下(将main()函数的内容改为System.out.println(Test.Y);),你会发现程序只输出了一个200;(这是java虚拟机的规定,当访问类的静态常量时,如果编译器可以计算出常量的值,则不会加载类,否则会加载类)
  (2)用Class.forName()形式的时候,我们也可以自己设定要不要加载类,如将Class.forName("Test")改为 Class.forName("Test",false,StaticBlockTest.class.getClassLoader()),你会发现程序什么都没有输出,即Test没有被加载,static{}没有被执行。追问

直接给答案就好

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答
大家正在搜