2019年11月24日 java1

考点1

下面哪段程序能够正确的实现了GBK编码字节流到UTF-8编码字节流的转换:
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" )

解析

显示答案/隐藏答案正确答案: B

先解码再编码

  • new String(src,"GBK")解码得到字符串
  • getBytes("UTF-8")得到字符串对应的UTF8编码字节数组

String类没有fromBytes()和encode以及decode方法

考点2

在java7中,下列哪个说法是正确的:

  • A ConcurrentHashMap使用synchronized关键字保证线程安全
  • B HashMap实现了Collection接口
  • C Arrays.asList方法返回java.util.ArrayList对象
  • D SimpleDateFormat对象是线程不安全的

解析

显示答案/隐藏答案正确答案: D

ConcurrentHashMap使用ReentrantLock来保证线程安全

ConcurrentHashMap使用segment来分段和管理锁,segment继承自ReentrantLock,因此ConcurrentHashMap使用ReentrantLock来保证线程安全。

Arrays.asList()返回Arrays类的静态内部类

Arrays.asList()将一个数组转化为一个List对象,这个方方法返回一个ArrayList类型的对象, 这个ArrayList类是Arrays类的静态内部类
而不是java.util.ArrayList类,

不能对这个列表进行添加删除更新操作,否则会报UnsupportedOperationException异常。

考点3

以下哪个命令用于查看tar(backup.tar)文件的内容而不提取它?()

  • A tar -xvf backup.tar
  • B tar -tvf backup.tar
  • C tar -svf backup.tar
  • D none of these

解析

显示答案/隐藏答案正确答案: B

Linux解压缩和压缩命令

有空了解一下
把常用的tar解压命令总结下,当作备忘:
tar
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。
-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出
下面的参数-f是必须的
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。

tar -cf all.tar *.jpg

这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。

tar -rf all.tar *.gif

这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。

tar -uf all.tar logo.gif

这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。

tar -tf all.tar

这条命令是列出all.tar包中所有文件,-t是列出文件的意思

tar -xf all.tar

这条命令是解出all.tar包中所有文件,-x是解开的意思
压缩
tar –cvf jpg.tar *.jpg 将目录里所有jpg文件打包成tar.jpg
tar –czf jpg.tar.gz *.jpg 将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar –cjf jpg.tar.bz2 *.jpg 将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar –cZf jpg.tar.Z *.jpg 将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
rar a jpg.rar *.jpg rar格式的压缩,需要先下载rar for linux
zip jpg.zip *.jpg zip格式的压缩,需要先下载zip for linux
解压
tar –xvf file.tar 解压 tar包
tar -xzvf file.tar.gz 解压tar.gz
tar -xjvf file.tar.bz2 解压 tar.bz2
tar –xZvf file.tar.Z 解压tar.Z
unrar e file.rar 解压rar
unzip file.zip 解压zip
总结
*.tar 用 tar –xvf 解压
*.gz 用 gzip -d或者gunzip 解压
.tar.gz和.tgz 用 tar –xzf 解压
*.bz2 用 bzip2 -d或者用bunzip2 解压
*.tar.bz2用tar –xjf 解压
*.Z 用 uncompress 解压
*.tar.Z 用tar –xZf 解压
*.rar 用 unrar e解压
*.zip 用 unzip 解压
linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进行压缩。
1.命令格式:
tar[必要参数][选择参数][文件]
2.命令功能:
用来压缩和解压文件。tar本身不具有压缩功能。他是调用压缩功能实现的
3.命令参数:
必要参数有如下:
-A 新增压缩文件到已存在的压缩
-B 设置区块大小
-c 建立新的压缩文件
-d 记录文件的差别
-r 添加文件到已经压缩的文件
-u 添加改变了和现有的文件到已经存在的压缩文件
-x 从压缩的文件中提取文件
-t 显示压缩文件的内容
-z 支持gzip解压文件
-j 支持bzip2解压文件
-Z 支持compress解压文件
-v 显示操作过程
-l 文件系统边界设置
-k 保留原有文件不覆盖
-m 保留文件不被覆盖
-W 确认压缩文件的正确性
可选参数如下:
-b 设置区块数目
-C 切换到指定目录
-f 指定压缩文件
–help 显示帮助信息
–version 显示版本信息
4.常见解压/压缩命令
tar
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
.bz2
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName
.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName
.bz
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知
.tar.bz
解压:tar jxvf FileName.tar.bz
压缩:未知
.Z
解压:uncompress FileName.Z
压缩:compress FileName
.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName
.zip
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
.rar
解压:rar x FileName.rar
压缩:rar a FileName.rar DirName
5.使用实例
实例1:将文件全部打包成tar包
命令:
tar -cvf log.tar log2012.log
tar -zcvf log.tar.gz log2012.log
tar -jcvf log.tar.bz2 log2012.log

考点4

jdk1.8版本之前的前提下,接口和抽象类描述正确的有( )

  • A 抽象类没有构造函数
  • B 接口没有构造函数
  • C 抽象类不允许多继承
  • D 接口中的方法可以有方法体

解析

显示答案/隐藏答案正确答案: BC

抽象类可以有构造函数。只是不能被实例化!
JDK8以后的默认方法和静态方法可以有方法体,题目的方法应该是指普通方法

考点5

以下选项中,合法的赋值语句是()

  • A a>1;
  • B i++;
  • C a= a+1=5;
  • D y = int ( i );

解析

显示答案/隐藏答案正确答案: B
`i++`算是自我赋值 D选择不一定对y为short、byte、char时, y = (int)i; //发生向下转型,不可赋值

考点6

执行完以下代码 int [ ] x = new int[10] ;后,以下哪项说明是正确的( )

  • A x[9]为0
  • B x[9]未定义
  • C x[10]为0
  • D x[0]为空

解析

显示答案/隐藏答案正确答案: A
  • 基本类型数组: byte[],short[],int[] ,默认值为0;
  • boolean[]默认值为false
  • float[],double[],默认值为0.0;
  • 对象类型数组: 默认值为null

考点7

Java的体系结构包含( )。

  • A Java编程语言
  • B Java类文件格式
  • C Java API
  • D JVM

解析

显示答案/隐藏答案正确答案: ABCD

考点8

以下代码的循环次数是

1
2
3
4
5
6
7
8
9
10
11
public class Test {
public static void main(String args[]) {
int i = 7;
do {
System.out.println(--i);
--i;
}
while (i != 0);
System.out.println(i);
}
}
  • A 0
  • B 1
  • C 7
  • D 无限次

解析

显示答案/隐藏答案正确答案: D

每次循环都减2,7÷2不可能等于0。所以死循环。

考点9

一个Java源程序文件中定义几个类和接口,则编译该文件后生成几个以.class为后缀的字节码文件。

  • A 正确
  • B 错误

解析

显示答案/隐藏答案正确答案: A

如果类中有内部类,会产生类名$内部类名.class
如果有匿名类则会产生类名$1.class

有空测试一下

考点10

java8中,下面哪个类用到了解决哈希冲突的开放定址法

  • A LinkedHashSet
  • B HashMap
  • C ThreadLocal
  • D TreeMap

解析

显示答案/隐藏答案正确答案: C
  • ThreadLocalMap使用开放定址法解决hash冲突,
  • HashMap使用链地址法解决hash冲突。

考点11

Java程序的种类有( )

  • A 类(Class)
  • B Applet
  • C Application
  • D Servlet

解析

显示答案/隐藏答案正确答案: BCD

java程序的种类有:
内嵌于web文件中,由浏览器来观看的Applet
可独立运行的Application
服务器端的Servlet

考点12

有这样一段程序:

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Test{ 
public static void main(String [] args){
List list=new ArrayList();
list.add("a");
list.add("b");
list.add("a");
Set set=new HashSet();
set.add("a");
set.add("b");
set.add("a");
System.out.println(list.size()+","+set.size());
}
}

请问运行主要的程序会打印出的是什么()

  • A 2,2
  • B 2,3
  • C 3,2
  • D 3,3

解析

显示答案/隐藏答案正确答案: C

list有序可重复,set无序不可重复

考点13

以下程序输出()
public static void main(String[] args) {
int num = 2;
switch (num) {
case 1:
++num;
case 2:
++num;
case 3:
++num;
default:
++num;
break;
}
System.out.println(num);
}
}

  • A 2
  • B 3
  • C 4
  • D 5

解析

显示答案/隐藏答案正确答案: D

case遇到break才跳出

  • 匹配到case 2 num等于3
  • 但是其后没有break,所以继续执行case 3 num等于4、
  • 还是没有break,继续匹配到default语句 num等于5

所以答案为 5

考点14

以下代码在编译和运行过程中会出现什么情况

1
2
3
4
5
6
7
8
9
10
public class TestDemo{
private int count;
public static void main(String[] args) {
TestDemo test=new TestDemo(88);
System.out.println(test.count);
}
TestDemo(int a) {
count=a;
}
}
  • A 编译运行通过,输出结果是88
  • B 编译时错误,count变量定义的是私有变量
  • C 编译时错误,System.out.println方法被调用时test没有被初始化
  • D 编译和执行时没有输出结果

解析

显示答案/隐藏答案正确答案: A