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

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

🍓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  


相关文章
|
4月前
|
Java
<Java>逻辑控制,方法详解,重载,牛客习题,IDEA调试方法...
<Java>逻辑控制,方法详解,重载,牛客习题,IDEA调试方法
35 0
|
9月前
|
Java
Java学习 10.Java-数组习题
Java学习 10.Java-数组习题
91 0
|
9月前
|
存储 机器学习/深度学习 Java
Java学习 9.Java-数组 讲解及习题
Java学习 9.Java-数组 讲解及习题
77 0
|
9月前
|
Java
Java学习 8.方法习题
Java学习 8.方法习题
64 0
|
9月前
|
Java
Java学习 6.循环习题
Java学习 6.循环习题
64 0
|
9月前
|
Java
Java学习 5.习题2.
Java学习 5.习题2.
42 0
|
9月前
|
Java
Java学习 3. 习题 1.
Java学习 3. 习题 1.
45 0
|
12月前
|
Java
Java习题之实现平方根(sqrt)函数
Java习题之实现平方根(sqrt)函数
247 0
|
Java API
java中API习题
java中API习题
59 0
|
Java
Java经典编程习题100例:第24例:求最小公倍数
Java经典编程习题100例:第24例:求最小公倍数
61 0