排序比较
类如果要实现比较的规则,都会实现Comparable接口
String对CompareTo的实现
字符串的比较规则是先按着第一个字符来比较,如果说第一个字符串比另一个字符串的首字符大,那么前者就大
如果是整数说明str大, 如果是负数str1大, 如果是0相等
创建学生对象实现comparable接口
class Student implements Comparable<Student>{
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public int compareTo(Student o) {
// 做年龄的差
int flag = this.age - o.age;
if(flag == 0){
flag = this.name.compareTo(o.name);
}
return flag;
}
}
测试
Student s = new Student("abc", 20);
Student s1 = new Student("abc", 20);
int i1 = s.compareTo(s1);
System.out.println(i1);
结果
可变参数
可变参数的语法:
修饰符 返回值类型 方法名(数据类型... 变量){
}
源代码
public class DynamicParamDemo {
public static void main(String[] args) {
//int result = add(10, 10);
int result = add(new int[]{10, 20, 30});
System.out.println(result);
}
//数据类型 ... 变量这是可变参数的定义方式
//可以代表数组, 还可以代表单个数的传递
//如果调用的时候我们发现了正好能匹配的方法就不会调用可变参数的方法,如果不存在这个一个正好调用的方法就会调用可变参数的方法
public static int add(int... a){
int total = 0;
for (int i = 0; i < a.length ; i++) {
total += a[i];
}
return total;
}
/*public static int add(int a, int b){
return a + b;
}*/
}
首先看看没有可变参数是什么情况
点击导入static方法发现有很多不知道选啥
加上可变参数方法,输出结果
可变参数的方法可以将多个参数当作一个数组来处理,这使得在需要传递多个相同类型的参数时更加方便。
需要注意的是,可变参数的数组元素类型必须是基本类型(如整数、浮点数、布尔值等)或它们的包装类型(如Integer
、Double
、Boolean
等)。不能将可变参数与普通参数混合使用,也不能在可变参数之前有类型参数。
例如,下面的方法声明是错误的,因为它尝试将类型参数与可变参数混合:
public void printNumbers(int... numbers, int size) {
// 错误的方法声明,因为不能在可变参数之前有类型参数
}
而下面这样的方法声明也是错误的,因为它试图在可变参数之后有类型参数:
public void printNumbers(int size, int... numbers) {
// 错误的方法声明,因为不能在可变参数之后有类型参数
}