学习内容
static关键字
- 静态属性是整个类共同持有的共享空间—方法区,任何对象的修改,都会影响其他的属性。
- 静态可以修饰属性和方法,称为静态属性(类属性)、静态方法(类方法)。静态成员是全类所有对象共享的成员,可以直接通过类名直接访问,类名.属性名。
- 静态代码块:仅在第一次类加载时执行一次。
今日作业
- 写出以下程序运行结果
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();
}
}
心得体会
随着学习的深入,越来越需要花费更多的精力,长风破浪会有时,直挂云帆济沧海,越努力越幸运,加油!