🍓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保证有序性,可见性,不能保证原子性