尚学堂JAVA第八章 作业

Source


作业链接: http://www.sxt.cn/Java_jQuery_in_action/eight-task.html

一、选择题

1、以下选项中关于int和Integer的说法错误的是(B D )。(选择二项)

A.int是基本数据类型,Integer是int的包装类,是引用数据类型

B.int的默认值是0,Integer的默认值也是0

C.Integer可以封装了属性和方法提供更多的功能

D.Integer i=5;该语句在JDK1.5之后可以正确执行,使用了自动拆箱功能

(解析B:int的默认值是0,integer是对象,默认值是null)
(解析D:这里使用了自动装箱的功能)

2、分析如下Java代码,该程序编译后的运行结果是( )。(选择一项)

public static void main(String[ ] args) {
    String str=””;
    str.concat("abc");
    str.concat("def");
    System.out.println(str);
}

A.null

B.abcdef

C.编译错误

D.运行时出现NullPointerException异常

(解析A:String类的对象是final型,不能被修改。concat方法是生成一个新的字符串,不是修改原字符串)

3、以下关于String类的代码的执行结果是( B)。(选择一项)

public class Test2 {
    public static void main(String args[]) {
        String s1 = new String("bjsxt");
        String s2 = new String("bjsxt");
        if (s1 == s2)            
             System.out.println("s1 == s2");
        if (s1.equals(s2))        
             System.out.println("s1.equals(s2)");
    }
}

A.s1 == s2

B.s1.equals(s2)

C.s1 == s2
  s1.equals(s2)

D.以上都不对

(解析为什么A错误:s1和s2都是new的对象,所以s1==s2是错误的)

4、在Java中,以下File类的方法中( C)用来判断是否是目录。(选择一项)

A.isFile( )

B.getFile( )

C.isDirectory( )

D.getPath( )

5、分析下面代码的结果( A)。(选择一项)

public static void main(String args[]) {
        String s = "abc";
        String ss = "abc";
        String s3 = "abc" + "def";//相当于s3 = "abcdef";
        String s4 = "abcdef";
        String s5 = ss + "def";
        String s2 = new String("abc");
        System.out.println(s == ss);//true
        System.out.println(s3 == s4);//true,因为编译器做了优化,直接在编译的时候将字符串进行拼接
        System.out.println(s4 == s5);//falese,编译器编译的时候不知道变量中存储的是什么,所以没办法在编译的时候优化
        System.out.println(s4.equals(s5));//true
    }

A.true true false true

B.true true true false

C.true false true true

D.false true false true
(解析直接注释在代码中了)

二、简答题

1、什么是自动装箱和自动拆箱?

http://www.sxt.cn/Java_jQuery_in_action/eight-autoboxing-unboxing.html
自动装箱:

基本类型的数据处于需要对象的环境中时,会自动转为“对象”。
我们以Integer为例:在JDK1.5以前,这样的代码 Integer i = 5 是错误的,必须要通过Integer i = new Integer(5) 这样的语句来实现基本数据类型转换成包装类的过程;而在JDK1.5以后,Java提供了自动装箱的功能,因此只需Integer i = 5这样的语句就能实现基本数据类型转换成包装类,这是因为JVM为我们执行了Integer i = Integer.valueOf(5)这样的操作,这就是Java的自动装箱。

自动拆箱:

每当需要一个值时,对象会自动转成基本数据类型,没必要再去显式调用intValue()、doubleValue()等转型方法。
如 Integer i = 5;int j = i; 这样的过程就是自动拆箱。
我们可以用一句话总结自动装箱/拆箱:
自动装箱过程是通过调用包装类的valueOf()方法实现的,而自动拆箱过程是通过调用包装类的

2、String、StringBuffer、StringBuilder区别与联系。

http://www.sxt.cn/Java_jQuery_in_action/eight-buffebuild.html

String:不可变字符序列。
StringBuffer:可变字符序列,并且线程安全,但是效率低。
StringBuilder:可变字符序列,线程不安全,但是效率高(一般用它)。

3、String str=”bjsxt”; 和String str= new String(“bjsxt”); 的区别。

String str=”bjsxt”中的str是常量对象
String str= new String(“bjsxt”)中的str是String对象

4、File类的方法mkdir跟mkdirs,有什么区别?

mkdir:目录结构中有一个不存在,则不会创建整个目录树
mkdirs:目录结构中有一个不存在也没关系;创建整个目录树

5、简述枚举的使用。

https://blog.csdn.net/qq_34834846/article/details/81624361

三、编码题

1、验证键盘输入的用户名不能为空,长度大于6,不能有数字。

提示:使用字符串String类的相关方法完成

可以使用Scanner的nextLine()方法,该方法可以接口空的字符串。