牛客选择题练习【三】(20道题)(含答案和解析)_public class teststringbuffer{ public static void -程序员宅基地

技术标签: java  牛客网习题  

1.下面的程序 编译运行后,在屏幕上显示的结果是(A)

public class test {
    
	public static void main(String args[]) {
    
		int x,y;
		x=5>>2;
		y=x>>>2;
		System.out.println(y);
	}
}

A 0
B 2
C 5
D 80
解析:
右移运算符(>>),num >> 1,相当于num除以2。无符号右移(>>>),忽略符号位,空位都以0补齐。
5的二进制位0101,右移两位为0001等于1,1在无符号右移2为,结果为0。

2.以下代码结果是什么?(C)

public class foo {
    
	public static void main(String sgf[]) {
    
		StringBuffer a=new StringBuffer(“A”);
		StringBuffer b=new StringBuffer(“B”);
		operate(a,b);
		System.out.println(a+.+b);
	}
	static void operate(StringBuffer x,StringBuffer y) {
    
		x.append(y);
		y=x;
	}
}

A 代码可以编译运行,输出“AB.AB”。
B 代码可以编译运行,输出“A.A”。
C 代码可以编译运行,输出“AB.B”。
D代码可以编译运行,输出“A.B”。
解析:
在这里插入图片描述
引用a指向对象A,引用b指向对象B,引用x指向对象A,引用y指向对象B。在operate方法中,引用x指向的对象A被连接了B,对象A也就被改变为AB。然后又把引用y指向了x所指向的对象地址,也就是此时引用a,x,y指向同一个对象AB,而引用b没有发生任何变化,依旧指向对象B。

3.在JAVA中,假设A有构造方法A(int a),则在类A的其他构造方法中调用该构造方法和语句格式应该为(B)
A this.A(x)
B this(x)
C super(x)
D A(x)
解析:
A选项:是调用普通方法的格式
C选项:为调用父类构造方法的格式
D选项:为调用静态方法的格式

4.下面代码的运行结果是(C)

public static void main(String[] args){
    
	String s;
	System.out.println("s="+s);
}

A 代码编程成功,并输出”s=”
B 代码编译成功,并输出”s=null”
C 由于String s没有初始化,代码不能编译通过。
D 代码编译成功,但捕获到NullPointException异常

5.装箱、拆箱操作发生在:
A 类与对象之间
B 对象与对象之间
C 引用类型与值类型之间
D 引用类型与引用类型之间
解析:
通俗的讲,就是基本数据类型和包装类之间的转换。如: int 类型和 Integer 类的转换 基本数据类型转化成包装类是装箱 (如: int --> Integer)。 包装类转化成基本数据类型就是拆箱 (如:Integer --> int)。 包装类就是引用类型,基本数据类型就是值类型。所以选C。

6.一个以”.java”为后缀的源文件(C)
A 只能包含一个类,类名必须与文件名相同
B 只能包含与文件名相同的类以及其中的内部类
C 只能有一个与文件名相同的public类,可以包含其他类
D 可以包含任意类

7.下列哪个说法是正确的(D)
A ConcurrentHashMap使用synchronized关键字保证线程安全
B HashMap实现了Collction接口
C Array.asList方法返回java.util.ArrayList对象
D SimpleDateFormat是线程不安全的
解析:
concurrentHashMap采用分段加锁的机制来确保安全。HashMap实现了Map接口。Arrays.asList()将一个数组转化为一个List对象,这个方***返回一个ArrayList类型的对象, 这个ArrayList类并非java.util.ArrayList类,而是Arrays类的静态内部类!用这个对象对列表进行添加删除更新操作,就会报UnsupportedOperationException异常。

8.以下说法错误的是(D)
A 虚拟机中没有泛型,只有普通类和普通方法
B 所有泛型类的类型参数在编译时都会被擦除
C 创建泛型对象时请指明类型,让编译器尽早的做参数检查
D 泛型的类型擦除机制意味着不能在运行时动态获取List中T的实际类型
解析:
运用泛型编译器不建议使用raw原生类型,而是要指明具体类型List,以便编译器作参数检查。在编译阶段会采取擦除机制,将所有的泛型都编译成为原生类型List,因为虚拟机中没有泛型,只有普通类和普通方法。JVM是通过强大的反射机制获取具体类型的,也正因为有了反射才促生了泛型,所以D错。

9.下列代码执行结果为(A)

public static void main(String args[])throws InterruptedException{
    
	Thread t=new Thread(new Runnable() {
    
		public void run() {
    
			try {
    
				Thread.sleep(2000);
			} catch (InterruptedException e) {
    
				throw new RuntimeException(e);
			}
				System.out.print("2");
		}
	});
	t.start();
	t.join();
	System.out.print("1");
}

A 21
B 12
C 可能为12,也可能为21
D 以上答案都不对
解析:
join()的作用是:“等待该线程终止”,这里需要理解的就是该线程是指的主线程等待子线程的终止。也就是在子线程调用了join()方法后面的代码,只有等到子线程结束了才能执行。

10.指出以下程序运行的结果是(B)

public class Example{
    
	String str=new String("good");
	char[]ch={
    'a','b','c'};
	public static void main(String args[]){
    
		Example ex=new Example();
		ex.change(ex.str,ex.ch);
		System.out.print(ex.str+" and ");
		System.out.print(ex.ch);
	}
	public void change(String str,char ch[]){
    
	//引用类型变量,传递的是地址,属于引用传递。
		str="test ok";
		ch[0]='g';
	}
}

A good and abc
B good and gbc
C test ok and abc
D test ok and gbc

11.下面哪段程序能够正确的实现了GBK编码字节流到UTF-8编码字节流的转换:(B)

byte[] src,dst;

A dst=String.frombytes(src,”GBK”).getbytes(“UTF-8”)
B dst=new String (src,”GBK”).getbytes(“UTF-8”)
C dst=new String (”GBK”, src,) getbytes()
D dst=String.encode(String.decode(src,”GBK”)), “UTF-8”)
解析:
操作步骤是先解码再编码:用new String(src,“GBK”)解码得到字符串,再用getBytes(“UTF-8”)得到UTF8编码字节数组。

12.下列关于java并发的说法中正确的是:(B)
A copyonwritearraylist适用于写多读少的并发场景
B readwritelock适用于读多写少的并发场景
C concurrenthashmap的写操作不需要加锁,读操作需要加锁
D 只要在定义int类型的成员变量i的时候加上volatile关键字,那么多线程并发执行i++这样的操作的时候就是线程安全的了
解析:
A选项:CopyOnWriteArrayList适用于写少读多的并发场景
B选项:ReadWriteLock即为读写锁,他要求写与写之间互斥,读与写之间互斥,读与读之间可以并发执行。在读多写少的情况下可以提高效率
C选项:ConcurrentHashMap是同步的HashMap,读写都加锁
D选项:volatile只保证多线程操作的可见性,不保证原子性

13.Java中的集合类包括ArrayList、LinkedList、HashMap等,下列关于集合类描述错误的是?(C)
A ArrayList和LinkedList均实现了List接口
B ArrayList的访问速度比LinkedList快
C 随机添加和删除元素时,ArrayList的表现更佳
D HashMap实现Map接口,它允许任何类型的键和值对象

14.下列哪个对访问修饰符作用范围由大到小排列是正确的?(D)
A private>default>protected>public
B public>default>protected>private
C private>protected>default>public
D public>protected>default>private
解析:
在这里插入图片描述

15.在Java中,HashMap中是用哪些方法来解决哈希冲突的?(C) 我觉得答案应该为(AC)
A 开放地址法
B 二次哈希法
C 链地址法
D 建立一个公共溢出区
解析:
(1)开放地址法:寻找下一个为空的数组下标,而后将冲突元素存储
(2)再散列法(二次哈希法):再次使用一个不同的哈希算法再计算一次 (第一次%16换另一个数进行%运算)
(3)链地址法(拉链法):将所有冲突元素按照链表存储,冲突后时间复杂度变为O(1+n)n为冲突元素个数)[hashMap就是用这种方法]

16.阅读下列程序,选择哪一个是正确的输出结果(C)

class HelloA{
    
	public HelloA()
	{
    
		System.out.println("I’m A class ");
	}
	static
	{
    
		System.out.println("static A");
	}
}
public class HelloB extends HelloA{
    
	public HelloB()
	{
    
		System.out.println("I’m B class");
	}
	static{
    
		System.out.println("static B");
	}
	public static void main (String[] args){
    
		new HelloB();
	}
}

A static A I’m A class static B I’m B class
B I’m A class I’m B class static A static B
C static A static B I’m A class I’m B class
D I’m A class static A I’m B class static B
解析:
打印顺序:父类的静态方法,子类的静态方法,父类的构造方法,父类的实例方法,
子类的构造方法,子类的实例方法

17.执行下列代码的输出结果是(C)

public class Demo{
    
 public static void main(String args[]){
    
   int num = 10;
   System.out.println(test(num));
}
public static int test(int b){
    
   try
   {
    
    b += 10;
    return b;
   }
   catch(RuntimeException e)
   {
    
   }
   catch(Exception e2)
   {
    
   }
   finally
   {
    
    b += 10;
    return b;
   }
  }
}

A 10
B 20
C 30
D 40
解析:
finally块中的return会抑制try中的return。该题先执行try中的b+=10,在执行finally中的b+=10,最后执行finally中的return,故打印值为30.

18.以下是java concurrent包下的4个类,选出差别最大的一个(C)
A Semaphore
B ReentrantLock
C Future
D CountDownLatch
解析:
A选项:Semaphore:类,控制某个资源可被同时访问的个数;
B选项:ReentrantLock:类,具有与使用synchronized方法和语句所访问的隐式监视器锁相同的一些基本行为和语义,但功能更强大;
C选项:Future:接口,表示异步计算的结果;
D选项: CountDownLatch: 类,可以用来在一个线程中等待多个线程完成任务的类。

19.关于sleep和wait,以下描述错误的是(D)
A sleep是线程类的方法,wait是object的方法
B sleep不释放对象锁,wait放弃对象锁
C sleep暂停线程,但监控状态依然保持,结束后会自动恢复
D wait进入等待锁定池,只有针对此对象发出notify方法获得对象锁进入运行状态
解析:
首先,sleep()是Thread类中的方法,而wait()则是Object类中的方法。
(1)sleep()方法导致了程序暂停,但是他的监控状态依然保持着,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。
(2)wait()方法导致线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用notify()方法后本线程才进入对象锁定池准备获取对象锁进入运行状态。注意是准备获取对象锁进入运行状态,而不是立即获得

20.下列代码的输出结果是(B)

boolean b=true?false:true==true?false:true;
System.out.println(b);

A true
B false
C null
D 空字符串
解析:
(1)==优先级大于?:
(2)?:计算方向:从右到左
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_45605223/article/details/105432297

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签