public static void main(String[] args) {
Student student1 = new Student(“小明”, 10);
Student student2 = new Student(“小刚”, 5);
Student student3 = new Student(“彭于晏”, 28);
Student student4 = new Student(“胡歌”, 26);
Student[] array = new Student[4];
array[0] = student1;
array[1] = student2;
array[2] = student3;
array[3] = student4;
System.out.println("排序前: " + Arrays.toString(array));
Arrays.sort(array, new AgeCompare()); //以年龄进行排序
System.out.println("排序后: " + Arrays.toString(array));
}
}
最后输出的结果:
Comparable接口示例:
//Comparable接口示例
class Student implements Comparable{
public String name;
public int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return this.name + " " + this.age;
}
@Override
public int compareTo(Student o) {
return this.name.compareTo(o.name); //以姓名进行排序
}
}
public class Demo2 {
public static void main(String[] args) {
Student student1 = new Student(“Tom”, 10);
Student student2 = new Student(“Emma”, 5);
Student student3 = new Student(“Alice”, 20);
Student student4 = new Student(“Kate”, 30);
Student[] array = new Student[4];
array[0] = student1;
array[1] = student2;
array[2] = student3;
array[3] = student4;
System.out.println(“排序前:” + Arrays.toString(array));
Arrays.sort(array); //以姓名进行排序
System.out.println(“排序后:” + Arrays.toString(array));
}
}
最终输出结果:
注:String类里面的CompareTo方法,是按照字典序的大小进行比较。简单点说,每个字符都有相应的ASCII码值,这个方法会从头开始比较每个字符,如果前者小于后者,返回-1,相等返回0,大于就返回1。具体的注释可以查看帮助文档。
以上就是两个比较接口的使用,这两接口通常也叫做比较器。
Cloneable接口:用于克隆的。
也就是说,一个类要想实现克隆的功能,需要实现Cloneable接口,实现这个接口后,还必须自己手动的书写Object的clone方法。
切记:在没有实现接口的情况下,调用克隆方法,会抛出异常。
Cloneable示例:
通过person对象,调用克隆方法,就能实现克隆。那么问题来了,这是深拷贝还是浅拷贝?关于深拷贝浅拷贝,我前面有一篇文章讲过
我们来看下面这一段代码,可能你就会更好理解这个Cloneable接口:
上诉代码所对应的内存图如下:
此时如果我们通过person1来改变money里面的值,那么person对象里面的也会被修改。因为本质上这两个对象的money值是指向同一块空间的。这也就是浅拷贝。
那么要实现深拷贝,该如何?
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
![img](https://i-blog.csdnimg.cn/blog_migrate/7b6f930afc1e068384fe3a9ca292acda.jpeg)
最后总结我的面试经验
2021年的金三银四一眨眼就到了,对于很多人来说是跳槽的好机会,大厂面试远没有我们想的那么困难,摆好心态,做好准备,你也可以的。
另外,面试中遇到不会的问题不妨尝试讲讲自己的思路,因为有些问题不是考察我们的编程能力,而是逻辑思维表达能力;最后平时要进行自我分析与评价,做好职业规划,不断摸索,提高自己的编程能力和抽象思维能力。
BAT面试经验
实战系列:Spring全家桶+Redis等
其他相关的电子书:源码+调优
面试真题:
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
存中…(img-U4Jv2E2g-1712999305413)]
面试真题:
[外链图片转存中…(img-byut5LFC-1712999305413)]
[外链图片转存中…(img-D8bfrZei-1712999305414)]
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!