9.super()方法的作用

本文详细解析了Java中继承的概念及super关键字的使用方法。通过具体代码示例,阐述了如何在子类中调用父类被覆写的方法,以及在子类构造方法中调用父类构造方法的过程。
package study;
class Person{
	void print() {
		System.out.println("父类的方法");
	}
}
class Child extends Person{
	public void print() {
		super.print();//利用[super.方法()]可以使用父类被子类覆写的方法
		System.out.println("子类的方法");
	}		
}

public class exercise {
	public static void main(String[] args) {
		Child c1 = new Child();
		c1.print();
	}	
}
//除此之外super还有一个用处就是在使用子类的构造方法之前要先使用父类的构造方法,而如果没写的化默认super();即无参的构造方法,
//但亦可以用super(参数);来选择先使用父类的的有参构造方法
//前面的Student-exercise6已经专门讲过这一点,所以不再重复
<think>我们被要求回答关于Java中Collections.sort方法作用和使用方式的问题。根据提供的引用内容,我们可以整理出以下信息: 1. Collections.sort()用于对List集合进行排序。它有两种重载形式: - `Collections.sort(List<T> list)`: 要求列表元素实现Comparable接口,按自然顺序排序。 - `Collections.sort(List<T> list, Comparator<? super T> c)`: 使用自定义的比较器Comparator进行排序。 2. 使用示例: - 对字符串列表按自然顺序排序(字母顺序)[^4]。 - 对自定义对象(如Student)按年龄排序,通过传递Comparator实现[^2][^3]。 3. 比较器Comparator的写法: - compare方法返回负整数、零或正整数,分别表示第一个参数小于、等于或大于第二个参数[^5]。 - 升序排序:当o1>o2时返回正数,o1<o2时返回负数,相等返回0。但通常可以直接用o1-o2(对于整数)实现升序[^2][^3]。 - 降序排序:当o1>o2时返回负数,o1<o2时返回正数[^3]。 4. 注意事项: - 在实现Comparator时,要确保比较逻辑满足自反性、对称性和传递性。 - 对于字符串、包装类等,Java已经实现了Comparable,所以可以直接使用sort(List)方法。 我们将按照以下结构回答: 1. 方法作用 2. 使用方式(两种形式) 3. 示例代码(字符串排序和自定义对象排序) 4. 比较器规则详解 同时,根据要求,在回答末尾生成相关问题。</think>### Java Collections.sort方法作用及使用示例 `Collections.sort()` 是 Java 集合框架中用于对 `List` 集合进行排序的核心方法,支持自然排序和自定义排序两种模式。 #### 一、方法作用 1. **自然排序**: 当集合元素实现了 `Comparable` 接口时(如 `String`、`Integer` 等包装类),默认按升序排列: ```java Collections.sort(List<T> list); // 自然排序 ``` 2. **自定义排序**: 通过 `Comparator` 实现灵活排序规则(如降序、按对象属性排序): ```java Collections.sort(List<T> list, Comparator<? super T> c); // 自定义排序 ``` #### 二、使用示例 ##### 示例1:字符串自然排序(升序) ```java List<String> list = new ArrayList<>(); list.add("e"); list.add("c"); list.add("g"); list.add("f"); System.out.println("排序前: " + list); // [e, c, g, f] Collections.sort(list); // 自然排序(按字母升序) System.out.println("排序后: " + list); // [c, e, f, g] [^4] ``` ##### 示例2:自定义对象按年龄升序 ```java class Student { private String name; private int age; // 构造方法和getter省略 } List<Student> students = new ArrayList<>(); students.add(new Student("Alice", 22)); students.add(new Student("Bob", 19)); // 使用Comparator按年龄升序 Collections.sort(students, new Comparator<Student>() { @Override public int compare(Student o1, Student o2) { return o1.getAge() - o2.getAge(); // 升序规则 } }); // 结果:Bob(19) -> Alice(22) [^2] ``` ##### 示例3:整数降序排序 ```java List<Integer> nums = Arrays.asList(5, 2, 9, 1); // 降序Comparator Collections.sort(nums, new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { return o2 - o1; // 降序规则 } }); System.out.println(nums); // [9, 5, 2, 1] [^3] ``` #### 三、比较器规则详解 在 `Comparator` 中,`compare()` 返回值决定顺序: - **返回负数**:`o1` 排在 `o2` 前(如 `o1 < o2` 时返回 `-1`) - **返回0**:两元素相等 - **返回正数**:`o1` 排在 `o2` 后(如 `o1 > o2` 时返回 `1`) > **关键点**:升序通常用 `o1 - o2`,降序用 `o2 - o1`(数值类型)[^3][^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值