做题总结(一)

1.有关下述Java代码描述正确的选项是____。 

public class TestClass {
   private static void testMethod(){
        System.out.println("testMethod");
   }
   public static void main(String[] args) {
        ((TestClass)null).testMethod();
   }
}
A.编译不通过
B.编译通过,运行异常,报NullPointerException
C.编译通过,运行异常,报IllegalArgumentException
D.编译通过,运行异常,报NoSuchMethodException
E.编译通过,运行异常,报Exception
F.运行正常,输出testMethod
想法:第一:静态方法的调用可以直接使用“类.方法名”,因为静态方法在对象创建前就存在了,他的使用不依赖对象是否被创建。也就是说这道题目在main中直接“TestClass.testMethod()”也是可以的。
   第二:null可以被强制类型转换成任意类型的对象,也就是说如果testMethod方法是非静态的,那么在静态的main中可以通过((TestClass)null).testMethod()来调用该方法,编译通过,运行报错(NPE)。


2.该段程序输出结果是多少?
package algorithms.com.guan.javajicu; 
public class Inc { 
    public static void main(String[] args) { 
       Inc inc = new Inc(); 
       int i = 0; 
       inc.fermin(i); 
       i= i ++; 
       System.out.println(i);
    
    } 
    void fermin(int i){ 
       i++; 
    } 
}
结果:0.
想法:1.在java中使用了中间变量缓存机制,i=i++;的过程如下:
      temp=i;(右边的i)
      i=i+1;(右边的i)
      i=temp;(左边的i)
   所以输出是0.
  2.如果是i=++i,其过程如下:
      i=i+1;(右边的i)
      temp=i;(右边的i)
      i=temp;(左边的i)
    输出是 1.
  3.在C/C++中结果是不一样的。

3.选项中哪一行代码可以添加 题目中而不产生编译错误?
public abstract class MyClass {
     public int constInt = 5;
     //add code here
     public void method() {
     }
}

  A.public abstract void method(int a);

  B.constInt = constInt + 5;

  C.public int method();

  D.public abstract void anotherMethod() {}

想法:A是抽象方法,抽象类可以包含抽象方法,也可以不包含,虽然A 方法名是method,与题目中的方法同名,但是参数不同,是重载方法

    B 在类中不能constInt = constInt + 5;  方法中可以
    C 的方法名与题目中的方法名相同,返回值不能作为重载的依据
    D 抽象方法没有方法体
4.什么是方法的重载:
  答:方法的重载是指在同一个类中,方法的名字相同,但是方法的参数,参数的个数,返回值的类型不同。
    方法重写是指子类和父类的关系子类重写父类的方法,但是方法名,参数类型,参数个数必须相同。

5.
在类设计中,类的成员变量要求仅仅能够被同一package下的类访问,请问应该使用什么修饰词?
  答:
    不需要任何修饰词!!
6.该段代码的输出?
public class Spike
{
    public static void main(String[] args)
    {
        Counter a = new Counter();
        System.out.println(a.increment());
        System.out.println(a.anotherIncrement());
        Counter b = new Counter();
        System.out.println(b.increment());
    }
}
class Counter
{
    private static int count = 0;
    public int increment()
    {
        return count++;
    }
    public int anotherIncrement()
    {
        return ++count;
    }
}

答案:0,2,2

想法:1.count是静态变量,被所有对象共享,因此不管是a还是b都会对count的值产生改变。

    2.a.increment()执行之后,返回0,然后count值为1.

    3.a.anotherIncrement执行之后,返回2,count值为2

    4.b.increment执行之后,返回2,count值为3.

选项中哪一行代码可以添加 题目中而不产生编译错误?
1
2
3
4
5
6
public abstract class MyClass {
     public int constInt = 5;
     //add code here
     public void method() {
     }
}

正确答案: A   你的答案: D (错误)

public abstract void method(int a);
constInt = constInt + 5;
public int method();
public abstract void anotherMethod() {}

转载于:https://www.cnblogs.com/Rui-Jia/p/5494338.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值