常用工具类作业

常用工具类作业

一、    填空题

  1. 在Java中每个Java基本类型在java.lang包中都在一个相应的包装类,把基本类型数据转换为对象,其中包装类Integer是____Number________的直接子类。
  2. 包装类Integer的静态方法可以将字符串类型的数字”123”转换成基本整型变量n,其实现语句是:__int n = integer.ParseInt(“123”);__________。
  3. 在Java中使用java.lang包中的__StringBufer和StringBuilder__________类来创建一个字符串对象,它代表一个字符序列可变的字符串,可以通过相应的方法改变这个字符串对象的字符序列。
  4. StringBuilder类是StringBuffer类的替代类,两者的共同点是都是可变长度字符串,其中线程安全的类是______StringBuffer________。
  5. DateFormat类可以实现字符串和日期类型之间的格式转换,其中将日期类型转换为指定的字符串格式的方法名是__format____________。
  6. 使用Math.random( )返回带正号的 double值,该值大于等于0.0且小于1.0。使用该函数生成[30,60]之间的随机整数的语句是__(int)(Math.random)*31+30_ ___________。
  7. JDK1.5后提供了___enum_________关键字,用以定义枚举类。枚举类是一种特殊的类,可以有自己的属性、方法和构造方法。
  8. File对象调用方法   creatNewFile        创建一个目录,不包括所有必需但不存在的父目录,当且仅当已创建目录时,返回true;否则返回false。

 

二、    选择题

1.

以下选项中关于intInteger的说法错误的是(BD 。(选择二项)

 

 

 

 

A.

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

 

B.

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

 

C.

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

 

D.

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

 

2.

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

 

public static void main(String[ ] args) {

         String str=null;

         str.concat("abc");

         str.concat("def");

         System.out.println(str);

}

 

 

 

 

A

null

 

B.

abcdef

 

C.

编译错误

 

D.

运行时出现NullPointerException异常

 

 

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.

以上都不对

 

4.

以下关于StringBuffer类的代码的执行结果是(  D  。(选择一项)

 

public class TestStringBuffer {

         public static void main(String args[]) {

                  StringBuffer a = new StringBuffer("A");

                  StringBuffer b = new StringBuffer("B");

                  mb_operate(a, b);

                  System.out.println(a + "." + b);

         }

         static void mb_operate(StringBuffer x, StringBuffer y) {

                  x.append(y);

                  y = x;  

         }

}

 

 

 

 

A.

A.B 

 

B.

A.A

 

C.

AB.AB

 

D.

AB.B

 

5.

给定如下Java代码,编译运行的结果是( C   )。(选择一项)

 

public static void main(String []args){

         String s1= new String("pb_java_OOP_T5");

         String s2 = s1.substring(s1.lastIndexOf("_"));

         System.out.println("s2="+s2);

}

 

 

 

 

 

A

s2=_java_OOP_T5

 

B.

s2=_OOP_T5

 

C.

s2=_T5

 

D.

编译出错

              6.

对于语句String s="my name is kitty",以下选项中可以从其中截取”kitty”的是(   AB (选择二项)

 

 

 

 

A

s.substring(11,16)

 

B.

s.substring(11)

 

C.

s.substring(12,17)

 

D.

s.substring(12,16)

 

7.

分析下面的Java程序段,编译运行后的输出结果是( D   )。(选择一项)

 

public class Test {

         public void changeString(StringBuffer sb) {

                  sb.append("stringbuffer2");

         }

         public static void main(String[] args) {

                  Test a = new Test();

                  StringBuffer sb = new StringBuffer("stringbuffer1");

                  a.changeString(sb);

                  System.out.println("sb = " + sb);

         }

}

 

 

 

 

A

sb = stringbuffer2stringbuffer1

 

B.

sb = stringbuffer1

 

C.

sb = stringbuffer2

 

D.

sb = stringbuffer1stringbuffer2

 

8.

给定如下Java代码,编译运行的结果是( A   )。(选择一项)

 

public static void main(String[] args) {

         StringBuffer sbf = new StringBuffer("java");

         StringBuffer sbf1 = sbf.append(",C#");

         String sbf2 = sbf + ",C#";

         System.out.print(sbf.equals(sbf1));

         System.out.println(sbf2.equals(sbf));

}

 

 

 

 

A

true  false

 

B.

true  true

 

C.

false  false

 

D.

false  true

 

 

9.

分析下面的Java程序,编译运行后的输出结果是(B    )。(选择一项)

 

public class Example {

         String str = new String("good");

         char[] ch = { 'a', 'b', 'c' };

         public static void main(String args[]) {

                  Example ex = new Example( );

                  ex.change(ex.str, ex.ch);

                  System.out.print(ex.str + "and");

                  System.out.print(ex.ch);

         }

         public void change(String str, char ch[]) {

                  str = "test ok";

                  ch[0] = 'g';

         }

}

 

 

 

 

A

goodandabc

 

B.

goodandgbc

 

C.

test okandabc

 

D.

test okandgbc

 

10.

以下程序片段中可以正常编译的是(   C  )。(选择一项)

 

 

 

 

A

String s = "Gone with the wind"; 

String k = s+t;

String t = "good";

 

B.

String s = "Gone with the wind";

String t;          

t = s[3]+"one";

 

C.

String s = "Gone with the wind";

String stanfard = s.toUpperCase();

 

D.

String s = "home directory";

String t = s – "directory";

 

11.

File类中的( B   )方法可以用来判断文件或目录是否存在。(选择一项)

 

 

 

 

A

exist()

 

B.

exists()

 

C.

fileExist()

 

D.

fileExists()

 

12.

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

 

 

 

 

A

isFile( )

 

B.

getFile( )

 

C.

isDirectory( )

 

D.

getPath( )

 

13.

分析下面的Java程序,编译运行后的输出结果是( B   )。(选择一项)

 

public class Example {

         String str = new String("good");

         char[] ch = { 'a', 'b', 'c' };

         public static void main(String args[]) {

                  Example ex = new Example( );

                  ex.change(ex.str, ex.ch);

                  System.out.print(ex.str + "and");

                  System.out.print(ex.ch);

         }

         public void change(String str, char ch[]) {

                  str = "test ok";

                  ch[0] = 'g';

         }

}

 

 

 

 

A

goodandabc

 

B.

goodandgbc

 

C.

test okandabc

 

D.

test okandgbc

 

 

三、    判断题

  1. 方法Integer.parseInt()的作用是将一个整数转变成String。( F   )
  2. JK1.5后提供了自动装箱和自动拆箱功能,从而可以实现基本数据类型和对应包装类之间的自动转换,简化了操作。(  T  )
  3. 执行语句String str="abcedf"; int len=str.length; 后,能够得到字符串的长度是6。(  F  )
  4. 运算符“==”用于比较引用时,如果两个引用指向内存同一个对象,则返回true。(T  )
  5. java.sql.Date类和java.util.Date类的关系是前者是后者的父类,其中前者没有提供无参数构造方法,而后者可以提供无参数构造方法来获取当前时间。(   F )
  6. 求x的y次方,其表达式为:Math.pow(x,y)。(  T  )
  7. 7.       一个File对象可以代表一个文件或目录,它可以获取文件和目录属性,也可以访问文件内容。(   )
  8. 8.       在使用File类中的delete( )方法时,删除时可能文件不存在,所以我们最好先判断一下是否存在,不然会出现NullPointerException异常。(   
  9. 9.       程序调用自身的编程技巧称为递归。递归的特点是编程简单并且节省内存。(   )
  10. 10.    任何可用递归解决的问题也能使用循环解决,递归既花时间又耗内存,在要求高性能的情况下尽量避免使用递归。(   

 

四、    简答题

  1. 自动装箱和自动拆箱

    装箱就是自动将基本数据类型转换为包装器类型;

  (1)  Integer it = 200;

  实际上是:Integer it3 = Integer.valueOf(100);

  自动装箱功能:把int类型自动装载到Integer中  先装箱,再赋值

  拆箱就是 自动将包装器类型转换为基本数据类型。

  (2)  Integer it2 = it+it1;

  实际上是:Integer it2 = Integer.valueOf(it2.intValue() + it3.intValue());

  先对it2 和 it3做拆箱功能,然后相加,得到一个int类型的值,然后在对这个int类型的值,做装箱操作,最后再赋值

 

  1. String、StringBuffer、StringBuilder区别与联系。

    (1):是否产生新的对象

              String会产生新的对象,效率低下,浪费内存空间

            StringBuffer,StringBuilder,不会产生新的对象,都是在原本的缓冲区中操作

          (2):是否可变

               String是不可变的

               StringBuffer,StringBuilder可变的

          (3):是否安全

              StringBuffer是安全的

              StringBuilder是不安全

          (4):是否多线程

               StringBuffer适合多线程操作

               StringBuilder适合单线程操作

          (5):效率

               StringBuilder>StringBuffer>String

  1. String str=”bjsxt”;和String str= new String(“bjsxt”);的区别

    1.当使用String str=" bjsxt ",这种方式时,先去内存的堆内存中找是否存在" bjsxt "这个字符串,若存在,则将地址引用。若不存在则创建。
    2.当使用String str=new String("bjsxt ");时,不管事先是否存在" bjsxt ",每次都会创建其新的对象。

  1. java.sql.Date和java.util.Date的联系和区别

    (1)    java.util.Date 就是在除了SQL语句的情况下面使用

    (2)    java.sql.Date 是针对SQL语句使用的,它只包含日期而没有时间部分

    (3)    它都有getTime方法返回毫秒数,自然就可以直接构建

    (4)    java.util.Date 是 java.sql.Date 的父类(注意拼写)

    (5)    java.util.Date是常用的表示时间的类,我们通常格式化或者得到当前时间都是用java.util.Date

    (6)    java.sql.Date在读写数据库的时候用java.sql.Date

 

  1. 递归的定义和优缺点

 

五、    编码题

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

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

 1 public static void empty(String user){
 2         if(user==null||"".equals(user)){
 3             System.out.println("用户名不能为空!");
 4             return;
 5         }else if(user.length()>6){
 6             System.out.println("用户名长度不能大于6!");
 7             return;
 8         }
 9         for(int i=0;i<user.length();i++){
10             char ch = user.charAt(i);
11             if(ch>=48&&ch<57){
12                 System.out.println("用户名不能有数字!");
13                 return;
14             }
15         }
16         System.out.println("用户名OK");
17     }
18     public static void main(String[] args) {
19         Scanner sc = new Scanner(System.in);
20         System.out.println("请输入用户名:");
21         String user = sc.nextLine();
22         empty(user);
23         
24         
25     }

  2.接收从键盘输入的字符串格式的年龄,分数和入学时间,转换为整数、浮点数、日期类型,并在控制台输出。

提示:使用包装类Integer、Double和日期转换类DateFormat实现

public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入年龄:");
        String age1 = sc.nextLine();
        System.out.println("请输入分数:");
        String grade1 = sc.nextLine();
        System.out.println("请输入入学时间:");
        String enterDate1 = sc.nextLine();
        int age;
        age = Integer.parseInt(age1);//年龄转换为整数
        double grade =Double.parseDouble(grade1);//分数转换为浮点数
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
        try {
            Date enterDate =df.parse(enterDate1);//入学时间转换为日期类型,
        } catch (ParseException e) {
            e.printStackTrace();
        }
        System.out.println("年龄	分数	入学时间");
     System.out.println(age+"	"+grade1+"	"+enterDate1);   
    }

六、    可选题

  1. 生成10个[10,23)之间的随机整数

提示:分别使用Math.random()和Random类的nextDouble()或nextInt()实现

 1 public static void main(String[] args) {
 2         //Math.random()方法
 3         for (int i = 1; i < 11; i++) {
 4             System.out.println("Math.random()随机生成第" + i + "个数是:");
 5             int r = (int) (Math.random() * 13) + 10;
 6             System.out.println(r);
 7         }
 8         System.out.println("============================");
 9         //Random类的nextDouble()实现
10         Random ra = new Random();
11         for (int j = 1; j < 11; j++) {
12             System.out.println("Random类的nextDouble()随机生成第" + j + "个数是:");
13             int r = (int)(ra.nextDouble() * 13) + 10;
14             System.out.println(r);
15         }
16         System.out.println("============================");
17         //Random类的nextInt()实现
18         for (int k = 1; k < 11; k++) {
19             System.out.println("Random类的nextDouble()随机生成第" + k + "个数是:");
20              int b = (int)(ra.nextInt(13)+10);
21             System.out.println(b);
22         }
23         
24     }

  2.打印某个月份的可视化日历

 1 public static void main(String[] args) throws ParseException {
 2         //从键盘输入指定格式的字符串 (Scanner) 2015-12-3
 3         System.out.println("请输入日期(按照格式:2030-3-10):"); 
 4         Scanner scanner = new Scanner(System.in);
 5         String temp = scanner.nextLine();            
 6         //把输入的字符串变成Date(DateFormat)
 7         DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
 8         Date date = format.parse(temp);
 9         //把Date变成Calendar(setTime())
10         Calendar calendar = Calendar.getInstance();
11         calendar.setTime(date);
12         //取出日历的日信息
13         int dateOfMonth = calendar.get(Calendar.DATE);
14         //输出日历头信息  日    一    二    三    四    五    六
15         System.out.println("日	一	二	三	四	五	六");
16         //输出该月1日之前的空白( 要知道该月1日是星期几)
17         calendar.set(Calendar.DATE, 1);    
18         int weekDay = calendar.get(Calendar.DAY_OF_WEEK);
19         for(int i=1;i<weekDay;i++){
20             System.out.print('	');
21         }        
22         //输出该月的日历从1到最后一天(更多细节)
23         int maxDay = calendar.getActualMaximum(Calendar.DATE);
24         for(int i=1;i<=maxDay;i++){
25             //如果是当天,输出*
26             if(i==dateOfMonth){
27                 System.out.print("*");
28             }
29             //输出每一天
30             System.out.print(i+"	");
31             //如果是周六换行
32             weekDay = calendar.get(Calendar.DAY_OF_WEEK);
33             if(weekDay==7){
34                 System.out.println();
35             }            
36             //日历变成下一天!!!!!!
37             calendar.add(Calendar.DATE, 1);
38         }
39     }
40 
41 3.    使用二分法查找有序数组中元素。找到返回索引,不存在输出-1。使用递归实现
原文地址:https://www.cnblogs.com/topshark/p/10251951.html