Java编程思想课后练习题——初始化与清理

2023-11-07

本文主要依据《Java编程思想》的示例及课后练习,通过个人编写,同时参考答案的代码写法。主要目的是用于自己熟悉编码风格,同时可以给更多人提供参考。(只完成了部分练习)

练习1:

/**
 * @作者 Jiacy
 * @日期2021年4月12日
 * @描述:创建一个类,它包含了一个未初始化的String引用。验证该引用被Java初始化成null。
 * @version
 *  
 */
public class lesson1 {
	String s;
	public static void main(String[] args) {
		lesson1 stri = new lesson1();
		System.out.println("stri = " + stri.s);
		
		
	}

}

运行结果:

stri = null

练习2:

/**
 * @作者 Jiacy
 * @日期2021年4月12日
 * @描述:创建一个类,它包含一个在赢一时就被初始化了的String域,以及另一个通过构造器初始化的String域。
 * @version
 *  
 */
public class lesson2 {
	String s1 = "已经初始化的String域";//定义时初始化的String域
	String s2;
	public lesson2(String s21) {//构造器
		s2 = s21;
	}
	public static void main(String[] args) {
		lesson2 si = new lesson2("通过构造器初始化的String域");//通过构造器初始化的String域
		System.out.println("si.s1 = " + si.s1);
		System.out.println("si.s2 = " + si.s2);
		
	}

}

运行结果:

si.s1 = 已经初始化的String域
si.s2 = 通过构造器初始化的String域

练习3:

/**
 * @作者 Jiacy
 * @日期2021年4月13日
 * @描述:创建一个带默认构造器的类,在构造器中打印一条消息。
 * 为这个类创建一个对象。
 * @version
 *  
 */
public class lesson3 {
	lesson3(){
		System.out.println("默认构造器");
	}
	public static void main(String[] args) {
		new lesson3();
	}

}

运行结果:

默认构造器

练习4:

package 初始化与清理;

/**
 * @作者 Jiacy
 * @日期2021年4月13日
 * @描述:为前一个练习中的类添加一个重载构造器,令其接受一个字符串参数,并在构造器中把你自己的消息
 * 和接收的参数一起打印出来
 * @version
 *  
 */
public class lesson4 {
	lesson4(){
		System.out.println("默认构造器");//默认构造器
	}
	lesson4(String s){//重载构造器
		System.out.println("重载构造器");
		System.out.println(s);
	}
	public static void main(String[] args) {
		new lesson4();//创建默认构造器的对象
		new lesson4("String");//窗前重载构造器的对象
		
	}

}

运行结果:

默认构造器
重载构造器
String

练习5:

package 初始化与清理;

/**
 * @作者 Jiacy
 * @日期2021年4月14日
 * @描述:创建一个名为Dog的类,它具有重载的bark()方法。此方法应根据不同的基本数据类型进行重载,
 * 并根据被调用的版本,打印出不同类型的狗吠(barking)、咆哮(howling)等信息
 * @version
 *  
 */
public class lesson5 {
	public void bark() {
		System.out.println("默认叫声");
	}
	public void bark(int i) {//重用方法1
		System.out.println("howling!");
	}
	public void bark(double i) {//重用方法2
		System.out.println("汪!");
	}
	public void bark(String i) {//重用方法3
		System.out.println("嘤嘤嘤");
	}
	public static void main(String[] args) {
		lesson5 dog = new lesson5();
		dog.bark();//调用默认类
		dog.bark(1);//调用重用方法1
		dog.bark(1.0);//调用重用方法2
		dog.bark("s");//调用重用方法3
		
	}

}

运行结果:

默认叫声
howling!
汪!
嘤嘤嘤

练习6:

package 初始化与清理;

/**
 * @作者 Jiacy
 * @日期2021年4月14日
 * @描述:修改练习5,让重载方法各自接受两个类型不同的参数,但顺序相反。
 * @version
 *  
 */
public class lesson6 {
	public void bark() {
		System.out.println("默认叫声");
	}
	public void bark(int i,double j) {//重用方法1
		System.out.println("howling!");
	}
	public void bark(double i,int j) {//重用方法2
		System.out.println("汪!");
	}
	
	public static void main(String[] args) {
		lesson6 dog = new lesson6();
		dog.bark();//调用默认类
		dog.bark(1,1.5);//调用重用方法1
		dog.bark(15.1,1);//调用重用方法2
	}

}

运行结果:

默认叫声
howling!
汪!

练习7:

package 初始化与清理;

/**
 * @作者 Jiacy
 * @日期2021年4月14日
 * @描述:创建一个没有构造器的类,并在main()方法中创建其对象,用以验证编译器是否真的自动加入了默认构造器
 * @version
 *  
 */
public class lesson7 {
	public static void main(String[] args) {
		 new lesson7();//直接创建
	}

}

练习8:

package 初始化与清理;

/**
 * @作者 Jiacy
 * @日期2021年4月16日
 * @描述:编写具有两个方法的类,在第一个方法内调用第二个方法两次:
 * 第一次调用时不使用this关键字,第二次调用时使用this关键字。
 * @version
 *  
 */
public class lesson8 {
	public void b() {//第二个方法
		System.out.println("b called");
	}
	public void a() {//第一个方法
		b();//不使用this关键字
		this.b();//使用this关键字
	}
	public static void main(String[] args) {
		new lesson8().a();
	}

}

运行结果:

b called
b called

练习9:

package 初始化与清理;

/**
 * @作者 Jiacy
 * @日期2021年4月16日
 * @描述:编写一个具有两个重载构造器的类,并在第一个构造器中通过this调用第二个构造器。
 * @version
 *  
 */
public class lesson9 {
	public lesson9(String s) {//第二个重载构造器
		System.out.println("s = " + s);
	}
	public lesson9(int i) {//第一个重载构造器
		this("i = " + i);//通过this调用第二个构造器
	}
	public static void main(String[] args) {
		new lesson9("String");
		new lesson9(1);
	}

}

运行结果:

s = String
s = i = 1

练习10:

/**
 * @作者 Jiacy
 * @日期2021年4月18日
 * @描述:编写具有finalize()方法的类,并在方法中打印消息。
 * 在main()中为该类创建一个对象。
 * @version
 *  
 */
public class lesson10 {
	protected void finalize() {
		System.out.println("finalize()");
	}
	public static void main(String[] args) {
		new lesson10();
	}

}

练习11:

/**
 * @作者 Jiacy
 * @日期2021年4月18日
 * @描述:修改lesson10,放finalize()总会被调用
 * @version
 *  
 */
public class lesson11 {
	protected void finalize() {
		System.out.println("Finalized()");
	}
	public static void main(String[] args) {
		new lesson11();
		System.gc();
		System.runFinalization();//调用finalize函数
	}

}

运行结果:

Finalized()

练习12:

/**
 * @作者 Jiacy
 * @日期2021年4月18日
 * @描述:编写名为Tank的类此类的状态满的或空的,其终结条件是:
 * 对象被清理时,必须处于空状态。请编写finalize()以检验终结条件是否成立。
 * 在main()中测试Yank可能发生的几种方式。
 * @version
 *  
 */
class Tank{
	static int counter;
	int id = counter++;
	boolean full;
	public Tank() {
		System.out.println("Tank  " + id + "  created");
		full = true;
	}
	public void empty() {
		full = false;
	}
	protected void finalize() {
		if(full) {
			System.out.println(id + " must be cleaned");
		}
		else
			System.out.println(id + " is cleaned");
	}
	public String toString() {
		return "Tank" + id;
	}
}
public class lesson12 {
	public static void main(String[] args) {
		new Tank().empty();
		new Tank();
		System.gc();
		System.runFinalization();
	}

}

运行结果:

Tank  0  created
Tank  1  created
0 is cleaned
1 must be cleaned

练习14:

/**
 * @作者 Jiacy
 * @日期2021年4月18日
 * @描述:编写一个类,拥有两个静态字符串域,其中一个在定义处初始化,另一个在静态块中初始化。
 * 现在,加入一个静态方法用以打印出两个字段值。证明它们都会在被使用之前完成初始化动作。
 * @version
 *  
 */
public class lesson14 {
	static String s1 = "String s1 is initialed";//在定义处初始化的字符串
	static String s2;//另一个字符串
	static {
		s2 = "String s2 is initialed";//在静态块中完成初始化
	}
	public static void main(String[] args) {
		System.out.println("s1 = " + s1);
		System.out.println("s2 = " + s2);
	}

}

运行结果:

s1 = String s1 is initialed
s2 = String s2 is initialed

练习15:

/**
 * @作者 Jiacy
 * @日期2021年4月18日
 * @描述:编写一个含有字符串域的类,并采用实例初始化方式进行初始化。
 * @version
 *  
 */
public class lesson15 {
	String s = "实例初始化";
	public lesson15() {
		System.out.println("默认初始化:" + s);
	}
	public lesson15(int i ) {
		System.out.println("int初始化:" + s);
	}
	public static void main(String[] args) {
		new lesson15();
		new lesson15(1);
	}

}

运行结果:

默认初始化:实例初始化
int初始化:实例初始化

练习16:

/**
 * @作者 Jiacy
 * @日期2021年4月18日
 * @描述:创建一个String对象数据,并为每一个元素都赋值一个String。
 * 用for循环打印该数组
 * @version
 *  
 */
public class lesson16 {
	public static void main(String[] args) {
		String s[] = new String[5];//创建String对象
		s[0] = "This";
		s[1] = "is";
		s[2] = "a";
		s[3] = "String";
		s[4] = "!";//为5个元素赋值
		for(int i = 0;i<5;i++) {//用for循环打印数组
			System.out.println(s[i]);
		}
	}

}

运行结果:

This
is
a
String
!

练习17:

/**
 * @作者 Jiacy
 * @日期2021年4月18日
 * @描述:创建一个类,它有一个接收一个String参数的构造器。
 * 在构造阶段,打印该参数。
 * 创建一个该类的对象引用数组,但是不实际去创建对象赋值给该数组。
 * @version
 *  
 */
class Test{//创建一个类,包含一个接受一个String参数的构造器
	Test (String s){
		System.out.println("String参数构造器");
	}
}
public class lesson17 {
	public static void main(String[] args) {
		Test[] array1 = new Test[4];//创建该类的对象引用数组
		
		
	}

}

练习18:

/**
 * @作者 Jiacy
 * @日期2021年4月18日
 * @描述:通过创建对象赋值给引用数组,从而完成练习17
 * @version
 *  
 */

public class lesson18 {
	public static void main(String[] args) {
		Test[] array1 = new Test[4];//创建该类的对象引用数组,此处Test可直接调用lesson17中的Test类
		for(int i = 0;i < array1.length;i++) {
			array1[i] = new Test(Integer.toString(i));
		}
	}
}
String参数构造器
String参数构造器
String参数构造器
String参数构造器

练习19:

/**
 * @作者 Jiacy
 * @日期2021年4月19日
 * @描述:写一个类,它接受一个可变参数的String数组。验证你可以向该方法穿第一个用逗号分隔的
 * String列表,或是一个String[]
 * @version
 *  
 */
public class lesson19 {
	static void printString(String ...str) {//可变参数
		for(String s : str)
			System.out.println(s);
	}
	public static void main(String[] args) {
		printString("This","is","a","String");//用逗号分隔的String列表
		printString(
				new String[] {"this","is","a","String"});//String[]
		
	}

}

运行结果:

This
is
a
String
this
is
a
String

练习20:

/**
 * @作者 Jiacy
 * @日期2021年4月19日
 * @描述:创建一个使用可变参数列表而不是普通的main()语法的main()。
 * 打印所产生的的args数组的所有元素,并用各种不同数量的命令行参数来测试它。
 * @version
 *  
 */
public class lesson20 {
	public static void main(String...  args) {
		lesson19.printString(args);
	}

}

练习21:

/**
 * @作者 Jiacy
 * @日期2021年4月19日
 * @描述:创建一个enum,它包含纸币中最小面值的6种类型。
 * 通过values()循环并打印每一个及其ordinal()。
 * @version
 *  
 */
enum PaperCurrencyType{
	ONE,TWO,FIVE,TEN,TWENTY,FIFTY,HUNDRED
}
public class lesson21 {
	public static void main(String[] args) {
		for(PaperCurrencyType s : PaperCurrencyType.values())
			System.out.println(s + " ordinal " + s.ordinal());//打印s和s.ordinal()
	}

}

运行结果:

ONE ordinal 0
TWO ordinal 1
FIVE ordinal 2
TEN ordinal 3
TWENTY ordinal 4
FIFTY ordinal 5
HUNDRED ordinal 6

练习22:

/**
 * @作者 Jiacy
 * @日期2021年4月19日
 * @描述:对于lesson21中,为enum写一个switch语句,对于每一个case,输出
 * 该特定货币的描述。
 * @version
 *  
 */

public class lesson22 {
	static void describe(PaperCurrencyType pct) {
		System.out.print(pct + "面值为");
		switch(pct) {//enum的switch语句,打印对应纸币的面值
			case ONE:
				System.out.println("1元");
				break;
			case TWO:
				System.out.println("2元");
				break;
			case FIVE:
				System.out.println("5元");
				break;
			case TEN:
				System.out.println("10元");
				break;
			case TWENTY:
				System.out.println("20元");
				break;
			case FIFTY:
				System.out.println("50元");
				break;
			case HUNDRED:
				System.out.println("100元");
				break;
		}
	}
	public static void main(String[] args) {
		for(PaperCurrencyType s : PaperCurrencyType.values())
			describe(s);
	}

}

运行结果:

ONE面值为1元
TWO面值为2元
FIVE面值为5元
TEN面值为10元
TWENTY面值为20元
FIFTY面值为50元
HUNDRED面值为100
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java编程思想课后练习题——初始化与清理 的相关文章

  • JSON - 使用Gson反序列化动态对象

    假设我有一个以下类型的 Java 类 public class MyClass public String par1 public Object par2 然后我有这个 String json par1 val1 par2 subpar1
  • SLF4J - Logback:如何在运行时配置记录器?

    我们在项目中使用 LogBack 我想根据一些数据库值配置记录器 即如果某个数据库值设置为 true 则记录器应同时使用文件和数据库附加程序 如果为 false 则记录器必须仅使用数据库附加程序 我还想保留使用静态最终记录器 因此我不会在每
  • 如何使用postman调用REST API进行azure文件存储?

    我想通过postman调用azure的文件存储相关的REST API 以下是我提出请求的方式 我正在请求列出文件存储帐户中的所有共享 如下所述 https learn microsoft com en us rest api storage
  • Maven 配置文件相当于 Gradle

    我试图在我的 spring boot 项目构建中实现一个简单的场景 包括 排除依赖项以及根据环境打包 war 或 jar 例如 对于环境dev包括开发工具和包 jar 用于prod包战等 我知道它不再是基于 XML 的配置 我基本上可以在
  • spring boot框架下如何过滤tomcat产生的访问日志

    我们使用spring boot框架 通过嵌入式tomcat生成访问日志 访问日志的格式如下 server tomcat access log enabled true server tomcat access log pattern h l
  • Spring Batch 多线程

    我正在编写一个 Spring Batch 并希望在需要时对其进行扩展 我的 ApplicationContext 看起来像这样 Configuration EnableBatchProcessing EnableTransactionMan
  • SwingWorker 在 Unsafe.park() 处挂起

    我有一个SwingWorker与后台服务器通信 然后更新JFrame 我正在调试我的应用程序并注意到即使在SwingWorker完成了它的工作 它的线程仍然存在 它挂在Unsafe park java lang Object 这是一个本机方
  • Apache POI 的 ProGuard 设置

    我正在构建一个使用 Apache POI 库的应用程序 当我调试应用程序 在不运行 Proguard 的情况下编译它 时 一切都运行良好 但是在导出 APK 后 当我运行应用程序并打开 Excel 文件时 出现以下异常 RuntimeExc
  • 如何更改tomcat jmx密码的文件权限

    我正在尝试保护 Windows 平台上托管的本地 tomcat 实例上的 JMX 访问 我已经创建了访问权限和密码文件 并使用以下 VM 参数插入这些文件 Dcom sun management jmxremote password fil
  • 在java中将jpeg/png转换为像素数组

    如何将包含 jpeg 或 png 的字符串转换为像素数组 最好是一维 理想情况下使用java内置的类 原来你需要公共文件上传 http commons apache org fileupload 看着那 这用户指南 http commons
  • 摆动刷新周期

    我试图了解何时使用重新验证 重绘 打包 令人惊讶的是 我没有找到详细的底层文档 请随意链接 到目前为止我已经明白这都是 RepaintManager 的责任 油漆 重新油漆指的是脏 干净的东西 pack validate revalidat
  • 如何从 REstAssured 中的 Json 数组获取 JSON 对象

    任何人都可以帮我解决这个场景 我是新来的RestAssured和处理JSON在我们的自动化脚本中 我有一个API谁的回应是JSONArray i e id 1002 entity testcase fieldName TextName di
  • 根据结果​​重试方法(而不是异常)

    我有一个具有以下签名的方法 public Optional
  • 将 Class 对象转换为字节

    如果我有一个Class http java sun com j2se 1 5 0 docs api java lang Class html在运行时实例 我可以获得它的 byte 表示形式吗 我感兴趣的字节将在类文件格式 http java
  • 如何根据服务器/环境动态加载服务器配置?

    目前 我设置了 Maven 配置文件 以便能够为不同的环境 开发 演示 暂存 生产等 部署我的项目 并且它工作得很好 但问题是 对于我拥有的每个模块 Web 应用程序 我需要复制 粘贴此配置文件 它们都是属性文件 当我需要更改环境 服务器配
  • 使用 colt java lib 时出现“矩阵太大”异常

    我正在使用 cern colt matrix lib 进行稀疏矩阵计算 但似乎我一直遇到此错误 线程 main 中的异常 java lang IllegalArgumentException 矩阵太大 我认为这是因为构造函数在 nrows
  • bean 中的 Spring JavaConfig 属性未设置?

    我正在考虑将 Spring JavaConfig 与一些属性文件一起使用 但 bean 中的属性未设置 bean 中的属性未设置 这是我的网络配置 Configuration EnableWebMvc PropertySource valu
  • 警告:无法加载 sqljdbc_auth.dll 原因:java.library.path 中没有 sqljdbc_auth

    我正在使用 Ubuntu 12 05 并尝试连接到 Windows Server 2012 来获取数据库 我的数据库名称是 jobs 电脑的IP地址是192 160 1 33 托管在1433 但是当我尝试连接时出现以下错误 WARNING
  • LinkedBlockingQueue 抛出 InterruptedException

    我有这段代码 ALinkedBlockingQueue应该只抛出一个Exception如果在等待添加到队列时被中断 但这个队列是无限的 所以它应该尽快添加 为什么我的关闭方法会抛出一个InterruptedException private
  • 如何使用SAXReader解析GPX文件?

    我正在尝试解析GPX file http en wikipedia org wiki GPS eXchange Format 我用 JDOM 尝试过 但效果不太好 SAXBuilder builder new SAXBuilder Docu

随机推荐

  • Python小白项目体系练习500例(附源代码),练完可就业

    1 有一个jsonline格式的文件file txt大小约为10K 2 补充缺失的代码 3 输入日期 判断这一天是这一年的第几天 4 打乱一个排好序的list对象alist 5 现有字典 d a 24 g 52 i 12 k 33 请按va
  • SpringBoot框架下,前后端实现文件交互——文件上传

    pc端实现文件上传与下载 前后端进行文件交互 主要形式为文件的上传与下载 1 上传的主要形式为前端通过文件上传插件将文件通过文件流形式传递到后端 后端进行处理 保存至目标地址 2 下载的主要形式为前端访问后台下载地址 实现文件下载 然后弹出
  • java多选下拉列表框_Java+Selenium3自动化入门4---Select多选框下拉列表

    在做自动化的过程中我们会遇到很多的控件 有的控件在WebDriver中都有封装好的API 我们使用这些方法来操作会提高我们的测试用例编写效率和准确性 今天我就来介绍下关于select多选框的操作方法 在Selenium中 针对html的标签
  • VTK:显式结构化网格实战详解

    VTK 显式结构化网格实战详解 本篇文章将详细介绍如何使用 VTK 库对显式结构化网格进行建模 可视化等操作 我们将通过 Python 语言的代码实现对显式结构化网格的读取与显示 并对其中的数据进行处理和分析 首先 我们需要导入必要的 Py
  • iOS项目统计总代码行数

    快速统计Xcode工程项目代码量 步骤一 打开终端 用cd命令 定位到工程所在的目录 然后调用以下命名即可把每个源代码文件行数及总数统计出来 find name m or name mm or name cpp or name h or n
  • JAVA后台接收前台传过来的json字符串并解析获得key 和value

    前台代码 ajax type post url project updateProject data formdata JSON stringify formdata tabname tabname val id proid val suc
  • Ubuntu16.04中python2.7、python3.5和python3.7共存

    Ubuntu中默认安装了python2 7和python3 5 由于一次测试 我需要python3 7的环境 所以进行了安装 其中涉及到 python源码安装 软链接的增添 删除修改 对应版本的pip安装和查看 一 python源码安装 1
  • IT项目管理八

    作业一 假定你的组织想聘用新教师来教授项目管理课程 制定一个质量标准清单 可用于做出此次聘用决定 质量标准项 质量标准度量 学历要求 985硕士及以上学历 资格要求 具有教室资格证 专业要求 计算机或者软件工程专业 从业经历 任教5年以上
  • Qt一步一步实现插件调用(附源码)

    最近手里几个项目都采用插件的方式进行开发工作 这里记录一下实现方法 给需要的同学一个参考 在linux系统和window系统都能成功编译通过 不废话直接步骤 第一步 建立插件原型 新建一个Qt项目 实现一个一个实时刷新当前时间这这么一个功能
  • C++ 比较浮点型数据(float,double)

    学习来源 C Lern bool approximatelyEqualAbsRel double a double b double absEpsilon double relEpsilon Check if the numbers are
  • past_key_values在P-TuningV2中的巧用

    背景 目前HuggingFace发布了关于微调LLMs的方法包 Parameter Efficient Fine Tuning PEFT 其中包含下面6种方法 LoRA LORA LOW RANK ADAPTATION OF LARGE L
  • 命令执行攻击与防御

    命令执行漏洞效果类似包含攻击 主要时由于输入的参数被当成命令来执行 远程命令执行漏洞 如果目标站点在设计时其过滤功能不严格或数据与代码区分不明显 及其导致命令执行漏洞的存在 利用系统函数实现远程命令执行 在PHP下 允许远程命令执行的函数有
  • 阿里云部署Node.js服务器(Windows环境)

    花了大半个月做的网站终于要上线了 周围的同学们很多都在使用阿里云的服务器 我也入手了一台 考虑到自己不是很适应ubuntu的命令行界面 于是买了个windows的 上网搜了一下 似乎都是用linux来部署nodejs的 所以只能自己摸索着来
  • CSS奇技淫巧之实现波浪效果

    为什么80 的码农都做不了架构师 gt gt gt 一直以来 使用纯 CSS 实现波浪效果都是十分困难的 因为实现波浪的曲线需要借助贝塞尔曲线 而使用纯 CSS 的方式 实现贝塞尔曲线 额 暂时是没有很好的方法 当然 借助其他力量 SVG
  • Flask 项目创建,增删改查:

    创建一个空文件pycharm打开 并创建虚拟环境 一次性安装以下所有 pip install r r txt Flask 1 1 4 Flask Caching 1 10 1 Flask Cors 3 0 10 Flask Migrate
  • android

    01Android入门 单选题 1 下列选项中 属于4G通信网最高传输速度的是 A 10Mbps B 20Mbps C 50Mbps D 100Mbps 参考答案 D 2 下面关于尺寸资源的描述 正确的是 A 尺寸资源通常定义在res va
  • windows系统git服务器启动,windowsServer服务器上搭建GIt服务器

    十年河东 十年河西 莫欺少年穷 学无止境 精益求精 摸索了一天 终于把服务器端Git搭建完毕 记录下来 省的以后踩坑 如下 在官网搜索框中输入 download 搜索 下载型选择为Java 选择开发版 然后下载 下载后 第一步 安装Java
  • OpenCV 指针仪表盘参数读取(一) 方案设计

    最近涉及到一个对指针式仪表盘通过图像处理的方式进行参数读取的工作 在此项工作中 比较重要的目的是 尽可能提高参数读取的准确率 确定两项主要工作内容 1 识别指针仪表盘的参数 2 尽可能提高准确率 网上相关的教程比较多 OpenCV中的pyt
  • Word中在纵向页中插入横向页的操作方法

    Word软件信息 Office2007 步骤一 假设当前页为横向页 通过 Ctrl Enter 键插入新的一页 步骤二 选中插入页 如下图所示 进入 页面布局 菜单 点击 页面设置 在弹出的页面中 纸张方向 选择 横向 应用于 选择 所选文
  • Java编程思想课后练习题——初始化与清理

    本文主要依据 Java编程思想 的示例及课后练习 通过个人编写 同时参考答案的代码写法 主要目的是用于自己熟悉编码风格 同时可以给更多人提供参考 只完成了部分练习 练习1 作者 Jiacy 日期2021年4月12日 描述 创建一个类 它包含