牛客刷题2020年9月9日

  1. 下列说法正确的有()
    正确答案: A 你的答案: D (错误)
数组是一种对象
数组属于一种原生类
int number=[]={31,23,33,43,35,63}
数组的大小可以任意改变
解释:原生类是指Java中,数据类型分为基本数据类型(或叫做原生类、内置类型)和引用数据类型。->数组是一种引用类型。
  1. 以下哪一项正则能正确的匹配网址: http://www.bilibili.com/video/av21061574 ()
    正确答案: B 你的答案: D (错误)
/^(https?:\/\/)?([a-zA-Z\d]+).bilibili.com\/?video\/av(\D{1,8})\/?$/
/^(http:\/\/)?(\w+)\.bilibili\.com\/?video\/av(\d{1,8})\/?$/
/^(https?:\/\/)?(\w+)\.bilibili\.com\/?\w*$/
/^(http:\/\/)?([a-zA-Z\d]+).bilibili.com\/?video\/av\w*\/+$/
解释:
正则表达式的知识点:
首先,^表示匹配输入的开始,$表示匹配输入的结束
每个选项从前向后看,http都能够严格匹配
?表示匹配某元素0次或1次,这里四个选项都没有问题,能够匹配0次或1次字符s
接下来:严格匹配,\/\/严格匹配两个//
接着往下看,[]表示字符集合,它用在正则表达式中表示匹配集合中的任一字符
A D 选项中的 [a-zA-Z\d] 表示匹配一个小写字母 或者 大写字母 或者 数字
B C 选项中的 \w 表示匹配字母数字或下划线(注意这里比A D中能多匹配下划线类型)
+表示匹配某元素1次或多次,到这里四个选项都能够完美匹配字符www
.可以匹配除了换行符\n \r外的任何字符
接下来我们看选项A,bilibili com video av都严格匹配,而 \D 表示匹配一个非数字字符而非数字字符,av后的数字是无法匹配成功的,A错误
B选项,\d匹配数字,{m,n}表示最少匹配m次,最多匹配n次,\/?能匹配末尾的0个或1个/字符,B正确
C选项,*表示匹配某元素0次或多次,但 \w 并不能匹配字符 /,C错误
D选项,前面都对,错在最后的\/+至少要匹配一个/,而原字符串最后并没有/
  1. 下面关于JAVA的垃圾回收机制,正确的是( )
    正确答案: B 你的答案: C (错误)
当调用“System.gc()”来强制回收时,系统会立即回收垃圾
垃圾回收不能确定具体的回收时间
程序可明确地标识某个局部变量的引用不再被使用
程序可以显式地立即释放对象占有的内存
解释:
java提供了一个系统级的线程,即垃圾回收器线程。用来对每一个分配出去的内存空间进行跟踪。当JVM空闲时,自动回收每块可能被回收的内存,GC是完全自动的,不能被强制执行。程序员最多只能用System.gc()来建议执行垃圾回收器回收内存,但是具体的回收时间,是不可知的。当对象的引用变量被赋值为null,可能被当成垃圾。
  1. String s = new String("xyz");创建了几个StringObject?
    正确答案: A 你的答案: C (错误)
两个或一个都有可能
两个
一个
三个
解释:
着重解释:这种类型的题很容易考,考察的就是java的基础牢固不牢固。具体可以看下解释内容
1.String对象的两种创建方式:
第一种方式: String str1 = "aaa"; 是在常量池中获取对象("aaa" 属于字符串字面量,因此编译时期会在常量池中创建一个字符串对象),
第二种方式: String str2 = new String("aaa") ; 一共会创建两个字符串对象一个在堆中,一个在常量池中(前提是常量池中还没有 "aaa" 字符串对象)。
System.out.println(str1==str2);//false

2.String类型的常量池比较特殊。它的主要使用方法有两种:
直接使用双引号声明出来的String对象会直接存储在常量池中。
如果不是用双引号声明的String对象,可以使用 String 提供的 intern 方法。 String.intern() 是一个 Native 方法,它的作用是: 如果运行时常量池中已经包含一个等于此 String 对象内容的字符串,则返回常量池中该字符串的引用; 如果没有,则在常量池中创建与此 String 内容相同的字符串,并返回常量池中创建的字符串的引用。
String s1 = new String("AAA");
String s2 = s1.intern();
String s3 = "AAA";
System.out.println(s2);//AAA
System.out.println(s1 == s2);//false,因为一个是堆内存中的String对象一个是常量池中的String对象,
System.out.println(s2 == s3);//true, s2,s3指向常量池中的”AAA“
  1. 在Web应用程序中,( )负责将HTTP请求转换为HttpServletRequest对象
    正确答案: C 你的答案: A (错误)
Servlet对象
HTTP服务器
Web容器
JSP网页
解释:
servlet是运行在服务器端的小应用程序,是接收网络服务的请求和产生响应的一种方式。
servlet的功能:接受http请求,产生动态http响应。
  1. 对于文件的描述正确的是( )
    正确答案: D 你的答案: B (错误)
A 文本文件是以“.txt”为后缀名的文件,其他后缀名的文件是二进制文件。
B File类是Java中对文件进行读写操作的基本类。
C 无论文本文件还是二进制文件,读到文件末尾都会抛出EOFException异常。
D Java中对于文本文件和二进制文件,都可以当作二进制文件进行操作。
解释:
A.文件分为文本文件和二进制文件,计算机只认识二进制,所以实际上都是二进制的不同解释方式。文本文件是以不同编码格式显示的字符,例如Ascii、Unicode等,window中文本文件的后缀名有".txt",".log",各种编程语言的源码文件等;二进制文件就是用文本文档打开是看不懂乱码,只要能用文本打开的文件都可以算是文本文件,只是显示的结果不是你想要的,二进制文件只有用特殊的应用才能读懂的文件,例如".png",".bmp"等,计算机中大部分的文件还是二进制文件。
B.File类是对文件整体或者文件属性操作的类,例如创建文件、删除文件、查看文件是否存在等功能,不能操作文件内容;文件内容是用IO流操作的。
C.当输入过程中意外到达文件或流的末尾时,抛出EOFException异常,正常情况下读取到文件末尾时,返回一个特殊值表示文件读取完成,例如read()返回-1表示文件读取完成。
D.上面A选项已经说了,不论是文本文件还是二进制文件,在计算机中都是以二进制形式存储的,所以都当做二进制文件读取。

最后说一下final关键字吧:

1.final修饰变量,则等同于常量

2.final修饰方法中的参数,称为最终参数。

3.final修饰类,则类不能被继承

4.final修饰方法,则方法不能被重写。

5.final 不能修饰抽象类

6.final修饰的方法可以被重载 但不能被重写