Java日常练习题,每天进步一点点(31)

目录
  • 1、现有如下代码段:
  • 2、对于非运行时异常,程序中一般可不做处理,由java虚拟机自动进行处理。
  • 3、多重继承的概念在Java中实现是通过如下哪些?()
  • 4、关于 Socket 通信编程,以下描述正确的是:( )
  • 5、以下哪个命令用于查看tar(backup.tar)文件的内容而不提取它?()
  • 6、下列哪个选项是Java调试器?如果编译器返回程序代码的错误,可以用它对程序进行调试。
  • 7、检查程序,是否存在问题,如果存在指出问题所在,如果不存在,说明输出结果。
  • 8、在 myjsp.jsp 中,关于下面的代码说法错误的是: ( )
  • 9、根据下面的代码,
  • 10、关于Java中的ClassLoader下面的哪些描述是错误的:( )
    • 答案汇总:
  • 总结

承蒙各位厚爱,我们一起每天进步一点点!(鼠标选中空白处查看答案)

1、现有如下代码段:

x = 2;
while(x<n/2){
	x = 2*x;
}  

假设n>=0,则其时间复杂度应为( )

正确答案: A

O(log2(n))

O(nlog2(n))

O(n)

O(n^2)

题解:
循环终止条件是 x > n/2

2、对于非运行时异常,程序中一般可不做处理,由java虚拟机自动进行处理。

正确答案: B

正确

错误

题解:
运行异常,可以通过java虚拟机来自行处理。非运行异常,我们应该捕获或者抛出。

3、多重继承的概念在Java中实现是通过如下哪些?()

I. 扩展两个或多个类

II. 扩展一个类并实现一个或多个接口。

III. 实现两个或更多接口。

正确答案: B

只有I &II

只有II & III

只有III

都是

题解:
Java只支持单继承,实现多重继承三种方式:
(1)直接实现多个接口
(2)扩展(extends)一个类然后实现一个或多个接口
(3)通过内部类去继承其他类

4、关于 Socket 通信编程,以下描述正确的是:( )

正确答案: C

客户端通过new ServerSocket()创建TCP连接对象

客户端通过TCP连接对象调用accept()方法创建通信的Socket对象

客户端通过new Socket()方法创建通信的Socket对象

服务器端通过new ServerSocket()创建通信的Socket对象

题解:
客户端通过new Socket()方法创建通信的Socket对象
服务器端通过new ServerSocket()创建TCP连接对象

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

正确答案: B

tar -xvf backup.tar

tar -tvf backup.tar

tar -svf backup.tar

none of these

题解:
-s 还原文件的顺序和备份文件内的存放顺序相同。
-t 列出备份文件的内容。
-v 显示指令执行过程。
-f 指定压缩文件
-x 从备份文件中还原文件。
所以不能有x和s

把常用的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

6、下列哪个选项是Java调试器?如果编译器返回程序代码的错误,可以用它对程序进行调试。

正确答案: C

java.exe

javadoc.exe

jdb.exe

javaprof.exe

题解:
javac.exe是编译.java文件
java.exe是执行编译好的.class文件
javadoc.exe是生成Java说明文档
jdb.exe是Java调试器
javaprof.exe是剖析工具

7、检查程序,是否存在问题,如果存在指出问题所在,如果不存在,说明输出结果。

package algorithms.com.guan.javajicu;
public class Inc {
    public static void main(String[] args) {
       Inc inc = new Inc();
       int i = 0;
       inc.fermin(i);
       i= i ++;
       System.out.println(i);
    }
    void fermin(int i){
       i++;
    }
}

正确答案: A

0

1

2

3

题解:
i++ 先赋值在计算结果;
++i 先计算结果再赋值。
int i = 0;
i = i ++; // 左边这个i其实是障眼法,就是一个中间变量,可以和下行的i合并;
System.out.println(i); 这里等价于:
int i = 0;
System.out.println(i++); 这下再看,先赋值(先将i传给println函数打印出来,在计算表达式结果)
所以打印出来的是0,实际上整个表达式的结果已经是1了,只是没有打印出整个表达式的结果。
所以我们知道如下结论:
1、无论怎么变,i++和++i的整个表达式的结果都是1.
2、有时我们打印的是表达式的结果(System.out.println(++i)),
有时我们打印的只是一个中间变量(System.out.println(i++))。
Ps:
int i = 0;
i++;
System.out.println(i); //值为1 打印的是表达式的结果

int i = 0;
++i;
System.out.println(i); //值为1 打印的是表达式的结果

int i = 0;
i = i++;
System.out.println(i); //值为0 打印的是中间变量(JVM中间缓存变量机制)

int i = 0;
i = ++i;
System.out.println(i); //值为1 打印的是表达式的结果

8、在 myjsp.jsp 中,关于下面的代码说法错误的是: ( )

<%@ page language=“java” import=“java.util.*” errorPage=“error.jsp” isErrorPage=“false” %>

正确答案: A

该页面可以使用 exception 对象

该页面发生异常会转向 error.jsp

存在 errorPage 属性时,isErrorPage 是默认为 false

error.jsp 页面一定要有isErrorPage 属性且值为 true

题解:
A项:页面有isErrorPage属性且值为false,不可以使用 exception 对象
当isErrorPage ="false"时,用errorPage=“error.jsp”(isErrorPage默认是false)
当isErrorPage ="true"时,页面会直接使用exception

9、根据下面的代码,

String s = null;

会抛出NullPointerException异常的有()。

正确答案: A C

if( (s!=null) & (s.length()>0) )
if( (s!=null) && (s.length()>0) )
if( (s==null) | (s.length()==0) )
if( (s==null) || (s.length()==0) )

题解:
逻辑运算符:&&和|| 是按照“短路”方式求值的。如果第一个操作数已经能够确定表达式的值,第二个操作数就不必计算了。
位移运算符:&和| 运算符应用于布尔值,得到的结果也是布尔值,不按“短路”方式计算。即在得到计算结果之前,一定要计算两个操作数的值。
String s=null;没有给s开辟任何空间,当执行length()方法时候,
因为没有具体指向的内存空间,所以报出NullPointerException没有指向的错误。
A项: &是与,位运算,两个都得执行,执行到s.length()自然就报错了。
B项: S!=null 结果为false 整体就为false ,&& 后面就不会执行。下面的同理。

10、关于Java中的ClassLoader下面的哪些描述是错误的:( )

正确答案: B D F

A:默认情况下,Java应用启动过程涉及三个ClassLoader: Boostrap, Extension, System

B:一般的情况不同ClassLoader装载的类是不相同的,但接口类例外,对于同一接口所有类装载器装载所获得的类是相同的

C:类装载器需要保证类装载过程的线程安全

D:ClassLoader的loadClass在装载一个类时,如果该类不存在它将返回null

E:ClassLoader的父子结构中,默认装载采用了父优先

F:所有ClassLoader装载的类都来自CLASSPATH环境指定的路径

题解:
A、java中类的加载有5个过程,加载、验证、准备、解析、初始化;这便是类加载的5个过程,而类加载器的任务是根据一个类的全限定名来读取此类的二进制字节流到JVM中,然后转换为一个与目标类对应的java.lang.Class对象实例,在虚拟机提供了3种类加载器,引导(Bootstrap)类加载器、扩展(Extension)类加载器、系统(System)类加载器(也称应用类加载器)。A正确
B、一个类,由不同的类加载器实例加载的话,会在方法区产生两个不同的类,彼此不可见,并且在堆中生成不同Class实例。所以B前面部分是正确的,后面接口的部分真的没有尝试过,等一个大佬的讲解吧;
C、类加载器是肯定要保证线程安全的;C正确
D、装载一个不存在的类的时候,因为采用的双亲加载模式,所以强制加载会直接报错,D错误
java.lang.SecurityException: Prohibited package name: java.lang
E、双亲委派模式是在Java 1.2后引入的,其工作原理的是,如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行,如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的启动类加载器,如果父类加载器可以完成类加载任务,就成功返回,倘若父类加载器无法完成此加载任务,子加载器才会尝试自己去加载,这就是双亲委派模式,即每个儿子都很懒,每次有活就丢给父亲去干,直到父亲说这件事我也干不了时,儿子自己想办法去完成,所以默认是父装载,E正确
F、自定义类加载器实现 继承ClassLoader后重写了findClass方法加载指定路径上的class,F错误

答案汇总:

1、正确答案: A

2、正确答案: B

3、正确答案: B

4、正确答案: C

5、正确答案: B

6、正确答案: C

7、正确答案: A

8、正确答案: A

9、正确答案: A C

10、正确答案: B D F

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • Java日常练习题,每天进步一点点(33)

    目录 1.如果一个方法或变量是"private"访问级别,那么它的访问范围是: 2.代码将打印? 3.下面关于hibernate核心接口说明错误的是? 4.以下哪项陈述是正确的? 5.在jdk1.5之后,下列 java 程序输出结果为______. 6.关于 访问权限说法正确 的是 ? ( ) 7.下面哪个方法与Applet的显示无关? 8.以下哪几种是java的基本数据类型. 9.下列不是 Java 关键字的是 ( ) 10.下面有关java的引用类型,说法正确的有? 答案汇总: 总

  • Java日常练习题,每天进步一点点(29)

    目录 1.下列不属于访问控制符的是() 2.Java 源程序文件的扩展名为() 3.以下程序的执行结果是: 4.给定代码: 5.下面有关List接口.Set接口和Map接口的描述,错误的是? 6.以下代码的输出结果是? 7.URL u =new URL("http://www.123.com");.如果www.123.com不存在,则返回______. 8.what is the result of the following code? 9.下面关于volatile的功能说法正确的是

  • Java日常练习题,每天进步一点点(34)

    目录 1.abstract和final可以同时作为一个类的修饰符.( ) 2.下列描述中,错误的是 3.关于protected 修饰的成员变量,以下说法正确的是 4.以下哪个类包含方法flush()?() 5.设m和都是int类型,那么以下for循环语句的执行情况是( ) 6.下列关于final.finally.finalize说法正确的是( ) 7.Java的集合框架中重要的接口java.util.Collection定义了许多方法.选项中哪个方法是Collection接口所定义的( ) 8.

  • Java日常练习题,每天进步一点点(32)

    目录 1.如果一个方法或变量是"private"访问级别,那么它的访问范围是: 2.代码将打印? 3.下面关于hibernate核心接口说明错误的是? 4.以下哪项陈述是正确的? 5.在jdk1.5之后,下列 java 程序输出结果为______. 6.关于 访问权限说法正确 的是 ? ( ) 7.下面哪个方法与Applet的显示无关? 8.以下哪几种是java的基本数据类型. 9.下列不是 Java 关键字的是 ( ) 10.下面有关java的引用类型,说法正确的有? 答案汇总: 总

  • Java日常练习题,每天进步一点点(30)

    目录 1.以下程序段的输出结果为: 2.在java7中,下列不能做switch()的参数类型是? 3.以下代码的输出结果是? 4.What results from the following code fragment? 5.对于构造方法,下列叙述正确的是( ). 6.JDK1.7版本之前,接口和抽象类描述正确的有( ) 7.以下关于JAVA语言异常处理描述正确的有? 8.下面程序输出结果为(): 9.java中关于继承的描述正确的是() 10.What is Static Method in

  • Java日常练习题,每天进步一点点(31)

    目录 1.现有如下代码段: 2.对于非运行时异常,程序中一般可不做处理,由java虚拟机自动进行处理. 3.多重继承的概念在Java中实现是通过如下哪些?() 4.关于 Socket 通信编程,以下描述正确的是:( ) 5.以下哪个命令用于查看tar(backup.tar)文件的内容而不提取它?() 6.下列哪个选项是Java调试器?如果编译器返回程序代码的错误,可以用它对程序进行调试. 7.检查程序,是否存在问题,如果存在指出问题所在,如果不存在,说明输出结果. 8.在 myjsp.jsp 中

  • Java日常练习题,每天进步一点点(47)

    目录 1.public interface IService {String NAME="default";} 2.关于以下程序代码的说明正确的 3.以下 _____ 不是 Object 类的方法 4.try块后必须有catch块.() 5.已知有下列Test类的说明,在该类的main方法内,则下列哪个语句是正确的?() 6.String s = new String("xyz");创建了几个StringObject? 7.下面有关JVM内存,说法错误的是? 8.问

  • Java日常练习题,每天进步一点点

    目录 1.类 ABC 定义如下: 2.后端获取数据,向前端输出过程中,以下描述正确的是 3.在异常处理中,以下描述不正确的有 4.如果一个接口Cup有个方法use(),有个类SmallCup实现接口Cup,则在类SmallCup中正确的是? ( ) 5.下面的程序将来打印什么?() 6.执行以下程序后的输出结果是() 7.java语言的下面几种数组复制方法中,哪个效率最高? 8.有关会话跟踪技术描述正确的是() 9.关于Java内存区域下列说法不正确的有哪些 10.下面的Java赋值语句哪些是有

  • Java日常练习题,每天进步一点点(9)

    目录 1."先进先出"的容器是:( ) 2.不考虑反射机制,一个子类显式调用父类的构造器必须用super关键字.( ) 3.以下是java concurrent包下的4个类,选出差别最大的一个 4.判断对错.在java的多态调用中,new的是哪一个类就是调用的哪个类的方法. 5.下面属于java引用类型的有? 6.有以下程序段, 则下面正确的选项是() 7.往OuterClass类的代码段中插入内部类声明, 哪一个是错误的: 8.Java.Thread的方法resume()负责重新开始

  • Java日常练习题,每天进步一点点(15)

    目录 1.main 方法是 Java Application 程序执行的入口点,以下描述哪项是合法的(). 2.一般情况下,以下哪个选项不是关系数据模型与对象模型之间匹配关系? 3.下列关于修饰符混用的说法,错误的是( ) 4.某程序要求每次输入只能是正整数,并且每次输入的数值要求必须是100的倍数且小于等于500,则下列哪个是正确的无效等价类( ) 5.根据以下代码段,下列说法中正确的是( ). 6.在创建派生类对象,构造函数的执行顺序() 7.关于下面的一段代码,以下哪些说法是正确的: 8.

  • Java日常练习题,每天进步一点点(14)

    目录 1.下面程序的运行结果:() 2.如果int x=20, y=5,则语句System.out.println(x+y +""+(x+y)+y); 的输出结果是() 3.有以下类定义: 4.以下代码的输出的正确结果是 5.下列说法正确的是() 6.以下代码输出的是: 7.非抽象类实现接口后,必须实现接口中的所有抽象方法,除了abstract外,方法头必须完全一致. 8.下列关于容器集合类的说法正确的是? 9.下面说法正确的是?() 10.下面的对象创建方法中哪些会调用构造方法 ()

  • Java日常练习题,每天进步一点点(13)

    目录 1.以下关于java封装的描述中,正确的是: 2.请问所有的异常类皆直接继承于哪一个类?() 3.Which statement is true for the class java.util.ArrayList? 4.以下 b 的值是: byte b = (byte)129; 5.哪个类可用于处理 Unicode? 6.下面代码的运行结果是( ) 7.以下哪些继承自 Collection 接口() 8.程序中常采用变量表示数据,变量具有名.地址.值.作用域.生存期等属性.关于变量的叙述,

  • Java日常练习题,每天进步一点点(12)

    目录 1.Which is the return type of the method main()? 2.java中用()字指明继承关系.用()关键字指明对接口的实现. 3.顺序执行下列程序语句后,则b的值是() 4.下面程序的输出是什么? 5.下面属于JSP内置对象的是? 6.关于抽象类与接口,下列说法正确的有? 7.下面哪些写法能在 java8 中编译执行() 8.Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持,下面关于Java反射的描述,哪些是错误的:( ) 9.

  • Java日常练习题,每天进步一点点(11)

    目录 1.对接口的描述正确的是() 2.类中的数据域使用private修饰为私有变量,所以任何方法均不能访问它. 3.已知如下类定义: 4.在java的一个异常处理中,可以包含多个的语句块是 ( ). 5.关于Java语言中的final关键字的使用,下列说法正确的是() 6.在 main() 方法中给出的整型数组,如果将其写到一个文件中,需要( ). 7.下列有关Servlet的生命周期,说法不正确的是? 8.What is displayed when the following is exe

  • Java日常练习题,每天进步一点点(16)

    目录 1.main 方法是 Java Application 程序执行的入口点,以下描述哪项是合法的(). 2.一般情况下,以下哪个选项不是关系数据模型与对象模型之间匹配关系? 3.下列关于修饰符混用的说法,错误的是( ) 4.某程序要求每次输入只能是正整数,并且每次输入的数值要求必须是100的倍数且小于等于500,则下列哪个是正确的无效等价类( ) 5.根据以下代码段,下列说法中正确的是( ). 6.在创建派生类对象,构造函数的执行顺序() 7.关于下面的一段代码,以下哪些说法是正确的: 8.

随机推荐