[Java] 常用 API 的相关题目


常用API

1. Object 类

a. 选择题

以下关于Object类,说法错误的是? ()

A: 任何类都间接或者直接继承Object类

B: Object是所有类的根类(父类)

C: 任何一个类都可以使用Object类中的方法

D: Object类中的方法不能被重写


答案:D

b. 选择题

下面说法错误的是:

A:Object类是Java中最高父类,其它所有类都直接或者间接的继承Object类;

B:Java中,如果一个类没有明确书写继承的类,则默认都继承Object类;

扫描二维码关注公众号,回复: 10818359 查看本文章

C:Object类型的变量,可以指向Java中任意一个对象;

D:Object类是一个抽象类,所有Java类都具有Object类中定义的方法;


答案:D

解析:Object类不是抽象类。

c. 选择题

下面对于toString()方法和equals()方法描述正确的是? ()

A: 类重写toString()方法是为了打印对象的地址

B: 类重写equals()方法是为了比较对象的地址

C: 类重写toString()方法是打印对象中的属性,重写equals()是比较对象中的属性

D: 类只能重写Object中的toString()方法和equals()方法


答案:C

d. 选择题

下面说法错误的是:()

A:toString方法会返回一个字符串,在使用System.out.println()语句输出对象时就是输出的这个方法返回的数据;

B:String类已经重写了toString和equals方法;

C:一般开发中都需要重写toString方法和equals方法

D:equals方法底层使用的是 == 比较的,所以是用来比较两个对象是否是同一个对象的;


答案:D;

解析:equals方法的作用,是用来比较两个对象的各个属性值是否相等,而不是两个对象是否是同一个对象的;Object类中的equals方法默认是使用 == 比较的,但一般开发中都需要重写这个方法,比较两个对象的各个属性值。

e. 编程题

  1. 请按标准格式定义一个“手机类”,它有三个属性:品牌(String)、颜色(String)、价格(double)
  2. 请编写测试类,创建两个“手机对象”并为它们的属性赋值,并能直接打印手机对象的属性信息。

参考答案:

  • 手机类
/**
 * 手机
 */
public class Phone {

    //成员变量
    private String brand;   //品牌
    private String color;   //颜色
    private double price;   //价格

    //空参构造
    public Phone() {
    }

    //全参构造
    public Phone(String brand, String color, double price) {
        this.brand = brand;
        this.color = color;
        this.price = price;
    }

    //toString
    @Override
    public String toString() {
        return "Phone{" +
                "brand='" + brand + '\'' +
                ", color='" + color + '\'' +
                ", price=" + price +
                '}';
    }

    //getter & setter 略
}
  • 测试
public class Demo {

    public static void main(String[] args) {
        //创建对象
        Phone p1 = new Phone("小米", "黑色", 1999);
        Phone p2 = new Phone("华为", "白色", 2999);

        //打印对象
        System.out.println(p1);
        System.out.println(p2);
    }
}

f. 编程题

  1. 请按标准格式定义一个“学生类”,它有三个属性:姓名、性别、年龄
  2. 请编写测试类,创建两个“学生对象”并为它们的属性赋值,并能比较两个对象的所有属性值是否完全相等。

参考答案:

  • 学生类
/**
 * 学生
 */
public class Student {

    //成员变量
    private String name;    //姓名
    private String gender;  //性别
    private int age;        //年龄

    //空参构造
    public Student() {
    }

    //全参构造
    public Student(String name, String gender, int age) {
        this.name = name;
        this.gender = gender;
        this.age = age;
    }

    //equals
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age &&
                Objects.equals(name, student.name) &&
                Objects.equals(gender, student.gender);
    }

    //getter & setter 略
}
  • 测试
public class Demo {

    public static void main(String[] args) {
        //创建两个学生对象
        Student stu1 = new Student("张三", "男", 18);
        Student stu2 = new Student("张三", "男", 18);

        //打印结果
        System.out.println(stu1.equals(stu2));
    }
}

2. Date 和 DateFormat 类

a. 选择题

观察下列代码.日期格式化为字符串是(时间忽略)? ()

public class SimpleDateFormatDemo {

    public static void main(String[] args) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        Date date = new Date();
        String s = sdf.format(date);
        System.out.println(s);
    }
}

A: 2018/04/11 22:01:30

B: 2018年04月11日 22:01:30

C: 2018.04.11 22:01:30

D: 2018-04-11 22时01分30秒


答案:B

b. 选择题

想得到"2018-04-11 22时12分10秒"(时间忽略),模式正确的是?:

public class SimpleDateFormatDemo {

    public static void main(String[] args) throws ParseException {
        //此处代码应填写
        Date date = new Date();
        String s = sdf.format(date);
        System.out.println(s);
    }
}

A:  SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");

B:  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH时mm分ss秒");

C:  SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH时mm分ss秒");

D:  SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");

答案:B

c. 选择题

阅读代码,横线位置应填写的内容是? ()

public class SimpleDateFormatTest {

    public static void main(String[] args) throws ParseException {
        String str = "1998-01-01";
        SimpleDateFormat sdf = new SimpleDateFormat(_____);
        Date date = sdf.parse(str);
        System.out.println(date);
    }
}

A: “yyyy-MM-dd”

B: “yyyy年MM月dd”

C: “yyyy/MM/dd”

D: “yyyy.MM.dd”


答案:A

d. 选择题

下面说法错误的是:()

A:Java中表示时间的类是util包中的Date类;

B:Date类的对象表示一个时间段;

C:Date类中从时间中获取年月日的方法过时了,开发中应该使用Calendar类的方法实现;

D:Date类中将时间格式化为字符串的方法过时了,开发中应该使用DateFormat或者SimpleDateFormat类;


答案:B;

解析:Date对象表示的是一个时间点,精确到毫秒。

e. 选择题

下面说法错误的是:()

A:Calendar类是日历类,通过getInstance方法获取的对象表示的是当前时间点的日历信息;

B:因为可以方便的自定义格式,所以开发中处理时间和字符串的转换时,一般使用SimpleDateFormat类,而非DateFormat类;

C:基本类型包装类在开发中一般用来将字符串转换为对应的基本类型数据;

D:要将字符串转换为基本类型数据,字符串的字面值必须表示的是这个基本类型数据的一个值,否则运行时就会出现异常;


答案:D;

如果要将字符串转换为int型数据,说法没错;

如果将字符串转为布尔型数据,就对字符串的字面值没有特殊要求,运行时也不会出现异常。

f. 编程题

请在控制台以“xxxx年xx月xx日 xx时xx分xx秒”的格式打印当前系统时间。


参考答案:

public class Demo {

    public static void main(String[] args) throws Exception {
        //创建SimpleDateFormat对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");

        //将当前时间转换成指定格式
        String result = sdf.format(new Date());
        
        //打印结果
        System.out.println(result);
    }
}

g. 编程题

请编写程序,从控制台接收一个“日期”,格式:yyyy-MM-dd,程序将其转换为:xxxx年xx月xx日的格式输出到控制台。


参考答案:

public class Demo {

    public static void main(String[] args) throws Exception {
        //创建Scanner对象
        Scanner sc = new Scanner(System.in);

        //接收用户输入
        System.out.println("请输入日期(yyyy-MM-dd)");
        String dateStr = sc.nextLine();

        //将字符串日期转换成Date对象
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
        Date date = sdf1.parse(dateStr);

        //将Date对象转换成指定格式的字符串
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日");
        String result = sdf2.format(date);

        //打印结果
        System.out.println(result);
    }
}

h. 编程题

请用代码实现:获取当前的日期,并把这个日期转换为指定格式的字符串,如2088-08-08 08:08:08。


参考答案:

public class DateTest {
    public static void main(String[] args) {
        //获取当前日期对象 now;
        Date now = new Date();
        //创建SimpleDateFormat对象 df,并制定日期格式
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //调用df的format(Date  date) 方法,传入now; 接收返回的字符串
        String datestr = df.format(now);
        //打印这个字符串
        System.out.println(datestr);
    }
}

i. 编程题

需求:使用SimpleDateFormat类,把2018-03-04转换为2018年03月04日。


参考答案:

public class DateFormatTest {
    public static void main(String[] args) throws ParseException {
        //创建SimpleDateFormat对象df1,指定日期模式为yyyy-MM-dd
        SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd");
        //调用df1的parse(String str)方法传入2018-03-04,得到对应日期类型
        Date date = df1.parse("2018-03-04");
        //创建日期格式化对象df2,在获取格式化对象时可以指定风格
        DateFormat df2 = new SimpleDateFormat("yyyy年MM月dd日");
        //调用df2的format(Date date) 传入刚才转换的日期
        String str = df2.format(date);
        System.out.println(str);
    }
}

j. 编程题

需求:用程序判断2018年2月14日是星期几。


参考答案:

public class CalendarTest01 {
    public static void main(String[] args) {
        //创建Calendar对象
        Calendar c = Calendar.getInstance();
        //将给定的日历字段设置到Calendar对象中
        c.set(Calendar.YEAR, 2018);
        c.set(Calendar.MONTH, 1);
        c.set(Calendar.DATE, 14);
        //设置年
        int year = c.get(Calendar.YEAR);
        //设置月
        int month = c.get(Calendar.MONTH)+1;
        //设置日
        int date = c.get(Calendar.DATE);
        //设置星期
        char week = getWeek(c.get(Calendar.DAY_OF_WEEK));
        //输出结果
        System.out.println(year+"年"+month+"月"+date+"日是星期"+week);
    }
    //定义方法,获取星期汉字
    public static char getWeek(int a){
        char[] c = {' ','日','一','二','三','四','五','六'};
        return c[a];
    }
}

k. 编程题

需求:有2个字符串形式的日期数据,计算它们相距多少天?


参考答案:

public class Test01 {
    public static void main(String[] args) throws Exception {
        //解析字符串
        String s1 = "2014年09/28 23时13分01秒";
        DateFormat df = new SimpleDateFormat("yyyy年MM/dd HH时mm分ss秒");
        Date d1 = df.parse(s1);

        //解析字符串,获取一个时间对象
        String s2 = "2009-02月12日 12时02分01秒";
        df = new SimpleDateFormat("yyyy-MM月dd日 HH时mm分ss秒");
        Date d2 = df.parse(s2);

        //获取两个神机箭对象之间的毫秒值的差
        long time = Math.abs(d1.getTime() - d2.getTime());
        //除以每天的毫秒值,及计算一共相差多少天
        int dayTime =(int)  time / (60*60*24*1000);
        System.out.println(dayTime);
    }
}

l. 编程题

  1. 请编写程序,从控制台接收一个“生日”,格式:yyyy-MM-dd,程序要能够计算并打印他来到世界xx天。
  2. 注意:“生日”必须早于“当前日期”,否则提示:生日必须早于当前日期!

参考答案:

public class Demo {

    public static void main(String[] args) throws Exception {
        //创建Scanner对象
        Scanner sc = new Scanner(System.in);

        //接收用户输入
        System.out.println("请输入您的生日(yyyy-MM-dd)");
        String dateStr = sc.nextLine();

        //创建SimpleDateFormat对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        //判断日期是否正确
        Date birthday = sdf.parse(dateStr); //异常直接抛
        Date now = new Date();
        if (birthday.after(now)) {
            System.out.println("生日必须早于当前日期!");
            return; //结束程序
        }

        //计算来到世界xx天
        long millisecond = now.getTime() - birthday.getTime();

        long days = millisecond / 1000 / 60 / 60 / 24;
        System.out.println("您已经来到这个世界" + days + "天");
    }
}

m. 编程题

  1. 请编写程序,从控制台分别接收两个“生日”,格式:yyyy年MM月dd日,程序要能够计算并打印:第一个生日大于/小于第二个生日。
  2. 注意:要求验证生日日期必须早于当前日期

参考答案:

public class Demo {

    public static void main(String[] args) throws Exception {
        //创建Scanner对象
        Scanner sc = new Scanner(System.in);

        //创建SimpleDateFormat对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        //接收第1个生日
        System.out.println("请输入第1个生日(yyyy-MM-dd)");
        String dateStr1 = sc.nextLine();

        //判断是否早于当前日期
        Date birthday1 = sdf.parse(dateStr1);
        if (birthday1.after(new Date())) {
            System.out.println("生日必须早于当前日期!");
            return;
        }

        //接收第2个生日
        System.out.println("请输入第2个生日(yyyy-MM-dd)");
        String dateStr2 = sc.nextLine();

        //判断是否早于当前日期
        Date birthday2 = sdf.parse(dateStr2);
        if (birthday2.after(new Date())) {
            System.out.println("生日必须早于当前日期!");
            return;
        }

        //打印结果
        if (birthday1.before(birthday2)) {
            System.out.println("第一个生日大于第二个生日");
        } else {
            System.out.println("第一个生日小于第二个生日");
        }
    }
}

3. Calendar 类

a. 编程题

  1. 请编写程序,使用Calendar类获取日历对象,并分别获取年、月、日、小时、分、秒,并将它们打印到控制台。
public class Demo {

    public static void main(String[] args) {
        //创建Calendar对象
        Calendar cal = Calendar.getInstance();

        //获得年、月、日、时、分、秒并打印在控制台
        System.out.println("年: " + cal.get(Calendar.YEAR));
        System.out.println("月: " + cal.get(Calendar.MONTH));
        System.out.println("日: " + cal.get(Calendar.DAY_OF_MONTH));
        System.out.println("时: " + cal.get(Calendar.HOUR_OF_DAY));
        System.out.println("分: " + cal.get(Calendar.MINUTE));
        System.out.println("秒: " + cal.get(Calendar.SECOND));
    }
}

b. 编程题

  1. 请编程,计算并打印“1949年10月1日”那天是星期几?

参考答案:

public class Demo {

    public static void main(String[] args) {
        //创建Calendar对象
        Calendar cla = Calendar.getInstance();
        //设置指定日期  月份要-1,所以设置的是9
        cla.set(1949, 9, 1);

        //定义一个数组存储星期
        String[] weekArray = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};

        //获得星期值
        int week = cla.get(Calendar.DAY_OF_WEEK);

        //打印结果
        System.out.println(weekArray[week - 1]);
    }
}

c. 编程题

需求:代码计算500天后是几几年几月几日。


参考答案:

public class Test05 {
    public static void main(String[] args) {
        // a)获取当前日历对象
        Calendar c = Calendar.getInstance();
        // b)调用日期对象的add()方法,让当前日历向后移动500天
        c.add(Calendar.DATE, 500);
        // c)获取日历中的年,月,日
        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH);
        int day = c.get(Calendar.DAY_OF_MONTH);
        // d)输出几几年几月几日.
        System.out.println(year + "年" + month + "月" + day + "日");
    }
}

4. Math 类

a. 编程题

  1. 请编程进行以下运算:
    • 请计算3的5次幂
    • 请计算3.2向上取整的结果
    • 请计算3.8向下取整的结果
    • 请计算5.6四舍五入取整的结果

参考答案:

public class Demo {

    public static void main(String[] args) {
        //3的5次幂
        System.out.println(Math.pow(3, 5));

        //3.2 向上取整
        System.out.println(Math.ceil(3.2));

        //3.8 向下取整
        System.out.println(Math.floor(3.8));

        //5.6四舍五入
        System.out.println(Math.round(5.6));
    }
}

5. System 类

a. 编程题

  1. 有以下数组:
    int[] arr = {10,27,8,5,2,1,3,55,88};
  2. 请定义一个新数组,长度为5,并将arr中几个连续的1位数的数字复制到新数组。

参考答案:

public class Demo {

    public static void main(String[] args) {
        //创建数组
        int[] arr = {10, 27, 8, 5, 2, 1, 3, 55, 88};

        //定义新数组
        int[] arrNew = new int[5];

        //拷贝元素
        System.arraycopy(arr, 2, arrNew, 0, 5);

        //打印结果
        System.out.println(Arrays.toString(arrNew));
    }
}

b. 编程题

  1. 有以下数组:
    int[] arr = {55,77,0,88,22,44,33};
  2. 请编程实现:将后四个数字依次前移一位,移动后,最后一位置为0.

参考答案:

public class Demo {

    public static void main(String[] args) {
        //创建数组
        int[] arr = {55, 77, 0, 88, 22, 44, 33};

        //后四个元素前移
        System.arraycopy(arr, arr.length - 4, arr, arr.length - 5, 4);

        //最后一位置为0
        arr[arr.length - 1] = 0;

        //打印结果
        System.out.println(Arrays.toString(arr));
    }
}

c. 编程题

  1. 请定义一个集合:List,并循环向集合中添加1千万个数字,请计算这个循环运行的时间,并打印。

参考答案:

public class Demo {

    public static void main(String[] args) {
        //创建List集合
        List<Integer> list = new ArrayList<>();

        //开始时间
        long startTime = System.currentTimeMillis();

        //添加元素
        for (int i = 0; i < 10000000; i++) {
            list.add(i);
        }

        //结束时间
        long endTime = System.currentTimeMillis();

        //打印结果
        System.out.println("耗时:" + (endTime - startTime) + "毫秒");

    }
}

6. BigDecimal 类

a. 编程题

  1. 有以下double数组:
    double[] arr = {0.1,0.2,2.1,3.2,5.56,7.21};
  2. 请编程计算它们的总值及平均值(四舍五入保留小数点后2位)

参考答案:

public class Demo {

    public static void main(String[] args) {
        //声明数组
        double[] arr = {0.1, 0.2, 2.1, 3.2, 5.56, 7.21};

        //求和
        double sum = sum(arr);

        //平均值
        double avg = avg(arr);

        //打印结果
        System.out.println("总和:" + sum);
        System.out.println("平均值:" + avg);
    }

    /**
     * 求和
     * @param arr
     * @return
     */
    public static double sum(double[] arr) {
        BigDecimal bigDecimal = new BigDecimal("0");

        for (int i = 0; i < arr.length; i++) {
            bigDecimal = bigDecimal.add(BigDecimal.valueOf(arr[i]));
        }

        return bigDecimal.doubleValue();
    }

    /**
     * 平均值
     * @param arr
     * @return
     */
    public static double avg(double[] arr) {
        double sum = sum(arr);
        BigDecimal bigDecimal = BigDecimal.valueOf(sum);
        //四舍五入保留2位小数
        BigDecimal result = bigDecimal.divide(BigDecimal.valueOf(arr.length), 2, RoundingMode.HALF_UP);

        return result.doubleValue();
    }
}

b. 编程题

  1. 有以下学员信息:
    张三,男,20,79.5
    李四,女,21,80.2
    王五,男,22,77.9
    周六,男,20,55.8
    赵七,女,21,99.9
  2. 请定义学员类,属性:姓名、性别、年龄、分数
  3. 请编写测试类,创建5个对象,分别存储上述值,并计算5名学员的“平均分”(四舍五入到小数点后2位)。

参考答案:

  • 学生类
/**
 * 学生
 */
public class Student {

    //成员变量
    private String name;    //姓名
    private String gender;  //性别
    private int age;        //年龄
    private double score;   //分数

    //空参
    public Student() {
    }

    //全参构造
    public Student(String name, String gender, int age, double score) {
        this.name = name;
        this.gender = gender;
        this.age = age;
        this.score = score;
    }

    //getter & setter 略
}
  • 测试
public class Demo {

    public static void main(String[] args) {
        //创建5个学生对象
        Student stu1 = new Student("张三", "男", 20, 79.5);
        Student stu2 = new Student("李四", "女", 21, 80.2);
        Student stu3 = new Student("王五", "男", 22, 77.9);
        Student stu4 = new Student("周六", "男", 20, 55.8);
        Student stu5 = new Student("赵七", "女", 21, 99.9);

        //分数求和
        BigDecimal sum = new BigDecimal("0");
        sum = sum.add(BigDecimal.valueOf(stu1.getScore()));
        sum = sum.add(BigDecimal.valueOf(stu2.getScore()));
        sum = sum.add(BigDecimal.valueOf(stu3.getScore()));
        sum = sum.add(BigDecimal.valueOf(stu4.getScore()));
        sum = sum.add(BigDecimal.valueOf(stu5.getScore()));

        //求平均分,四舍五入保留2位小数
        double avg = sum.divide(BigDecimal.valueOf(5), 2, RoundingMode.HALF_UP).doubleValue();

        System.out.println("平均分:" + avg);
    }
}

c. 编程题

  1. 有一个String[]数组如下:
    String[] nums = {“3.22”,”8.1”,”7”,”2.5”,”3.1”,”7.77”,”8.0”,”9.21”};

  2. 请编程计算它们的平均值,结果精确到小数点后两位。


参考答案:

public class Test {
    public static void main(String[] args) {
        String[] nums = {"3.22","8.1","7","2.5","3.1","7.77","8.0","9.21"};
        BigDecimal result = new BigDecimal("0");//存储结果的BigDecimal
        for (String num : nums) {//遍历数组
            BigDecimal bd = new BigDecimal(num);//将数组的每个元素构造一个BigDecimal对象
            result = result.add(bd);//累加到result中
        }
        //result / 数组长度,结果取2位小数,并且四舍五入
        BigDecimal avg = result.divide(new BigDecimal(nums.length), 2, RoundingMode.HALF_UP);
        System.out.println("平均值:" + avg.doubleValue());//打印结果
    }
}

7. Arrays 类

a. 编程题

public class Demo {

    public static void main(String[] args) {
        //声明数组
        int[] arr = {1, 332, 43, 25, 3324, 34, 335, 4, 45, 2, 43, 52, 54};

        //打印数组所有元素
        System.out.println(Arrays.toString(arr));
        
        //升序排序
        Arrays.sort(arr);

        //再次打印
        System.out.println(Arrays.toString(arr));
    }
}

8. 包装类

a. 问答题

  1. 请写出八种基本类型和它们对应的包装类的名字

答案:

  byte		    Byte
  short		    Short
  int		    Integer
  long		    Long
  float		    Float
  double		Double
  char		    Character
  boolean		Boolean
  1. 请问什么是自动装箱和自动拆箱?

答案:

  自动装箱:将基本数据类型赋值给包装类型
  自动拆箱:将包装类型赋值给基本数据类型

b. 编程题

  1. 请从控制台接收一个整数的“分数”值,要求用String类型的变量存储,程序可以将这个String类型的分数值转换为int值,并将分数 + 5分后打印到控制台。

参考答案:

public class Demo {

    public static void main(String[] args) {
        //创建Scanner对象
        Scanner sc = new Scanner(System.in);

        //接收用户输入
        System.out.println("请输入分数:");
        String scoreStr = sc.nextLine();

        //将字符串分数转换成int类型
        int score = Integer.parseInt(scoreStr);

        //分数+5并打印在控制台
        System.out.println(score + 5);
    }
}

c. 编程题

  1. 请定义学员类,有以下成员属性:
    姓名:String类型
    年龄:int
    身高:double
    婚否:boolean
    性别:char

  2. 请从控制台接收以下数据:
    姓名:王哈哈
    年龄:24
    身高:1.82
    婚否:false
    性别:男
    以上数据要求全部使用String类型接收

  3. 请创建“学员对象”,并将所有数据转换后,存储到这个对象中,最后打印此对象的所有属性。
    学生类


参考答案:

/**
 * 学生
 */
public class Student {

    //成员变量
    private String name;    //姓名
    private int age;        //年龄
    private double height;  //身高
    private boolean flag;   //婚否
    private char gender;    //性别

    //空参构造
    public Student() {
    }

    //全参构造
    public Student(String name, int age, double height, boolean flag, char gender) {
        this.name = name;
        this.age = age;
        this.height = height;
        this.flag = flag;
        this.gender = gender;
    }

    //toString
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", height=" + height +
                ", flag=" + flag +
                ", gender=" + gender +
                '}';
    }

    //getter & setter 略
}
  • 测试
public class Demo {

    public static void main(String[] args) {
        //创建Scanner对象
        Scanner sc = new Scanner(System.in);

        //接收用户输入
        System.out.println("请输入姓名:");
        String name = sc.nextLine();

        System.out.println("请输入年龄:");
        String ageStr = sc.nextLine();

        System.out.println("请输入身高:");
        String heightStr = sc.nextLine();

        System.out.println("请输入婚否:"); //必须输入 true 或 false
        String flagStr = sc.nextLine();

        System.out.println("请输入性别:");
        String genderStr = sc.nextLine();

        //转换
        int age = Integer.parseInt(ageStr);
        double height = Double.parseDouble(heightStr);
        boolean flag = Boolean.parseBoolean(flagStr);
        char gender = genderStr.charAt(0);

        //封装
        Student stu = new Student(name, age, height, false, gender);

        //打印
        System.out.println(stu);
    }
}

d. 选择题

读代码,控制台输出的结果为? ()

public class IntegerDemo {
    public static void main(String[] args) {
        String str = "123";
        System.out.println(str + 10);
        int i = Integer.parseInt(str);
        System.out.println(i + 10);
    }
}

A: 12310,133

B: 133,13310

C: 12310,13310

D: 133,133


答案:A

e. 选择题

阅读代码,控制台输出的结果为? ()

public class IntegerDemo {
    public static void main(String[] args) {
        String str = "1a3";
        Integer it = new Integer(str);
        int i = it.intValue();
        System.out.println(i);
    }
}

A: 1a3

B: 13

C: 运行报错,字符串内容必须是数字字符

D: 1


答案:C

f. 选择题

阅读代码,控制台要打印110横线需要填写什么? ()

public class IntegerDemo {
    public static void main(String[] args) {
        int i = 1;
        Integer it = new Integer(i);
        String s = ___;
        System.out.println(s + 10);
    }
}

A: it

B: it.toString();

C: i

D: 110


答案:B

g. 选择题

阅读代码,控制台打印的结果为? ()

public class IntegerDemo {
    public static void main(String[] args) {
        int i = 10;
        String str = i + "";
        System.out.println(str.equals("10"));
    }
}

A: false

B: true

C: 运行报错

D: 0


答案:B

h. 选择题

下面说法错误的是:()

A:System类提供了数组复制的方法;开发中如果遇到数组复制的需求,使用它更高效;

B:Math类主要提供各种常见的数学运算的方法,而且全部都是静态的方法;

C:自动装箱和自动拆箱是JDK5出现的新技术,主要用来简化包装类对象和基本类型数据之间的转换的;

D:正则表达式是Java中独有的用来匹配字符串的技术;


答案:D;

解析:正则表达式不是Java中独有的技术。

9. String 类

a. 编程题

  1. 请用户从控制台输入一个“Email地址”,程序接收后判断此Email地址中是否包含@符号和.符号,如果全部包含,打印:合法,否则打印:不合法的Email地址。

参考答案:

public class Demo {
    public static void main(String[] args) {
        //创建Scanner对象
        Scanner sc = new Scanner(System.in);

        //接收用户输入
        System.out.println("请输入邮箱地址:");
        String email = sc.nextLine();

        //判断是否合法
        if (email.contains("@") && email.contains(".")) {
            System.out.println("合法");
        } else {
            System.out.println("不合法的Email地址");
        }
    }
}

b. 编程题

  1. 请用户从控制台输入一个java文件的名字,例如:Test.java,请编程实现以下功能:
    • 判断此文件名是否以“.java”结尾,并打印结果
    • 获取此文件中.符号的索引位置,并打印结果

参考答案:

public class Demo {

    public static void main(String[] args) {
        //创建Scanner对象
        Scanner sc = new Scanner(System.in);

        //接收用户输入
        System.out.println("请输入Java源码文件名(例如 Test.java):");
        String filename = sc.nextLine();

        //判断是否以.java结尾
        boolean result = filename.endsWith(".java");
        System.out.println("是否以.java结尾:" + result);
        
        //获取.符号的索引位置
        int index = filename.lastIndexOf(".");
        System.out.println(".符号的索引位置:" + index);
    }
}

c. 编程题

  1. 程序模拟一个论坛发帖的过程,请用户输入一个发帖内容,例如:
    “积分看电视了几分我特朗普将反恐文件风IE哦特朗普积分哦忘记特朗普”
  2. 请将字符串中所有的”特朗普”替换为”*”符号。

参考答案:

public class Demo {

    public static void main(String[] args) {
        //创建Scanner对象
        Scanner sc = new Scanner(System.in);

        //接收用户输入
        System.out.println("请输入发帖内容:");
        String content = sc.nextLine();

        //替换
        String contentNew = content.replaceAll("特朗普", "*");

        //打印结果
        System.out.println(contentNew);
    }
}

d. 编程题

  1. 程序模拟一个论坛发帖的过程,请用户输入一个发帖内容,例如:
    “积分看电视普京了几分我特朗普将反恐文件风IE哦特朗普积分哦忘记普京”
  2. 请定义一个关键字数组:
    String[] keyArray = {“特朗普”,”普京”};
  3. 请将字符串中包含的数组中的关键字替换为*符号。

参考答案:

public class Demo {

    public static void main(String[] args) {
        //创建Scanner对象
        Scanner sc = new Scanner(System.in);

        //接收用户输入
        System.out.println("请输入发帖内容:");
        String content = sc.nextLine();

        String[] keyArray = {"特朗普", "普京"};

        //替换
        for (int i = 0; i < keyArray.length; i++) {
            String key = keyArray[i];
            content = content.replaceAll(key, "*");
        }

        //打印结果
        System.out.println(content);
    }
}

e. 编程题

  1. 程序从控制台接收一个java文件的文件名,例如:test.java,TEST.java,tEst.JAVA,请编程实现以下功能:
    • 获取,并打印文件名的第一个字符;
    • 获取,并打印文件的后缀名(包括.符号),例如:.java
    • 无论原文件名什么样,最终将其转换为:Test.java的形式,打印转换后的文件名。

参考答案:

public class Demo {

    public static void main(String[] args) {
        //创建Scanner对象
        Scanner sc = new Scanner(System.in);

        //接收用户输入
        System.out.println("请输入文件名:");
        String filename = sc.nextLine();

        //打印文件名的第一个字符
        System.out.println("第一个字符:" + filename.charAt(0));
        
        //打印后缀,包含.
        System.out.println("文件后缀名:" + filename.substring(filename.lastIndexOf(".")));

        //首字母大写,其他字母小写的效果
        filename = filename.substring(0, 1).toUpperCase() + filename.substring(1).toLowerCase();
        System.out.println("转换后效果:" + filename);

    }
}

f. 编程题

  1. 程序从控制台一次性接收一个学员信息,要求程序必须能正确处理以下几种格式的数据:
    “张三,20,男”
    “ 张三 , 20 ,男”
  2. 编程:
    • 定义学员类,可以存储上述数据(姓名String,年龄int,性别char)
    • 定义测试类,创建一个学员对象,从控制台接收一名学员信息,并能正确解析,并将数据存储到学员对象中,最后打印这个学员对象的所有属性的值。

参考答案:

  • 学员类
/**
 * 学员
 */
public class Student {

    //成员变量
    private String name;    //姓名
    private int age;        //年龄
    private char gender;    //性别
    
    //空参构造
    public Student() {
    }

    //全参构造
    public Student(String name, int age, char gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    //toString
    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", gender=" + gender +
                '}';
    }
    
    //getter & setter 略
}
  • 测试
public class Demo {

    public static void main(String[] args) {
        //创建Scanner对象
        Scanner sc = new Scanner(System.in);

        //接收用户输入
        System.out.println("请输入学生信息");
        String info = sc.nextLine();

        //处理数据
        info = info.replaceAll(" ", "");//空格替换成空字符串
        String[] split = info.split(",");//以逗号截取

        String name = split[0];
        int age = Integer.parseInt(split[1]);
        char gender = split[2].charAt(0);

        //封装数据到Student对象中
        Student stu = new Student(name, age, gender);

        //打印结果
        System.out.println(stu);
    }
}

原文链接:https://qwert.blog.csdn.net/article/details/105378191

发布了369 篇原创文章 · 获赞 381 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/Regino/article/details/105378191
今日推荐