千锋Java&Day16课后作业

Static修饰符

1.(static属性)有如下代码:

class MyClass{
      static int a;   
      int b;
      }
      public class Test1{
      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 static void m2(){
System.out.println(a); //5
System.out.println(b); //6
fa(); //7
fb(); //8
}
}
请问哪些行会编译出错?
A. //1
B. //2
C. //3
D. //4
E. //5
F. //6
G. //7
H. //8

E G
注:静态方法不能访问非静态成员

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 = 10;
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(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 TestMain{
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
m3 in Sub 
m4 in Sub

注:静态方法不能重写
6.(static)以下哪些论述是正确的

A. 静态方法中不能调用非静态方法
B. 非静态方法中不能调用静态方法
C. 静态方法不能被覆盖 
D. 静态方法能够用类名直接调用 
E. 可以在不产生任何一个对象的情况下调用静态方法
F. 静态方法里可以使用 this

A C D E

15.(static)设计一个类 MyClass,为 MyClass 增加一个 count 属性,用来统计总共创建了多少个对象。

public class MyClass {
    private static int count = 0; 	    
    public MyClass(){ 		        
        count ++; 	  
    }     
    public int getCount(){ 		      
        return count;    
    }
} 

每个人生阶段都需要努力去扮好自己的角色,越努力越轻松,越坚强越幸运!加油!

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值