Java static关键字练习题

相关基础在Java基础(static关键字)

1.下列代码输出的结果是什么?( )

public class Test {
    public int aMethod( ) {
        static int i = 0;
        i++;
        return i;
    }
    public static void main (String args[]) {
        Test test = new Test();
        test.aMethod();
        int j = test.aMethod();
        System.out.println(j);
    }
}

A. 0 B. 1 C. 2 D.编译失败

答案:D

分析:static不能修饰局部变量

2.以下代码的输出结果是什么?( )

class Base {
    Base() { 
        System.out.print(“Base”); 
    }
}
public class Alpha extends Base {
    public static void main( String[] args ) {
        new Alpha(); 
        new Base();
    }
}

A. Base B. Base Base C. 编译失败. D. 代码运行但没有输出. E. 运行时抛出异常

答案:B

分析:先扫描main方法所在类Alpha,发现Alpha继承Base,先去加载Base类,未发现Base类有继承和static代码块,回过来加载Alpha类,未发现static代码块;此时main方法入栈,执行main方法,先创建Alpha对象,加载Alpha类前先加载其父类,输出Base;继续创建Base对象,输出Base;所以结果为Base Base

3.根据下面的代码,String s = null;会抛出NullPointerException异常的有( )。

A) if( (s!=null) & (s.length()>0) )
B) if( (s!=null) && (s.length()>0) )
C) if( (s==null) | (s.length()==0) )
D) if( (s==null) || (s.length()==0) )

答案:AC

分析:&&和||存在短路行为,&&在前者为false时不再继续执行后边内容,||在前者为true为true时不再继续执行后边内容;而&和|没有短路行为,会继续执行后边内容;A选项中前者已为false,会继续执行后者产生异常,C选项中在前者已经为true时会继续执行后者产生异常,因此选择AC

4.在以下哪个情况下,你会使用static方法?

A. 当你需要一个方法能够访问类的非静态成员时
B. 当你需要一个方法不需要创建类的实例就能被调用时
C. 当你需要覆盖(Override)父类的方法时
D. 当你需要确保一个方法被同步执行时

答案:B

分析:static所修饰的变量方法可以直接被类所调用

5.以下关于static代码块的说法哪个是错误的?

A. static代码块在类加载到JVM时执行
B. 一个类中可以有多个static代码块,它们按照在类中出现的顺序执行
C. static代码块在每次创建类的实例时都会执行
D. static代码块通常用于初始化静态变量

答案:C

分析:静态代码块只在类加载到JVM时执行一次,而不是每次创建类的实例时执行。

6.以下哪个选项正确地展示了如何使用static关键字来定义一个静态变量和一个静态方法?

A.
class MyClass {  
  static int myVariable = 10;  
  static void myMethod() {  
    System.out.println("Hello from static method");  
  }  
}
B.
static class MyClass { 
  int myVariable = 10;  
  void myMethod() {  
    System.out.println("Hello"); 
  }  
}
C.
class MyClass {  
  int myVariable = 10;  
  static void myMethod() {  
    System.out.println("Hello from static method");  
  }  
}
D.
class MyClass {  
  static int myVariable = 10;  
  void myMethod() {  
    System.out.println("Hello from non-static method");  
  }  
}

答案:A

分析:A选项正确

           B选项中,static不能直接用于修饰类

           C选项中,未定义静态变量,不符合题意

           D选项中,未定义静态方法,不符合题意

  • 13
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值