题目来源:https://www.nowcoder.com/
第一题:
1.定义:String s1 = “uml”; String s2 = “uml”; String s3= new String(“uml”); String s4= new String(“uml”);那么,s1==s2;s3 == s4;s1.equals(s3); 判断正确与否
A.T,F,T
B.F,T,F
选A
解析:
首先了解的是String类创建的对象在JVM内存中的分配(如上图所示)然后了解equals比较的是两个引用的地址,==比较的是两个引用的地址和值。
s1==s2;比较的是地址和值,s1和s2指向字符串常量池中同一个地址,返回true。
s3 == s4;比较的是两个new开辟处理的空间对象地址,值相同但地址不同,false。
s1.equals(s3); 比较的是值,相等,true。
第二题:
2.下列哪个修饰符可以使在一个类中定义的成员变量只能被同一包中的类访问?
A.private
B.无修饰符
C.public
D.protected
选B
解析:
名称 说明 备注 public 可以被任何类访问 protected 可以被同一包中的所有类访问;可以被所有子类访问 子类没有在同一包中也可以访问 private 只能被当前类的方法访问 缺省无访问修饰符(默认权限) 可以被同一包中的所有类访问 如果子类没有在同一个包中,不能访问。
第三题:
3.以下代码执行的结果显示是多少()?
A.num * count = 505000
B.num * count = 0
C.运行时错误
D.num * count = 5050
选B
解析:
count=count++的执行原理相当于 temp=count;count=count+1;count=temp;所以count的值无变化,也就是在执行自增的时候,先将count保存在一个临时变量中,然后再自增。
第四题:
4.一般有两种用于创建线程的方法,一是(),二是()。
A.从Java.lang.Thread类派生一个新的线程类,重写它的runnable()方法
B.从Java.lang.Thread类派生一个新的线程类,重写它的run()方法
C.实现Thread接口,重写Thread接口中的run()方法
D.实现Runnable接口,重写Runnable接口中的run()方法
选BD
解析:
创建线程的方法:(1)从Java.lang.Thread类派生一个新的线程类,重写它的run()方法;(2) 实现Runnable接口,重写Runnable接口中的run()方法。
第五题:
5.如果int x=20, y=5,则语句System.out.println(x+y +""+(x+y)+y); 的输出结果是( )
A.2530
B.55
C.2052055
D.25255
选D
解析:
第一步先计算小括号中的运算为25,第二步任何字符与字符串相加都是字符串,字符串之前的依旧按之前的格式运算,所以为2525是字符串,再加5为25255。
第六题:
6.以下不是修饰符final的作用的是( )。
A.修饰常量
B.修饰不可被继承的类
C.修饰不可变类
D.修饰不可覆盖的方法
选C
解析:
final作为Java中的关键字可以用于三个地方。用于修饰类、类属性和类方法。
特征:凡是引用final关键字的地方皆不可修改!
(1)修饰类:表示该类不能被继承;
(2)修饰方法:表示方法不能被重写;
(3)修饰变量:表示变量不能被修改。
第七题:
7.在异常处理中,如释放资源,关闭数据库、关闭文件应由( )语句来完成。
A.try子句
B.catch子句
C.finally子句
D.throw子句
选C
解析:
(1)finally子句:无论代码中是否有异常都会执行,用来清理这些资源的
(2)try子句:用来执行正常的程序,该程序可能发生异常。
(3)catch子句:捕获try代码块中的异常,并进行处理异常(printStackTrace()用来跟踪异常事件发生时执行堆栈的内容)
(4)throw子句:在方法体内部抛出异常对象。
第八题:
8.关于java中的数组,下面的一些描述,哪些描述是准确的:()
A.数组是一个对象,不同类型的数组具有不同的类
B.数组长度是可以动态调整的
C.数组是一个连续的存储结构
D.一个固定长度的数组可类似这样定义:int array[100]
E.两个数组用Object 里equals方法比较时,会逐个遍历其中的元素,对每个元素进行比较
F.java中不存在 int *a这样的东西做数组的形参
选ACF
解析:
E中如果直接比较的是两个数组的话,是直接调用obj中的eques()方法(比较的是两个数组的内存地址),如果想要比较两个数组里的元素是不是都相同用的是Arrays.eques()
第九题:
9.下面属于java包装类的是?
A.String
B.Long
C.Character
D.Short
选BCD
解析:
java中的数据类型int,double等不是对象,无法通过向上转型获取到Object提供的方法,而像String却可以,只因为String是一个对象而不是一个类型。基本数据类型由于这样的特性,导致无法参与转型,泛型,反射等过程。为了弥补这个缺陷,java提供了包装类。A.String是特殊不可变类型
对应的基本类型和包装类如下表:
基本数据类型 包装类 byte Byte boolean Boolean short Short char Character int Integer long Long float Float double Double
第十题:
10.Java数据库连接库JDBC用到哪种设计模式?
A.生成器
B.桥接模式
C.抽象工厂
D.单例模式
选B
解析:
JDBC提供两套接口,一个面向数据库厂商,一个面向JDBC使用者。
桥接模式:
定义 :将抽象部分与它的实现部分分离,使它们都可以独立地变化。
Jdk中的桥接模式:JDBC
JDBC连接 数据库 的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不动,原因就是JDBC提供了统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就行了。