作为一个真正的程序员,首先应该尊重编程,热爱你所写下的程序,他是你的伙伴,而不是工具。
今天学习了静态属性、静态方法、类加载和静态代码块。
明天继续努力,和对抗疫情的医护工作一样,再难也不放弃。
1.输出代码运行结果
public class TestMain {
public static void main(String[] args) {
MyClass mc1 = new MyClass();
MyClass mc2 = new MyClass();
mc1.a = 100;
mc2.b = 200;
mc2.a = 300;
mc2.b = 400;
System.out.println(mc1.a);
System.out.println(mc1.b);
System.out.println(mc2.a);
System.out.println(mc2.b);
}
}
class MyClass{
static int a;
int b;
}
运行结果:
300
200
300
400
---------------------------------------------------------------------------------
2.以下代码哪些行会编译出错
public class MyClass {
int a;
static int b;
void fa() {
}
static void fb() {
}
public void m1() {
System.out.println(a);//1
System.out.println(b);//2
fa();//3
fb();//4
}
public static void m2() {
System.out.println(a);//5
System.out.println(b);//6
fa();//7
fb();//8
}
}
答案://5、//7出错,静态方法不能访问非静态成员
---------------------------------------------------------------------------------
3.输出代码运行结果
class MyClass{
static int count = 0;
public MyClass() {
count++;
System.out.println(count);
}
}
public class TestMain {
public static void main(String[] args) {
MyClass mc1 = new MyClass();
MyClass mc2 = new MyClass();
MyClass mc3 = new MyClass();
}
}
运行结果:
1
2
3
---------------------------------------------------------------------------------
4.输出代码运行结果
class MyClass{
static int i=0;
static {
i=20;
System.out.println("In Static");
}
public MyClass() {
System.out.println("MyClass()");
}
public MyClass(int i) {
System.out.println("MyClass(int)");
this.i = i;
}
}
public class TestMain {
public static void main(String[] args) {
MyClass mc1 = new MyClass();
System.out.println(mc1.i);
MyClass mc2 = new MyClass();
System.out.println(mc2.i);
}
}
运行结果:
In Static
MyClass()
20
MyClass()
20
---------------------------------------------------------------------------------
5.输出代码运行结果
class Super{
public static void m1() {
System.out.println("m1 in Super");
}
public void m2() {
System.out.println("m2 in Super");
}
}
class Sub extends Super{
public static void m1() {
System.out.println("m1 in Sub");
}
public void m2() {
System.out.println("m2 in Sub");
}
}
public class TestMain {
public static void main(String[] args) {
Super sup = new Sub();
sup.m1();
sup.m2();
Sub sub = new Sub();
sub.m1();
sub.m2();
}
}
运行结果:
m1 in Super
m2 in Sub
m1 in Sub
m2 in Sub
---------------------------------------------------------------------------------
6.以下哪些是正确的
A.静态方法中不能调用非静态方法 (正确)
B.非静态方法中不能调用静态方法 (错误,可以调用)
C.静态方法不能被覆盖 (正确)
D.静态方法能够用类名直接调用 (正确)
E.可以在不产生任何一个对象的情况下调用静态方法 (正确)
F.静态方法可以使用this (错误,this,super都不能用)
---------------------------------------------------------------------------------
15.设计一个MyClass类,为MyClass类增加一个count属性,用来统计总共创建多少个对象
class MyClass{
static int count;
public MyClass() {
count++;
}
}
public class TestMain {
public static void main(String[] args) {
MyClass m1 = new MyClass();
MyClass m2 = new MyClass();
MyClass m3 = new MyClass();
MyClass m4 = new MyClass();
System.out.println("总共创建"+MyClass.count+"个对象");
}
}