【每日进步一点点系列】十道精选Java习题

 ⭐️引言⭐️

               大家好,我是执梗。Java的学习非一朝一夕可以成功,需要我们水滴穿石般的坚持。每日进步一点点系列,旨在可以每天只花几分钟就能学到Java中我们可能忽略的知识,同时也可以检验自己的Java能力,希望能和大家每天都能进步一点点。

查看答案方法:

对下面块引用中的进行长拉(手机端可在文末)即可查看答案:

正确答案:A<-答案请长拉左侧

如图所示:

 在文章末尾我也会贴上答案。


1.下面代码输出的正确的是()

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.println(ex.str+" and ");
        System.out.println(ex.ch);
    }
    public void change(String str,char ch[]){
        str="test ok";
        ch[0]='g';
    }
}

        A.good and abc

        B.good and gbc

        C.tst ok and abc

        D.tst ok and gbc

正确答案为:B答案请长拉左测

Strng是一个类对象,当我们把他传入到change方法时,传入的是它的地址,这时我们change方法的第一条语句是让形参指向了另外一个对象,所以对原对象是没有变动的。数组ch传入的同样是地址,我们在该地址上进行改动,会改变原数组对象上的数据。  

2.下面代码输出的是()

public static void main(String[] args) {
   int num = 2;
   switch (num) {
   case 1:
        ++num;
   case 2:
        ++num;
   case 3:
        ++num;
   default:
        ++num;
   break;
   }
   System.out.println(num);
 }
}

        A.2

        B.3

        C.4

        D.5

正确答案为:D

本题考察的是switch的穿透现象,当switch匹配到2后完成++num,由于没有break导致形成穿透,switch继续执行case 3和default语句,最后走了3次++num。

3.下面关于servlet service描述错误的是?

        A.不管是post还是get方法提交过来的连接,都会在service中处理

        B.doGet/doPost 则是在 javax.servlet.GenericServlet 中实现的

        C.service()是在javax.servlet.Servlet接口中定义的

        D.service判断请求类型,决定是调用doGet还是doPost方法

正确答案:B

A.service方法是在servlet生命周期中的服务期,它根据HTTP请求方法(GET、POST等),将请求分发到doget和dopost等方法实现

B.doGet/doPost是在 javax.servlet.http.HttpServlet中实现的

C.service()是在javax.servlet.Servlet接口中定义的, 在 javax.servlet.GenericServlet 中实现了这个接口。

D.同理与A解释

4.下面有关java object默认的基本方法,说法错误的是?

        A.equals(Object obj) 指示某个其他对象是否与此对象“相等”

        B.copy() 创建并返回此对象的一个副本

        C.wait() 导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法

        D.toString() 返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成

正确答案:B

Object当中没有copy()方法,有的是clone()方法        

5.运行代码,结果正确的是:

Boolean flag = false;
if(flag = true){
System.out.println("true");
}else{
System.out.println("false");
}

        A.第二行代码编译错误

        B.true

        C.false

        D.什么都不输出

正确答案:B        

if判断中需要的是一个boolean类型的值,我们在空号中如果进行运算,需要返回一个boolean类型的变量。但其实赋值也是一种运算,返回的是赋值以后的值,这里返回的是flag被赋值以后的值true。

6.下列有关Servlet的生命周期,说法不正确的是?

       A.在创建自己的Servlet时候,应该在初始化方法init()方法中创建Servlet实例

      B.在Servlet生命周期的服务阶段,执行service()方法,根据用户请求的方法,执行相应的doGet()或是doPost()方法

      C.在销毁阶段,执行destroy()方法后会释放Servlet 占用的资源

      D.destroy()方法仅执行一次,即在服务器停止且卸载Servlet时执行该方法

正确答案:A

Servlet的生命周期分为5个阶段:加载、创建、初始化、处理客户请求、卸载。

(1)加载:容器通过类加载器使用servlet类对应的文件加载servlet

(2)创建:通过调用servlet构造函数创建一个servlet对象

(3)初始化:调用init方法初始化

(4)处理客户请求:每当有一个客户请求,容器会创建一个线程来处理客户请求

(5)卸载:调用destroy方法让servlet自己释放其占用的资源

7.对于子类的构造函数说明,下列叙述中错误的是( )

       A.子类不能继承父类的无参构造函数。

       B.子类可以在自己的构造函数中使用super关键字来调用父类的含参数构造函数,但这个调用语句必须是子类构造函数的第一个可执行语句。

       C.在创建子类的对象时,若不含带参构造函数,将先执行父类的无参构造函数,然后再执行自己的无参构造函数。

       D.子类不但可以继承父类的无参构造函数,也可以继承父类的有参构造函数。

正确答案:D

A:构造函数不能被继承,只能被调用。

B.子类如果要调用父类的有参构造函数,必须在自己的构造函数第一行使用super()显示地来调用

C.没有带参构造函数时jvm会默认提供无参构造,子类构造函数都默认调用父类地无参构造。为什么这时我们第一行看不见super()呢?因为调用父类无参构造可以省略。

D:同理与A

8.关于Java以下描述正确的有(      )

        A.native关键字表名修饰的方法是由其它非Java语言编写的

        B.能够出现在import语句前的只有注释语句

        C.接口中定义的方法只能是public

        D.构造方法只能被修饰为public或者default

正确答案:A

A:native是调用本地方法库实现的,可以是C,C++

B:import是用于导包地关键字,它前面还可以出现package,用于声明包

C:在jdk8后接口地修饰符还可以为default,但是需要有代码块,可以不被重写

D:构造方法可以为public、protect、default、private

9.java语言的下面几种数组复制方法中,哪个效率最高?

        A.for 循环逐一复制

        B.System.arraycopy

        C.Array.copyOf

        D.使用clone方法

正确答案:B

A:for循环属于这四种方法唯一一种深复制(也就是复制值),而且不是封装好的方法,肯定是最慢的

B:System.arraycopy是一个native方法而且被手写入JVM中,在JVM里已经预写好了,当然是当之无愧的一哥,最快的

C:Array.copyOf本质上是调用了大哥System.arraycopy(),但它本身不是native方法(本地方法),所以效率只能排老三

D:clone()也是一个native方法,所以效率很高,但比不上System.arraycopy,为什么呢?因为它没有被写入到JVM中,所以只能当个二哥了。

速度效率:System.arraycopy()>clone()>Array.copyOf()>for循环

10.String s = new String("xyz");创建了几个StringObject?  

        A.两个或一个都有可能

        B.两个

        C.一个

        D.三个

正确答案:A
通过new实例的方法创建字符串时,我们都知道会在堆上创建对象。我们也知道还有字符串常量池这个东西,但是很多人不知道的是你在new字符串时jvm会去检查常量池是否存在这个对象。如果存在,它只会在堆上创建一个对象。如果不存在,它会在常量池和堆上同时都创建一个对象,也就是两个对象。


答案汇总:
1、正确答案:B
2、正确答案:D
3、正确答案:B
4、正确答案:B
5、正确答案:B
6、正确答案:A
7、正确答案:D
8、正确答案:A
9、正确答案:B
10、正确答案:A
 

学习如同逆水行舟,不进则退!

每日进步一点点,水滴石穿!

可以订阅我的每日进步一点点专栏一起加油!!

看完如果让你进步了一点点,球球感谢给一个三连支持!!!

你可能感兴趣的:(每日进步一点点,java,蓝桥杯,javase,javaweb)