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

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

🍓1.关于字符流和字节流的说法的是?(多选)


       A.每次读入的字节数不同


       B.前者带有缓冲,后者没有


       C.前者是字符读入,后者是字节读入


       D.二者没有区别,可以互换


正确答案:ABD


字符流和字节流每次读入数据的字节数是无法确定的,有可能相同也有可能不同的。字节流和字符流都是有缓冲流,比如BufferedInoutStream就是一个字节缓冲流。两者的区别其实类似byte[]和String


🍓2.Servlet的生命周期可以分为初始化阶段,运行阶段和销毁阶段三个阶段,以下过程属于初始化阶段是()。


               A.加载Servlet类及.class对应的数据


               B.创建servletRequest和servletResponse对象


               C.创建ServletConfig对象


               D.创建Servlet对象


正确答案:ACD


Servlet的生命周期一般可以用三个方法来表示:


    1.init():仅执行一次,负责在装载Servlet时初始化Servlet对象


    2.service() :核心方法,一般HttpServlet中会有get,post两种处理方式。在调用doGet和doPost方法时会构造servletRequest和servletResponse请求和响应对象作为参数。


    3.destory():在停止并且卸载Servlet时执行,负责释放资源


       初始化阶段:Servlet启动,会读取配置文件中的信息,构造指定的Servlet对象,创建ServletConfig对象,将ServletConfig作为参数来调用init()方法。servletRequest和servletResponse对象是调用service()时才构造的        


🍓3.下面关于静态方法说明正确的是?


       A.在静态方法里可用this来调用本类的类方法


       B.在静态方法中调用本类的静态方法时可直接调用


       C.在静态方法中只能调用本类中的静态方法


       D.在静态方法中不可调用实例方法


正确答案:B


A.静态方法加载时都还未创建对象,this当然是不可使用的


B.在本类中调用本类的类方法可以直接通过方法名调用


C.在静态方法中也可以调用其他类的静态方法


D.虽然我们无法直接调动实例方法,我们可以实例化出当前类的对象,然后通过对象.方法名调用实例方法


🍓4.关于继承和实现说法正确的是 ()?


       A.类可以实现多个接口,接口可以继承(或扩展)多个接口


       B.类可以实现多个接口,接口不能继承(或扩展)多个接口


       C.类和接口都可以实现多个接口


       D.类和接口都不可以实现多个接口


正确答案:A


虽然Java一直强调单继承,但其实那只是限定与类。接口是也是可以继承接口的,同样使用extends关键字继承,但是它可以继承多个父类子接口,父接口之间用逗号隔开。


🍓5.下面代码的运行结果正确的是()?


public class Arraytest{
    int a[] = new int[6];
    public static void main ( String arg[] ) {
        System.out.println ( a[0] );
    }
}

      A.null


      B.0


      C.编译出错


      D.运行出错


正确答案:C


在静态方法中不可以调用非静态的资源,这个数组是一个成员变量但不是静态的,所以在main方法中调用会编译报错,如果在数组前加一个static则编译通过,则会输出默认值0。


🍓6.下面代码输出的结构是?


class A{
  public A(String str){
  }
}
public class Test{
  public static void main(String[] args) {
  A classa=new A("he");
  A classb=new A("he");
  System.out.println(classa==classb);
  }
}

               A.false


               B.true


               C.报错


               D.以上选项都不正确


正确选项:A


==表示的是两个对象是否指向的是同一个内存,这是两个new出来在堆上的对象,当然不可能在同一个地址上。即使使用equals也是false,因为没有重写equals和hashcode方法,默认也是才用==进行比较。


🍓7.下面关于Java的垃圾回收机制,正确的是()


       A.当调用“System.gc()”来强制回收时,系统会立即回收垃圾


       B.垃圾回收不能确定具体的回收时间


       C.程序可明确地标识某个局部变量的引用不再被使用


       D.程序可以显式地立即释放对象占有的内存


正确答案:B


A.System.gc()只会建议垃圾回收器回收该内存,但只是建议,并不会立马就回收


B.GC回收并没有明确的时间固定


C.局部变量一般都是随着方法的执行结束而被释放


D.GC是完全自动的,不能强制执行它,我们最多使用System.gc()去建议它释放某块内存


🍓8.下面代码输出的结果是?


String str = "abcde";
System.out.print(str.split(",").length);

       A.0


       B.1


       C.5


       D.出现异常


正确答案:B


String的split方法默认的返回值是一个字符串数组。它根据分隔符去分割原字符串,如果没有找到分隔符,则会把整个原字符串放入到返回值字符串数组的第一个位置,则这个返回的字符串数组长度为1。


🍓9.下面代码输出的结果是?


public class Test {
    public static void main(String args[]) {
        int i = -5;
        i =  ++(i++);
        System.out.println(i);
    }
}

               A.-7


               B.-3


               C.编译错误


               D.-5


正确答案:C


对于++()这个操作,空号内必须是一个变量,而不能是一个字面量。什么是字面量呢?就比如3,"ASD"这样一个int类型和String类型的量一眼就能看出来值的就是字面量,而变量就不用多说,int a和String b,那a和b就是变量。为什么++()不能放字面量呢?你见过++3的吗?


🍓10.下面关于volatile的功能说法正确的是?


       A.原子性


       B.有序性


       C.可见性


       D.持久性


正确答案:BC


synchronized保证三大性,原子性,有序性,可见性,volatile保证有序性,可见性,不能保证原子性        


相关文章
|
1月前
|
Java 数据安全/隐私保护
JAVA经典习题详解
JAVA经典习题详解
17 4
|
1月前
|
Java 数据安全/隐私保护
java学习笔记(基础习题)
java学习笔记(基础习题)
33 0
|
6月前
|
Java
<Java>逻辑控制,方法详解,重载,牛客习题,IDEA调试方法...
<Java>逻辑控制,方法详解,重载,牛客习题,IDEA调试方法
40 0
|
11月前
|
Java
Java学习 10.Java-数组习题
Java学习 10.Java-数组习题
100 0
|
11月前
|
存储 机器学习/深度学习 Java
Java学习 9.Java-数组 讲解及习题
Java学习 9.Java-数组 讲解及习题
89 0
|
11月前
|
Java
Java学习 8.方法习题
Java学习 8.方法习题
71 0
|
11月前
|
Java
Java学习 6.循环习题
Java学习 6.循环习题
70 0
|
11月前
|
Java
Java学习 5.习题2.
Java学习 5.习题2.
49 0
|
11月前
|
Java
Java学习 3. 习题 1.
Java学习 3. 习题 1.
47 0
|
Java
Java习题之实现平方根(sqrt)函数
Java习题之实现平方根(sqrt)函数
279 0
下一篇
无影云桌面