牛客网-Java题库
牛客刷题整理
Day1
1、JSP内置对象
session对象,request对象,application对象,response对象
2、下列代码运行结果prints:3
1 | public class Test{ |
3、下面代码输出编译正确,输出”It is a account type”thrice followed by”FIXED”
1 | enum AccountType |
控制台输出:
1 | It is a account type |
Day2
1、AccessViolationException异常触发后,下列程序的输出结果为( )
1 | static void Main(string[] args) |
控制台输出:
1 | error2 |
2、下面的程序将来打印什么?()
1 | public class TestIncr { |
控制台输出:2
3、以下说法错误
- java线程类优先级相同
- Thread和Runnable接口没有区别
- 如果一个类继承了某个类,只能使用Runnable实现线程
4、下面有关java类加载器,说法正确
- 引导类加载器(bootstrap class loader):它用来加载 Java 的核心库,是用原生代码来实现的
- 扩展类加载器(extensions class loader):它用来加载 Java 的扩展库
- 系统类加载器(system class loader):它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类
- tomcat为每个App创建一个Loader,里面保存着此WebApp的ClassLoader。需要加载WebApp下的类时,就取出ClassLoader来使用
Day3
1、以下代码返回值是false
1 | public boolean returnTest() |
2、假设有以下代码String s = "hello";String t = "hello";char c [ ] = {'h','e','l','l','o'};
下列选项中返回false的语句是:
1 | // 返回false |
总结
- java数据类型分为:
- 基本数据类型
- 引用数据类型
- 对于”==”:
- 用于基本数据类型相互比较,比较二者的值是否相等
- 用于引用数据类型相互比较,比较二者地址是否相等
- 不能用于基本数据类型与引用型比较
- 对于”equals”:
- 不能用于基本数据类型比较(因为这是一个方法,继承自object)
- 用于进行对象的比较,比较二者的引用地址是否相同
- 特殊情况:
- 数值型基本类型和数值型类会存在自动装箱和自动拆箱
- 字符串会以常量形式存在,如果多个字符串变量值相同,则他们指向同一个地址
- 数值类型会存在类型自动转换
3、下列流当中,属于处理流的是:
1 | // 处理流 |
Day4
1、Java数据库连接库JDBC用到哪种设计模式?正确答案:桥接模式
- 选项还有:生成器、抽象工厂、单例模式
2、jdk1.8中,下面有关java 抽象类和接口的区别,说法错误的是:
- 抽象类中可以包含非抽象的普通方法,接口中的方法必须是抽象的,不能有非抽象的普通方法
- 接口中可以有普通成员变量,抽象类中没有普通成员变量
正确的是:
- 抽象类可以有构造方法,接口中不能有构造方法
- 一个类可以实现多个接口,但只能继承一个抽象类
总结
- 抽象类
- 抽象类中可以构造方法
- 抽象类中可以存在普通属性,方法,静态属性和方法
- 抽象类中可以存在抽象方法
- 如果一个类中有一个抽象方法,那么当前类一定是抽象类;抽象类中不一定有抽象方法
- 抽象类中的抽象方法,需要有子类实现,如果子类不实现,则子类也需要定义为抽象的
- 接口
- 在接口中只有方法的声明,没有方法体
- 在接口中只有常量,因为定义的变量,在编译的时候都会默认加上
public static final
- 在接口中的方法,永远都被public来修饰
- 接口中没有构造方法,也不能实例化接口的对象
- 接口可以实现多继承
- 接口中定义的方法都需要有实现类来实现,如果实现类不能实现接口中的所有方法,则实现类定义为抽象类
3、synchronized
保证三大性,原子性,有序性,可见性,volatile
保证有序性,可见性,不能保证原子性;选项中还有:持久性
Day5
1、以下代码执行后输出结果为:hello and dbc
1 | public class ClassTest { |
解:
fun
方法修改的都是形参,区别是一个仅仅只是修改形参的引用,另一个是通过形参修改堆值。
ch
是一个数组,数组是一个对象,对象存放在堆中,fun
方法区堆中修改值,改变了。
fun
方法为形参赋值时,修改的是形参的引用指向,成员变量str
原来引用的String
值未被修改。
2、下面代码输出结果是:CBB
1 | class C { |
解:
首先
new
了一个子类对象,那么就要调用构造方法来初始化该子类对象。因为
Test
方法已经显式调用了super("B")
,所以会直接调用A的有参构造,不会再调用A的无参构造。