JAVA-educoder实验二

任务描述

本关任务:创建一个类和一个对象,调用这个对象的属性和方法。

相关知识

为了完成本关任务,你需要掌握:1、什么是类和对象; 2、怎么定义类; 3、怎么创建对象并使用对象的属性和方法。

类的设计

作为Java程序的基本要素,类由成员变量(也称属性)和成员方法组成。属性包括常量和变量,方法则包括构造方法和自定义方法,在定义类时,它们习惯上按如下次序排列:

 
  1. public class Order{
  2. // final属性
  3. // 属性
  4. // 构造方法
  5. // 自定义方法
  6. }

类的属性一般定义为私有的,而类的方法定义为public

  • 访问修饰符

Java中定义了privatepublicprotected和默认的访问修饰符,这些修饰符控制着对类和类的成员变量以及成员方法的访问规则。另外,还可以辅助staticfinal关键字定义特殊规则。

87072648bd6b2737ea1313dfab206e86.png

public是公有类型的权限修饰符,使用public修饰的类、成员变量和成员方法,其他类都可以访问,包括任意包中的任意类以及子类。

private是私有类型的权限修饰符,使用private修饰的成员变量和成员方法,只能在本类中被使用,在子类中是不可见的,并且对其他包的类也是不可见的。

protected是保护级别的权限修饰符,它保护成员不会被其他包或非子类访问。也就是说protected修饰的成员只能被子类和同一包中定义的其他类访问。

当不添加任何权限修饰符时,编译器会使用默认权限修饰符,该修饰符的权限级别与protected类似,不同之处在于,其他包定义的子类无法访问父类默认权限修饰的成员。

  • 封装(encapsulation)

封装是指把对象的属性隐藏在对象的内部,不允许外部直接访问和修改。Java规范中的设置器和 访问器就是实现封装的标准方法,它们用于设置和获取对象的属性值。 设置器方法的命名一般以set作为方法名的前缀,以属性名作为后缀。

访问器方法的命名一般以getis作为方法名称的前缀,以属性名作为后缀。对于boolean类型的属性,应该使用is前缀定义访问器 方法。例如:

 
  1. public class Car {
  2. private String color;
  3. private boolean running;
  4. public String getColor() {
  5. return color;
  6. }
  7. public void setColor(String color) {
  8. this.color = color;
  9. }
  10. public boolean isRunning() {
  11. return running;
  12. }
  13. public void setRunning(boolean running) {
  14. this.running = running;
  15. }
  16. }

Object类

在Java中,所有的类都直接或间接继承了java.lang.Object类,它是所有类的父类。Object类中常用的两个方法为equals()toString()方法。任何类都可以重写Object类中的方法。 Object类处于Java继承层次中的最顶端,它封装了所有类的公共行为。 Object类的equals()方法采用的是==运算比较,也就是只有两个引用变量指向同一对象时才相等。而实际上我们期望该方法进行对象的内容比较,因此子类中通常将equals()方法改写。 类的toString()方法返回对象的描述信息,在Object类中该方法返回对象的类名及对象引用地址。子类中通常要提供自己的toString()方法,以便更好地描述对象。

对象的创建与构造方法

类是创建对象的模板,而对象是类的实例。对象是一组属性和方法的封装体,创建对象要用到保留字new,对象的构造方法的语法格式为: 引用变量 = new 构造方法(参数)

有关构造方法有以下几点说明: (1) 创建对象时将用到构造方法,系统自动调用参数匹配的构造方法为对象初始化。 (2) 构造方法的名称必须与类名同名,构造方法没有返回类型。 (3) —个类可提供多个构造方法,这些构造方法的参数不同。 (4) 如果程序中未提供构造方法,系统自动提供空的无参构造方法。

对象引用变量与对象关系

对象创建后,将对象的引用赋值给某个引用变量,就可以通过该变量访问对象的成员属性和方法,成员的调用通过“.”运算符实现,格式为: 对象名.属性 对象名.方法(参数)

静态空间与实例空间

带有static修饰的属性称为静态属性或类变量;带有static修饰的方法称为静态方法, 在静态方法内可以直接讨问静态属性或调用其他静态方法,静态属性在分配空间时与对象无关,静态空间的引用是与类关联的,一个类的静态属性成员只有一份,访问静态成员可以通过类名(在自己类中也可以直接访问),也可以通过对象。静态属性是共享的,该类的任何对象均可访问它。

【思考】静态属性归属类,因此必须指明是访问哪个类的静态成员,如果是在自己类中则可以省略,由于对象由类创建,自然对象能标识其所属类,因此也允许用对象做前缀访问静态属性。非静态属性也称实例变量,也就是说,要通过实际的对象才能访问,不同对象其实例变量的值通常是不同的。

Math类

Java 的 Math类包含了用于执行基本数学运算的属性和方法,如平方、对数、平方根和三角函数等。下表为 Math 类的一些常用方法。

7a61703bd5ae32664a1d29eb7e78fe98.png

  • 例如:如何求取230.53

Math.pow(x, y) 方法为Java 的幂运算,意思为求x的y次方,x和y可以是整型也可以是浮点型,该方法返回一个浮点型的值 例子:</

### educoder 叉树前序遍历实现代码educoder 平台上的实验中,通常会提供一种基于递归的方法来实现叉树的前序遍历。以下是具体的实现方式: #### 前序遍历定义 前序遍历是指按照“根节点 -> 左子树 -> 右子树”的顺序依次访问叉树中的每一个节点[^2]。 #### Java 实现代码 以下是一个完整的 Java 版本的前序遍历实现代码: ```java // 定义叉树节点 class TreeNode { int val; TreeNode left; TreeNode right; // 构造函数 TreeNode(int x) { val = x; } } public class BinaryTreePreorderTraversal { // 主方法用于执行前序遍历 public List<Integer> preorderTraversal(TreeNode root) { List<Integer> result = new ArrayList<>(); if (root == null) { return result; // 如果根节点为空,则返回空列表 } // 添加当前节点值到结果集中 result.add(root.val); // 遍历左子树 result.addAll(preorderTraversal(root.left)); // 遍历右子树 result.addAll(preorderTraversal(root.right)); return result; } } ``` 上述代码实现了递归形式的前序遍历逻辑。它首先理根节点 `root` 的值,接着分别对左子树和右子树进行递归调用[^4]。 #### 运行流程解析 1. **初始化**:创建一个存储整数型的动态数组 `result` 来保存遍历的结果。 2. **判断条件**:如果传入的根节点为 `null`,则直接返回空的结果集。 3. **添加根节点值**:将当前根节点的值加入到结果集合中。 4. **递归左子树**:继续对左子树部分进行相同的前序遍历操作。 5. **递归右子树**:最后对右子树部分重复相同的操作。 这种递归方法简单直观,在大多数情况下能够满足需求。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值