牛客网专项训练——7

这篇博客介绍了Java编程中的基础知识,包括String对象的比较、访问修饰符的作用、自增运算符的理解、创建线程的两种方式以及异常处理的finally语句。同时,博主解析了多道相关题目,帮助读者巩固概念。
摘要由CSDN通过智能技术生成

题目来源: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是特殊不可变类型

对应的基本类型和包装类如下表:

基本数据类型包装类
byteByte
booleanBoolean
shortShort
charCharacter
intInteger
longLong
floatFloat
doubleDouble

第十题:

10.Java数据库连接库JDBC用到哪种设计模式?

A.生成器

B.桥接模式

C.抽象工厂

D.单例模式

选B

解析:

JDBC提供两套接口,一个面向数据库厂商,一个面向JDBC使用者。

桥接模式:

定义 :将抽象部分与它的实现部分分离,使它们都可以独立地变化。

Jdk中的桥接模式:JDBC
JDBC连接 数据库 的时候,在各个数据库之间进行切换,基本不需要动太多的代码,甚至丝毫不动,原因就是JDBC提供了统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值