Java学习打卡Day16

学习内容

static关键字

  1. 静态属性是整个类共同持有的共享空间—方法区,任何对象的修改,都会影响其他的属性。
  2. 静态可以修饰属性和方法,称为静态属性(类属性)、静态方法(类方法)。静态成员是全类所有对象共享的成员,可以直接通过类名直接访问,类名.属性名
  3. 静态代码块:仅在第一次类加载时执行一次。

今日作业

  1. 写出以下程序运行结果
class MyClass{
	static int a;
	int b;
}

public class TestWork1 {

	public static void main(String[] args) {
		MyClass mc1 = new MyClass();
		MyClass mc2 = new MyClass();
		mc1.a = 100;
		mc1.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);
		
	}

}

参考答案:300 200 300 400
2. 以下代码错误地方

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 void m2(){
		System.out.println(a);//5
		System.out.println(b);//6
		fa();//7
		fb();//8
	}
}

5和7错误
3. 以下代码的运行结果

class MyClass2{
	static int count = 0;
	public MyClass2(){
		count++;
		System.out.println(count);
	}
}

public class TestWork3 {

	public static void main(String[] args) {
		MyClass2 mc1 = new MyClass2();
		MyClass2 mc2 = new MyClass2();
		MyClass2 mc3 = new MyClass2();
	}

}

结果:1 2 3
4. 以下代码的运行结果

class MyClass4{
	static int i = 10;
	static{
		i = 20;
		System.out.println("In Static");
	}
	public MyClass4(){
		System.out.println("MyClass()");
	}
	public MyClass4(int i){
		System.out.println("MyClass(int)");
		this.i = i;
	}
}

public class TestWork4 {

	public static void main(String[] args) {
		MyClass4 mc1 = new MyClass4();
		System.out.println(mc1.i);
		MyClass4 mc2 = new MyClass4(10);
		System.out.println(mc2.i);

	}

}

结果:
In Static
MyClass()
20
MyClass(int)
10
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 TestWork5 {

	public static void main(String[] args) {
		Super sup = new Sub();
		sup.m1();
		sup.m2();
		Sub sub = (Sub)sup;
		sub.m1();
		sub.m2();
	}

}

结果:
m1 in Super
m2 in Sub
m1 in Sub
m2 in Sub
6.以下哪些结论是正确的
在这里插入图片描述答案:ACDE
7. 设计一个类MyClass,为MyClass增加一个count属性,用来统计总共创建了多少个对象

class MyClass{
	static int count = 0;
	public MyClass(){
		count++;
		System.out.println(count);
	}
}
public class TestWork3 {
	public static void main(String[] args) {
		MyClass mc1 = new MyClass();
		MyClass mc2 = new MyClass();
		MyClass mc3 = new MyClass();
	}
}

心得体会

随着学习的深入,越来越需要花费更多的精力,长风破浪会有时,直挂云帆济沧海,越努力越幸运,加油!

发布了33 篇原创文章 · 获赞 3 · 访问量 920

猜你喜欢

转载自blog.csdn.net/qq_44952731/article/details/104485658