java考试题第二周

1,下列定义的变量名、类名是否合情合理,请说明理由

private String a;合理但不合法,成员变量a匿名不规范

public class b{}不合法,类名首字母要大写

1,下列代码在一个类中的定义是否合法

    public void print(int i) {

        ...

    }

    public int print(double f) {

        ...

    }

合法:就是方法名相同,方法参数的个数和类型不同,通过个数和类型的不同来区分不同的函数;

方法的重载跟返回值类型和修饰符无关,Java的重载是发生在本类中的,重载的条件实在本类中有多个方法名相同,

扫描二维码关注公众号,回复: 2015196 查看本文章

但参数列表不同(可能是,参数个数不同参数类型不同)跟返回值无关;

 
2,以下代码执行结果为:

    {

    char p = 'p';

    int num=0;

     String searchMe = "peter pip······er picked a peck of pickled peppers";

     for(int i =0;i<searchMe.length();i++){

             if(searchMe.charAt(i) != p){

                return;

     return是使整个函数返回的,后面的不管是循环里面还是循环外面的都不执行
  }

         num ++;

     }

     System.out.println("总共出现了"+num+"次的p");

}

4,输出结果为:

public class VariableDemo {

    private Integer age=4;

    public void print(){

     this.age= 23;

     Integer age = 3;

     System.out.println(age);

    }

public static void main(String[] args) {

    new VariableDemo().print();

}

}

 答案为:3


5,下面说法是否正确

 1.  抽象类中可以包含非抽象的普通方法,接口中的方法必须是抽象的,不能有非抽象的普通方法(正确)

  2. abstract class在Java语言中体现了一种继承关系,要想使得继承关系合理,父类和派生类之间必须存在"is-a"关系,即父类和派生类在概念本质上应该是相同的。(正确)

   3.对于interface来说则不然,并不要求interface的实现者和interface定义在概念本质上是一致的, 仅仅是实现了interface定义的契约而已。正确


6,代码书写工厂模式

public abstract class INoodles {
     /**
     * 描述每种面条啥样的
     */
String name;

public abstract void desc();

}

public class LzNoodles extends INoodles {
    @Override
    public void desc() {
        System.out.println("兰州拉面 上海的好贵 家里才5 6块钱一碗");
    }

}

public class PaoNoodles extends INoodles {
    @Override
    public void desc() {
        System.out.println("泡面好吃 可不要贪杯");
    }
}

 public class GankouNoodles extends INoodles {
    @Override
    public void desc() {
        System.out.println("还是家里的干扣面好吃 6块一碗");
    }

}

public class SimpleNoodlesFactory {
    public static final int TYPE_LZ = 1;//兰州拉面
    public static final int TYPE_PM = 2;//泡面
    public static final int TYPE_GK = 3;//干扣面
    public static INoodles createNoodles(int type) {
        switch (type) {
            case TYPE_LZ:
                return new LzNoodles();
            case TYPE_PM:
                return new PaoNoodles();
            case TYPE_GK:
            default:
                return new GankouNoodles();
        }
    }

}

public static void main(String[] args){

         INoodles    noodle=SimpleNoodlesFactory.createNoodles(SimpleNoodlesFactory.TYPE_LZ);

        noodle.desc()
}

7,String是否可以被继承?为什么?

 不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。

8,接口与抽象类的区别在哪里?共同点在哪里?

相同点:     (1) 都可以被继承      (2) 都不能被实例化       (3) 都可以包含方法声明      (4) 派生类必须实现未实                          现的方法  

区 别:     1.接口只有定义,其方法不能再接口中实现,只有实现接口的类才能实现接口中定义的方    法,而                              抽象类的方法可以再抽象类   中被实现。

                        2.接口需要用implements实现,抽象类只能被继承(extends)。

                        3.设计理念不同,接口是"has - a ",抽象类是"is -a "

                       4.抽象类可以有静态方法和静态代码块等,接口不可以。

                       5.接口没有构造方法,抽象类可以有构造方法。


为了加深记忆,下面我举了一个例子

public interface AnimalInteeface {

//在接口中定义的变量 为常量 必须初始化 简写的形式 
String NAME ="elephent";
//标准的定义方式  常量的名字一般定义为大写

final static String NAMES="elephont";


public void shout();//不能用{}方法体括号,要不然会报错
public void friendly();

}

public class ButterFly implements AnimalInteeface{

      /**

         使用接口必须将方法方法全部覆盖一遍

       */

@Override
public void shout() {

System.out.println("蝴蝶叫....");
}

@Override

public void friendly() {

            System.out.println("动物是人类的朋友....)

}

pubic static void main(String[] args){

    ButterFly fly=new ButterFly();//创建实例化对象

    fly.shout();//调用方法

    fly.friendly()

9,说说你常见的异常,以及解决方式。

1. java.lang.nullpointerexception(空指针)
2. java.lang.arrayindexoutofboundsexception(数组下标越界)


10,补全下面代码

    {

        String date = "2018-07-05 16:01:23";

        DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

        //补全代码

       Date   parseDate=df.parse(date);

 

     System.out.println(parseDate);

    }

   

    {

long currentTimeMillis = System.currentTimeMillis();

    Date date = new Date(currentTimeMillis);

    //将日期格式化为String

     DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); \

    //补全代码

     String    formatDate=df .format(date);

     System.out.println("经过处理过的日期"+formatDate);

    }

猜你喜欢

转载自blog.csdn.net/weixin_39944884/article/details/80948628