牛客刷题日记(2021-11-2)

牛客刷题日记(2021-11-2)

题目:
java7后关键字 switch 支不支持字符串作为条件:()

A.支持
B.不支持
解析:

选A
switch(exp),在JDK7之前,只能是byte、short、char、int或者对应的包装类,或者枚举常量(内部也是由整型或字符类型实现)。
为什么必须是这些呢,因为其实exp只是对int型支持的,其他都是因为可以自动拆卸或者自动向上转型到int,所以才可以。
到了JDK7的时候,String被引入了,为什么String能被引入呢?
其实本质上还是对int类型值得匹配。
原理如下,通过对case后面得String对象调用hashCode方法,得到一个int类型得hash值,然后用这个hash值来唯一标识这个case。那么当匹配时,首先调用exp的hashCode,得到exp的hash值,用这个hash值来匹配所有case,如果没有匹配成功,就说明不存在;如果匹配成功了,接着会调用字符串的equals方法进行匹配。(hash值一致,equals可不一定返回的就是true)。
所以,exp不能为null,cas子句使用的字符串也不能为null,不然会出现空指针异常。


题目:
下面关于 new 关键字的表述错误的是()
A.new关键字在生成一个对象时会为对象开辟内存空间
B.new关键字在生成一个对象时会调用类的构造方法
C.new关键字在生成一个对象时会将生成的对象的地址返回
D.Java中只能通过new关键字来生成一个对象

解析:

正确答案是D
java中创建对象有以下几种方法:
1.用new语句创建对象,这是最常用的创建对象的方式。
2.运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。
3.调用对象的clone()方法。
4.运用反序列化手段,调用java.io.ObjectInputStream对象的readObject()方法.


题目:

这个地方一定要注意add(int index, Object element): 在列表的指定位置插入指定元素。
不懂的可以看一下这个文章


如果一个list初始化为{531},执行以下代码后,其结果为()?
nums.add(6);
nums.add(0,4);
nums.remove(1);

[5, 3, 1, 6]
[4, 3, 1, 6]
[4, 3, 6]
[5, 3, 6]
解析:

选B

list{5,3,1}
nums.add(6); //往后边加一个6,{5,3,1,6}
nums.add(0,4);//往下标为0的数加一个4,{4,5,3,1,6}
nums.remove(1); // 移除下标为1 的元素,{4,3,1,6}


题目:

关于Float,下列说法错误的是()
A.Float是一个类
B.Float在java.lang包中
C.Float a=1.0是正确的赋值方法
D.Float a= new Float(1.0)是正确的赋值方法
解析:

正确答案: C

1.Float是类,float不是类.
2.查看JDK源码就可以发现Byte,Character,Short,Integer,Long,Float,Double,Boolean都在java.lang包中.
3.Float正确复制方式是Float f=1.0f,若不加f会被识别成double型,double无法向float隐式转换.
4.Float a= new Float(1.0)是正确的赋值方法,但是在1.5及以上版本引入自动装箱拆箱后,会提示这是不必要的装箱的警告,通常直接使用Float f=1.0f.


题目:
下面哪个关键字可以用于Java的构造方法上?
A.final
B.static
C.synchronized
D.native
E.None of these.
解析:

答案:E
解析:构造方法不能被子类继承,所以用final修饰没有意义。构造方法用于创建一个新的对象,不能作为类的静态方法,所以用static修饰没有意义。此外,Java语言不支持native或synchronized的构造方法。


题目:

以下选项中循环结构合法的是:

while(int i<7){i++;System.out.println("i is "+i);}
int j=3;while(j){ System.out.println("j is "+j);}
int j=0;for(int k=0;j+k!=10;j++,k++){System.out.println("j is "+j+"k is" +k);}
int j=0; do{System.out.println("j is "+j++);if(j==3){continue loop;}}while(j<10);
解析:

只有C对。
A、while(int i<7){i++;System.out.println("i is "+i);},int i要放在外面声明;
B、int j=3;while(j){ System.out.println("j is "+j);},java判断处为boolean类型,应该如j3,j>1之类才行 ;不像C中,0可以表示假,非0可以表示真。java的真假就是true和false以及判别式。
C、int j=0;for(int k=0;j+k!=10;j++,k++){System.out.println("j is "+j+“k is” +k);},当j=5,k=5时循环结束;
D、int j=0; do{System.out.println("j is "+j++);if(j
3){continue loop;}}while(j<10);,continue loop前面没有标注出循环名loop,相当于未定义。


题目:
命令javac-d参数的用途是?()
指定编译后类层次的根目录
指定编译时需要依赖类的路径
指定编译时的编码
没有这一个参数
解析:

正确答案: A
在这里插入图片描述


题目:
哪个类可用于处理 Unicode?
A.InputStreamReader
B.BufferedReader
C.Writer
D.PipedInputStream
解析:

正确答案: A

A、 InputStreanReader的构造函数:
InputStreamReader(InputStream in)
创建一个使用默认字符集的 InputStreamReader。
InputStreamReader(InputStream in, Charset cs)
创建使用给定字符集的 InputStreamReader。
InputStreamReader(InputStream in, CharsetDecoder dec)
创建使用给定字符集解码器的 InputStreamReader。
InputStreamReader(InputStream in, String charsetName)
创建使用指定字符集的 InputStreamReader。
B、BufferedReader的构造函数:
BufferedReader(Reader in)
创建一个使用默认大小输入缓冲区的缓冲字符输入流。
BufferedReader(Reader in, int sz)
创建一个使用指定大小输入缓冲区的缓冲字符输入流。
C、Writer的构造函数:
protected Writer()
创建一个新的字符流 writer,其关键部分将同步 writer 自身。
protected Writer(Object lock)
创建一个新的字符流 writer,其关键部分将同步给定的对象。
D、PipedInputStream的构造函数:
PipedInputStream()
创建尚未连接的PipedInputStream。
PipedInputStream(int pipeSize)
创建一个尚未连接的PipedInputStream,并对管道缓冲区使用指定的管道大小。
PipedInputStream(PipedOutputStream src)
创建PipedInputStream,使其连接到管道输出流src。
PipedInputStream(PipedOutputStream src, int pipeSize)
创建一个PipedInputStream,使其连接到管道输出流src,并对管道缓冲区使用指定的管道大小。


题目:
下面有关java hashmap的说法错误的是?
A.HashMap 的实例有两个参数影响其性能:“初始容量” 和 “加载因子”。
B.HashMap 的实现不是同步的,意味着它不是线程安全的
C.HashMap通过开放地址法解决哈希冲突
D.HashMap中的key-value都是存储在Entry数组中的
解析:

正确答案: C

hashmap采用拉链法解决冲突


题目:
JavaWEB中有一个类,当会话种绑定了属性或者删除了属性时,他会得到通知,这个类是:(    )
A.HttpSessionAttributeListener
B.HttpSessionBindingListener
C.HttpSessionObjectListener
D.HttpSessionListener;
E.HttpSession
F.HttpSessionActivationListener
解析:

HttpSessionAttributeListener:可以实现此侦听器接口获取此web应用程序中会话属性列表更改的通知;
HttpSessionBindingListener:当该对象从一个会话中被绑定或者解绑时通知该对象,这个对象由HttpSessionBindingEvent对象通知。这可能是servlet程序显式地从会话中解绑定属性的结果,可能是由于会话无效,也可能是由于会话超时;
HttpSessionObjectListener:没有该接口API;
HttpSessionListener:当web应用程序中的活动会话列表发生更改时通知该接口的实现类,为了接收该通知事件,必须在web应用程序的部署描述符中配置实现类;
HttpSessionActivationListener:绑定到会话的对象可以侦听容器事件,通知它们会话将被钝化,会话将被激活。需要一个在虚拟机之间迁移会话或持久会话的容器来通知所有绑定到实现该接口会话的属性。


题目:

以下代码将打印出

 public static void main (String[] args) { 
    String classFile = "com.jd.". replaceAll(".", "/") + "MyClass.class";
    System.out.println(classFile);
}
A.com. jd
B.com/jd/MyClass.class
C.///MyClass.class
D.com.jd.MyClass
解析:

正确答案: C

由于replaceAll方法的第一个参数是一个正则表达式,而".“在正则表达式中表示任何字符,所以会把前面字符串的所有字符都替换成”/"。如果想替换的只是".",那么久要写成"\.".


题目:
下面哪些情况下该类一定为抽象类?
A.当一个类的一个或多个方法是抽象方法时
B.当类是一个抽象类的子类,并且不能为任何抽象方法提供任何实现细节或方法体时
C.当一个类实现多个接口时
D.当一个类实现一个接口,并且不能为任何抽象方法提供实现细节或方法体时
解析:

正确答案: A B D

A项 一个类中有抽象方法则必须申明为抽象类
B项 抽象类中的抽象方法必须由其子类实现,若子类不能实现则子类也必须定义为抽象类
D项 一个类实现一个接口就必须实现其中所有的抽象方法,若该实现类不能实现接口中的所有方法则实现类定义为抽象类


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值