NowCoder-Java-Note(一)

作者: 路卡利欧Mega | 来源:发表于2017-12-04 08:28 被阅读26次

    一、 关于抽象类叙述正确的是? (B)

    A.抽象类不能实现接口
    B.抽象类必须有“abstract class”修饰
    C.抽象类必须包含抽象方法
    D.抽象类也有类的特性,可以被实例化

    答案:B

    解析:
    • A.抽象类是可以实现接口的,而且抽象类也可以继承自抽象类
    • B.对
    • C.抽象类指有abstract修饰的class,其可以包含抽象方法,也可以不包含
    • D.抽象类和接口都是不能被实例化的,只有具体的类才可以被实例化
    interface A{
        public void oneFun();
    }
    //抽象类可以实现接口
    abstract class B implements A{
        public void twoFun(){}
    }
    //抽象类可以继承抽象类
    abstract class C extends B{
            
    }
    public class Test01 {
        public static void main(String[] args) {
            //尝试实例化抽象类,报错
            B b = new B();
        }
    }
    

    二、 下列说法正确的有(A)

    A.数组是一种对象
    B.数组属于一种原生类
    C.int number=[]={31,23,33,43,35,63}
    D.数组的大小可以任意改变

    解析:
    • java眼中,万物皆为对象,数组自然是对象
    • 原生类是指Java中,数据类型分为基本数据类型(或叫做原生类、内置类型)和引用数据类型。
    • java中的数组的定义就是相同类型,固定长度的一组数据,一旦被初始化,长度不可更改。

    三、 在java中,已定义两个接口B和C,要定义一个实现这两个接口的类,语句为:

    class A implements B,C

    四、 指出下来程序运行的结果是:

    public class Example {
        String str = new String("good");
        char[] ch = {'a','b','c'};
        public static void main(String[] args) {
            Example ex = new Example();
            ex.change(ex.str,ex.ch);
            System.out.print(ex.str + " and ");
            System.out.println(ex.ch);
        }
        private void change(String str, char[] ch) {
            str = "test ok";
            ch[0] = 'g';
        }
    }
    

    结果:good and gbc

    • 因为String是被final修饰的类,所以本身的内容是不会改变的,相当于基本数据类型的值传递,在changge方法中给str赋值了“test”,相当于重新创建了一个string类型的变量.

    五、 Java 语言用以下哪个类来把基本类型数据封装为对象()

    A.包装类
    B.Class
    C.int number=[]={31,23,33,43,35,63}
    D.数组的大小可以任意改变

    答案:A

    解析:
    • java的数据类型分为两大类:基本类型和引用类型;
    • 基本类型只能保存一些常量数据,引用类型除了可以保存数据,还能提供操作这些数据的功能;

    • 为了操作基本类型的数据,java也对它们进行了封装, 得到八个类,就是java中的基本类型的封装类;

    • 八种基本类型: byte short int long float double char boolean
      对应的包装类 : Byte Short Integer Long Float Double Character Boolean

    六、 使用mvc模式设计的web应用程序具有以下优点,除了?

    A.可维护行强
    B.可扩展性强
    C.代码重复少
    D.大大减少代码量

    答案:D

    解析:
    • MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

    • MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

    • MVC只是将分管不同功能的逻辑代码进行了隔离,增强了可维护和可扩展性,增强代码复用性,因此可以减少代码重复。但是不保证减少代码量,多层次的调用模式还有可能增加代码量。

      MVC.png

    七、 假设如下代码中,若t1线程在t2线程启动之前已经完成启动。代码的输出是()

    public static void main(String[]args)throws Exception {
       final Object obj = new Object();
         Thread t1 = new Thread() {
             public void run() {
                 synchronized (obj) {
                     try {
                         obj.wait();
                         System.out.println("Thread 1 wake up.");
                     } catch (InterruptedException e) {
                     }
                 }
             }
         };
         t1.start();
         Thread.sleep(1000);
         Thread t2 = new Thread() {
             public void run() {
                 synchronized (obj) {
                     obj.notifyAll();
                     System.out.println("Thread 2 sent notify.");
                 }
             }
         };
         t2.start();
    }
    

    A.Thread 1 wake up.Thread 2 sent notify.
    B.Thread 2 sent notify.Thread 1 wake up.
    C.A、B皆有可能
    D.程序无输出卡死

    答案:B

    解析:

    执行obj.wait();时已释放了锁,所以t2可以再次获得锁,然后发消息通知t1执行,但这时t2还没有释放锁,所以肯定是执行t2,然后释放锁,之后t1才有机会执行。

    八、下列 java 程序输出结果为______。

    int i=0;
    Integer j = new Integer(0);
    System.out.println(i==j);
    System.out.println(j.equals(i));
    

    A.true,false
    B.true,true
    C.false,true
    D.false,false
    E.对于不同的环境结果不同
    F.程序无法执行

    答案:B

    解析:
    本题是一个自动拆装箱的考题(自动拆装箱JDK需在1.5上):
    1. 基本型和基本型封装型进行“==”运算符的比较,基本型封装型将会自动拆箱变为基本型后再进行比较,因此Integer(0)会自动拆箱为int类型再进行比较,显然返回true;

    2. 两个Integer类型进行“==”比较,如果其值在-128至127,那么返回true,否则返回false, 这跟Integer.valueOf()的缓冲对象有关,这里不进行赘述。

    3. 两个基本型的封装型进行equals()比较,首先equals()会比较类型,如果类型相同,则继续比较值,如果值也相同,返回true

    4. 基本型封装类型调用equals(),但是参数是基本类型,这时候,先会进行自动装箱,基本型转换为其封装类型,再进行3中的比较。 上述结果为:true、false、false、true。

    九、有关线程的叙述正确的是()

    A.可以获得对任何对象的互斥锁定
    B.通过继承Thread类或实现Runnable接口,可以获得对类中方法的互斥锁定
    C.线程通过调用对象的synchronized方法可获得对象的互斥锁定
    D.线程调度算法是平台独立的

    答案:C D

    解析:
    • 1.“任何对象”锁定,太绝对了,你能锁住你没有权限访问的对象吗?
    • 2.前半句话讲的是创建线程的方式,后半句讲的是锁定,驴头不对马嘴。
    • 3.正确
    • 4.线程调度分为协同式调度和抢占式调度,Java使用的是抢占式调度,也就是每个线程将由操作系统来分配执行时间,线程的切换不由线程本身来决定(协同式调度)。这就是平台独立的原因。

    十、Java程序的种类有( )

    A.类(Class)
    B.Applet
    C.Application
    D.Servlet

    答案:B C D

    解析:
    Java程序的种类有:

    (a)内嵌于Web文件中,由浏览器来观看的_Applet

    (b)可独立运行的 Application

    (c)服务器端的 Serverlets

    相关文章

      网友评论

        本文标题:NowCoder-Java-Note(一)

        本文链接:https://www.haomeiwen.com/subject/ekszbxtx.html