《Java经典入门指南》课后习题及答案Chapter5

本文详细解答了《Java经典入门指南》第五章的课后习题,涵盖了String的不可变性、用户输入、可变参数、不可变对象的创建、StringUtil实用工具类以及字符串驻留等核心概念。
摘要由CSDN通过智能技术生成

《Java经典入门指南》课后习题及答案Chapter5

1.当我们说String是不可变的对象时,这是什么意思?

answer:String对象是常量,一旦创建,它们的值就不能更改。因此,String实例被称为不可变的(immutable)。

2.如果没有Scanner,读者是如何接收用户输入的?又如何使用Scanner实现呢?

answer:
【如果没有Scanner,读者是如何接收用户输入的】System类的3个字段是out、in和err:public static final

java.io.PrintStream out;
public static final java.io.InputStream in;
public static final java.io.PrintStream err;

in字段表示标准输入流,使用它可以接收键盘输入。
【如何用scanner实现】在创建Scanner实例时为其传递一个System.in;然后,要接收用户输入,调用实例的next方法,next方法用于缓冲用户从键盘或其他设备输入的字符,直到用户按回车键;最后,它返回一个包含用户输入的字符的String,但不包括回车符。

3.什么是可变参数?

answer:
可变参数方法(Varargs)是Java的一个特性,它允许方法带有可变长度的参数列表。也就是说用户若是想定义一个方法,但是在此之前并不知道以后要用的时候想传几个参数进去,可以在方法的参数列表中写参数类型或者数组名,然后在方法内部直接用操作数组的方式操作。

4.创建一个com.example.Car类,它包含3个私有字段:year (int)、make (String)和model (String)。通过只提供get方法的方式使Car不可变。字段值通过向构造方法传递值来设置。

answer:

ackage com.example;

public class Car {
    private int year;
    private String make;
    private String model;
    public Car(int year,String make,String model){
        this.year=year;
        this.make=make;
        this.model=model;
    }
    public int getYear(){
        return year;
    }
    public String getMake(){
        return make;
    }
    public String getModel(){
        return model;
    }
}

5.创建一个com.example.test.CarTest类,实例化Car并通过调用get方法打印其字段值。

answer:

package com.example.test;

import com.example.Car;

public class CarTest {
    public static void main(String[] args) {
        Car car=new Car(8,"中国","X85");
        System.out.println("car的year、make、model信息分别为"+car.getYear()+"、"+car.getMake()+"、"+car.getModel());
    }
}

6.在com.example.util包中创建一个名为StringUtil的实用工具/辅助类。这个类应该有两个static方法:getFileName和getFileExtension,分别接收一个文件路径并返回一个文件名或文件扩展名。创建一个com.example.test.StringUtilTest类来测试这些方法。

StringUtil的实用工具/辅助类代码:

answer:import java.io.File;

public class StringUtil {
    public static void getFileName() {
        String path = "D:\\法考笔记20200203\\"; //依据本地储存的实际情况输入一个文件地址。
        File[] fArray = new File(path).listFiles(); //形成一个文件地址创建的数组。
        if (fArray != null) {
            File f = fArray[0];//取文件夹中的第一个文件,即数组中的第一个数
            if (f != null) {
                String fName = f.getName();//获取文件的名字。
                String fName1=fName.substring(0,fName.lastIndexOf("."));
                System.out.println(fName1);
            }
            f = null;
            fArray = null;
        }
    }
    public static void getFileExtension() {
        String path = "D:\\法考笔记20200203\\";
        File[] fArray = new File(path).listFiles();
        if (fArray != null) {
            File f = fArray[0];
            if (f != null) {
                String fName = f.getName();
                String fName1Extension=fName.substring(fName.lastIndexOf("."),fName.length());
                System.out.println(fName1Extension);
            }
            f = null;
            fArray = null;
        }
    }

测试类代码:

package com.example.test;

import com.example.util.StringUtil;

public class StringUtilTest {
    public static void main(String[] args) {
        StringUtil.getFileName();
        StringUtil.getFileExtension();
    }
}

7.演示如何使用String.split()打印字符串中的令牌数量和每个令牌。String.split()与java.util.StringTokenizer相比如何?

answer:【暂时空缺、待更新】

8.什么是字符串驻留(string interning)?

answer:
语句1:String s = “Java is cool”;
语句2:String message = new String(“Java is cool”);
语句1和语句2中,语句2使用new关键字,JVM将始终创建一个新的String实例。语句1使用字符串字面值,将得到一个相同的String对象,这个对象并不总是新的。如果之前创建过字符串“Java is cool”,那么这个对象可能来自一个内存池,其中只存储了每个字符串值的唯一副本,这种技术称为字符串驻留(string interning)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值