• 16


    常用工具类作业

    一、    填空题

    1. 在Java中每个Java基本类型在java.lang包中都在一个相应的包装类,把基本类型数据转换为对象,其中int对应的包装类是__Integer_______; char对应的包装类是_____Character_______。
    2. 包装类Integer的静态方法可以将字符串类型的数字”123”转换成基本整型变量n,其实现语句是:___Integer.parseInt(“123”);_________。
    3. 在Java中使用java.lang包中的__StringBuffer/StringBuider__________类来创建一个字符串对象,它代表一个字符序列可变的字符串,可以通过相应的方法改变这个字符串对象的字符序列。
    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_________关键字,用以定义枚举类。枚举类是一种特殊的类,可以有自己的属性、方法和构造方法。

     

    二、    选择题

    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";

     

    三、    判断题

    1. 方法Integer.parseInt()的作用是将一个整数转变成String。(  N  )
    2. JK1.5后提供了自动装箱和自动拆箱功能,从而可以实现基本数据类型和对应包装类之间的自动转换,简化了操作。(  Y  )
    3. 执行语句String str="abcedf"; int len=str.length; 后,能够得到字符串的长度是6。( N   )
    4. 运算符“==”用于比较引用时,如果两个引用指向内存同一个对象,则返回true。(  Y  )
    5. 求x的y次方,其表达式为:Math.pow(x,y)。(  Y  )

     

    四、    简答题

    1. 自动装箱和自动拆箱

    基本类:      byte,  short,  char,       int,     long,   float,  double,   boolean

    对应的包装类:Byte,  Short,  Character,  Integer,  Long,  Float,  Double,  Boolean

    自动装箱就是将基本数据类型转换为对应的对象,可以调用更多的方法。

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

    原理

    例如:

    装箱:

    Integer i = 100;

    Java虚拟机会自动调用Integer的valueOf方法,编译为:Integer i = Integer.valueOf(100);

    拆箱:

    Integer i = 10;   int t = i; 

    Java虚拟机会自动调用Integer的intValue方法, 编译为:int t=i.Integer.intValue();

    注意事项:

    (1)      自动装箱和拆箱,要注意空指针的问题。 拆箱的如果Null,则会报空指针异常。

    (2)      缓存问题。

    ①    Byte、Short、Integer、Long、Char这几个装箱类的valueOf()方法是以128位分界线做了缓存的,假如是128以下且-128以上的值是会取缓存里面的引用的。

    ②    Float、Double则不会,原因也很简单,因为byte、Short、integer、long、char在某个范围内的整数个数是有限的,但是float、double这两个浮点数却不是。

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

    String   字符串的值为常量,是不可变的,所以可以共享。

    StringBuffer  线程安全的可变字符序列。效率不高。可以改变字符序列的长度和内容

    StringBuider  线程不安全。执行效率比StringBuffer高。可以改变字符序列的长度和内容。

    五、    编码题

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

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

    import java.util.Scanner;
    class User_Login {
        public static void main(String[] args) throws Exception {
            // 开流
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入用户名:");
            // 接收输入的值
            String s = sc.nextLine();
            boolean flag = true; // 标记
            // 判断是否为空
            if (s.isEmpty()) {
                System.out.println("用户名不能为空");
                flag=false;
            } else {
                // 判断长度是否小于6位
                if (s.length() < 6) {
                    System.out.print("用户名的长度不能小于6位");
                    flag = false;
                }
                // 判断输入的值是否合法
                for (int i = 0; i < s.length(); i++) {
                    if (s.charAt(i) >= '0' && s.charAt(i) <= '9') {
                        if (!flag) {
                            System.out.print(",");
                        }
                        System.out.println("用户名不能包含数字");
                        flag = false;
                        break;
                    }
                }
                // flag为true的时候提示注册成功
                if (flag) {
                    System.out.println("注册成功");
                }
            }
            sc.close();//关流
        }
    }
    1. 接收从键盘输入的字符串格式的年龄,分数和入学时间,转换为整数、浮点数、日期类型,并在控制台输出。

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

    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Scanner;
    
    public class TestStringConvert {
        public static void main(String[] args) {
            // 从键盘输入字符串形式的年龄,分数和入学时间
            Scanner input = new Scanner(System.in);
            System.out.print("请输入年龄:");
            String sage = input.next();
            System.out.print("请输入分数:");
            String sscore = input.next();
            System.out.print("请输入日期(yyyy/MM/dd):");
            String sdate = input.next();
            // 年龄转换String----int
            int age = 0;
            age = Integer.parseInt(sage);
            // 分数转换 String ---double
            double score = 0.0;
            score = Double.parseDouble(sscore);
            // 入学时间的转换String ---Date
            Date enterDate = null;
            DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
            try {
                enterDate = sdf.parse(sdate);
            } catch (ParseException e) {
                e.printStackTrace();
                // return;
            }
            // 输出结果
            System.out.println(age + "  " + score + "  " + enterDate);
        }
    }
    1. 根据交通信号灯颜色决定汽车停车、行驶和慢行

    提示:使用枚举实现

    public class Enum_Color {
        public static void main(String[] args) {
            Color c = Color.GREEN;
            c.setName("绿灯");
            System.out.println(c.getName());
        }
    }
    
    enum Color {
        RED, YELLOW, GREEN;
        private String name;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            switch (this) {
            case RED: {
                if ("红灯".equals(name)) {
                    this.name = name;
                    System.out.println("请停车");
                } else {
                    System.out.println("设置内容错误");
                }
                break;
            }
            case GREEN: {
                if ("绿灯".equals(name)) {
                    this.name = name;
                    System.out.println("请行驶");
                } else {
                    System.out.println("设置内容错误");
                }
                break;
            }
            case YELLOW: {
                if ("黄灯".equals(name)) {
                    this.name = name;
                    System.out.println("请慢行");
                } else {
                    System.out.println("设置内容错误");
                }
                break;
            }
            }
        }
    
    }
  • 相关阅读:
    需求工程阅读笔记03
    需求工程阅读笔记02
    【Augmented Reality】增强现实中的光学透射式头盔显示器的标定进阶
    基于单个RGB摄像头的手势识别程序设计与实现
    将Vuforia程序发布到Windows10系统的基本流程
    基于Unity3D 的Vuforia SDK开发基础教程
    微软KinectV2深度传感器在Ubuntu上的配置和使用
    Windows 10(64位)配置Caffe运行环境的基本流程
    Ubuntu14.04 64位配置Caffe 教程(基于CUDA7.5)
    空间增强现实——基于贝塞尔曲面的异形表面投影变形技术
  • 原文地址:https://www.cnblogs.com/songzongyuan-java/p/9356811.html
Copyright © 2020-2023  润新知