educoder——面向对象程序设计java——第二阶段Java面向对象(五)- 常用类

第1关:Object类

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

  • Demo类和Person类已经写好,在测试类中创建Demo类对象d1,传入输入值num1d1调用toString方法并打印输出该值;

  • 创建Demo类对象d2,同样传入输入值num1,打印判断d1d2是否相等(实际是比较地址);

  • 创建Person类对象p,传入输入值num2,打印判断d1p是否相等(实际是比较地址);

测试说明

补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。

测试输入: 100 100

预期输出: Demo:100 true false

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6b6Z6L6F5a-8,size_20,color_FFFFFF,t_70,g_se,x_16watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6b6Z6L6F5a-8,size_20,color_FFFFFF,t_70,g_se,x_16

 

第2关:JAVA基础类型包装类-练习 

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

  • 编写测试类,输入int型值aa传递给Integer类对象aString型值bb传递给Integer类对象b,输入int型值caabbc对应的数值相等;

  • 输入String型值str11传递给String类对象str1,输入String型值str22传递给String类对象str2str1str2对应的内容相同;

  • 打印输出a == ba == cb == ca.equals(b)

  • 打印输出str1 == str2str1.equals(str2)

测试说明

补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。

测试输入: 100 100 100 educoder educoder 预期输出: false true true true false true

 

 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6b6Z6L6F5a-8,size_20,color_FFFFFF,t_70,g_se,x_16 

第3关:String&StringBuilder&StringBuffer类-练习 

任务描述

通过所学知识,完成本关任务。 ####相关知识 略 ####编程要求 [comment]: <> (“编程要求”部分介绍本关任务的具体要求,如实现步骤,规则等,最好能给出效果图) 请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

  • 编写测试类,输入一个标准的网址,输出其域名的主体;

  • 将该主体转换为大写,打印输出;

  • 具体输出要求请看测试说明。

测试说明

补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。

测试输入:

https://www.educoder.net/

预期输出:

educoder EDUCODER

 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6b6Z6L6F5a-8,size_20,color_FFFFFF,t_70,g_se,x_16 

 

 第4关:Random类

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

  • 设计一个密码的自动生成器:密码由大写字母/小写字母/数字组成,生成六位随机密码。

  • 分别以123作为种子数创建Random对象,生成六位随机密码进行测试。

  • 具体输出要求请看测试说明。

测试说明

补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。

测试输入: 1 预期输出: NAvZuG

 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6b6Z6L6F5a-8,size_20,color_FFFFFF,t_70,g_se,x_16 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6b6Z6L6F5a-8,size_20,color_FFFFFF,t_70,g_se,x_16

 

 第5关:Date类和SimpleDateFormat类的用法

 

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

  • 编写测试类,算一下你的出生日期到2020年10月1日总共有多少天;

  • 具体输出要求请看测试说明。

    测试说明

    补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。

测试输入: 1999-09-01 预期输出: 你的出生日期距离2020年10月1日:7701天

 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6b6Z6L6F5a-8,size_20,color_FFFFFF,t_70,g_se,x_16 

 

第6关:Math类 

编程要求

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:

  • 编写测试类MathTest,输入4int类型数值,7double类型数值;

  • 分别输出第一个数的平方根,第二个数的立方根,第三个数的第四个数次方,第五个数和第六个数的最大值、最小值,第七个数的绝对值,第八个数的ceil值,第九个数的floor值,第十个数的rint值,第十一个数的round值。

测试说明

补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。

测试输入: 25 27 4 3 3.5 5.5 -8.8 10.8 9.6 10.62 11.51 预期输出: 5.0 3.0 64.0 5.5 3.5 8.8 11.0 9.0 11.0 12

 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6b6Z6L6F5a-8,size_20,color_FFFFFF,t_70,g_se,x_16 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6b6Z6L6F5a-8,size_20,color_FFFFFF,t_70,g_se,x_16

 

 

任务描述 本关任务:编写一个具有多个属性的类。 相关知识 为了完成本关任务,你需要掌握:成员变量。 定义和访问成员变量 一个类会有自己的属性,例如:人类,就有自己的姓名和年龄。我们接下来学习如何在类中定义和访问成员变量。 用法 需求 定义一个Person类,包含一个姓名和年龄字段 创建一个名为"张三"、年龄为23岁的对象 打印对象的名字和年龄 步骤 创建一个object类,添加main方法 创建Person类,添加姓名字段和年龄字段,并对字段进行初始化,让scala自动进行类型推断 在main方法中创建Person类对象,设置成员变量为"张三"、23 打印对象的名字和年龄 // 案例: 定义和访问成员变量. object ClassDemo03 { //1. 创建Person类 class Person { //2. 定义成员变量 //val name:String = "" //通过类型推断来实现 //var修饰的变量, 值是可以修改的. val修饰的变量, 值不能修改. var name = "" //姓名 var age = 0 //年龄 } //定义main函数, 它是程序的主入口. def main(args: Array[String]): Unit = { //3. 创建Person类型的对象. val p = new Person //4. 给成员变量赋值 p.name = "张三" p.age = 23 //5. 打印成员变量值到控制台上 println(p.name, p.age) } } 使用下划线初始化成员变量 scala中有一个更简洁的初始化成员变量的方式,可以让代码看起来更加简洁, 更优雅. 在定义 var 类型的成员变量时,可以使用 _ 来初始化成员变量 String => null Int => 0 Boolean => false Double => 0.0 val 类型的成员变量,必须要自己手动初始化 编程要求 题目:定义 Student 类,并创建名字(name),性别(gender),年龄(age),学号(xh)构造函数。 根据提示,在右侧编辑器补充代码,完成类的编写。 测试说明 平台会对你编写的代码进行测试: 预期输出: `` 需要补充代码:package step3 /********** Begin *********/ /********** End *********/
最新发布
03-16
<think>好的,我现在需要回答用户关于在Scala中定义带有多个属性的类以及初始化成员变量的方法的问题。首先,我需要回忆相关的Scala语法知识,并结合用户提供的引用内容来确保答案的准确性。 用户提到了三个引用,其中引用[1]和[2]主要涉及Scala类和对象的定义,特别是伴生对象和apply方法的应用。引用[3]则提到Scala中代码块可以返回元组并支持多变量赋值。这些信息对我构建答案很有帮助。 首先,定义一个带有多个属性的类。在Scala中,类的定义使用class关键字,成员变量通常在类的主构造函数中直接声明。例如,class Person(var name: String, var age: Int)这样,name和age就是类的属性,var关键字使得它们可变,而val则不可变。主构造函数中的参数直接成为类的成员变量,这是Scala的简洁之处。 接下来是初始化成员变量的方法。用户可能需要不同的初始化方式,比如通过构造函数参数、在类体内赋值,或者使用自定义的初始化方法。例如,在类内部直接赋值或在构造函数中提供默认值都是常见做法。引用[2]提到使用new来创建对象,所以构造函数初始化是基础。 然后,用户可能需要示例代码。这里需要展示不同初始化方法代码片段。比如,主构造函数初始化、类体内初始化、使用默认参数以及伴生对象中的apply方法。引用[1]中提到的伴生对象和apply方法特别有用,可以简化对象创建。例如,在伴生对象中定义apply方法,这样用户就可以通过Person("Alice", 30)来创建实例,而不需要new关键字。 此外,引用[3]提到的元组和多变量赋值可能适用于某些初始化场景,比如返回元组并解构赋值,但用户的问题更关注类的定义和初始化,这部分可能暂时用不上,但可以留作扩展知识。 在编写示例代码时,需要注意Scala的语法正确性,比如类定义的格式、伴生对象的命名与类相同、apply方法的正确使用。同时,要确保代码中的成员变量使用var或val正确声明,以展示可变和不可变的情况。 用户可能还关心如何访问和修改成员变量。在示例中,应该展示如何通过对象访问属性,比如p.name = "Bob",以及不可变属性val的情况,此时修改会导致编译错误,从而说明val和var的区别。 最后,总结部分需要简明扼要地概括定义类的方法和初始化成员变量的不同方式,并强调伴生对象和apply方法带来的便利性,如引用[1]和[2]所述。 检查是否有遗漏点,比如是否覆盖了用户需求中的所有方面:多属性类定义、初始化方法、示例代码。确保每个步骤都有对应的代码示例,并且引用正确。同时,避免引入用户未提及的复杂概念,保持答案的针对性和清晰度。</think>在Scala中定义多属性类并初始化成员变量,可以通过以下方法实现: --- ### 1. **定义类与主构造函数初始化** 直接在类的主构造函数中声明属性,这是最简洁的方式: ```scala class Person(var name: String, var age: Int, val gender: String) // var生成可读写属性,val生成只读属性 ``` - **使用示例**: ```scala val p = new Person("Alice", 30, "Female") println(p.name) // 输出:Alice p.age = 31 // 允许修改var属性 // p.gender = "Male" // 编译错误,val属性不可修改 ``` --- ### 2. **类体内初始化成员变量** 如果需要在类体内进行复杂初始化逻辑: ```scala class Student(val id: Int, name: String) { var score: Double = 0.0 // 初始化为默认值 def initScore(newScore: Double): Unit = { score = newScore } } ``` - **使用示例**: ```scala val s = new Student(1001, "Bob") s.initScore(95.5) println(s.score) // 输出:95.5 ``` --- ### 3. **通过默认参数简化初始化** 为构造函数参数设置默认值: ```scala class Book(val title: String = "Untitled", val price: Double = 0.0) ``` - **使用示例**: ```scala val book1 = new Book() // 使用默认值 val book2 = new Book("Scala Guide", 49.9) ``` --- ### 4. **伴生对象与apply方法** 通过伴生对象的`apply`方法实现无`new`初始化[^1]: ```scala class Car(val brand: String, val model: String) object Car { def apply(brand: String, model: String): Car = new Car(brand, model) // 可扩展其他工厂方法 } ``` - **使用示例**: ```scala val car = Car("Tesla", "Model S") // 无需new关键字 ``` --- ### 总结表格 | 方法 | 适用场景 | 特点 | |--------------------|-------------------------------|-----------------------------| | 主构造函数声明属性 | 简单属性初始化 | 代码简洁,直接声明读写权限 | | 类体内初始化 | 需要复杂逻辑的初始化 | 支持动态赋值和自定义方法 | | 默认参数 | 参数可选场景 | 提高代码灵活性 | | 伴生对象apply方法 | 工厂模式或无new语法需求[^2] | 隐藏实现细节,增强API友好性 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值