当前位置: 首页 > news >正文

影视网站建设的总体目标网站搜索功能模块

影视网站建设的总体目标,网站搜索功能模块,自己开公司,建设银行网站网址1.对象数组的排序 数组我们有一个现成的 sort 方法就是可以拿来对数组进行排序操作的#xff0c;但是能不能对一个对象数组进行排序呢#xff1f;答案是不可以的#xff01;对象数组中的每个元素都是一个实例化的对象#xff0c;对象中的成员属性复杂#xff0c;你直接调用…1.对象数组的排序 数组我们有一个现成的 sort 方法就是可以拿来对数组进行排序操作的但是能不能对一个对象数组进行排序呢答案是不可以的对象数组中的每个元素都是一个实例化的对象对象中的成员属性复杂你直接调用sort对数组进行排序是不行的。 此时就需要实现Comparable接口并且重写compareTo方法。compareTo方法定义了对象之间的比较规则sort会根据compareTo方法的返回值来进行排序。然后就可以使用Arrays类的sort方法对对象数组进行排序了。 下面是一个示例 class Student implements ComparableStudent{public String name;public int age;public int souce;public Student(String name, int age, int souce) {this.name name;this.age age;this.souce souce;}Overridepublic String toString() {return Student{ name name \ , age age , souce souce };}Overridepublic int compareTo(Student o) {return this.age - o.age;} }class AgeComparator implements ComparatorStudent{Overridepublic int compare(Student o1, Student o2) {return o1.age - o2.age;} } class SouceComparator implements ComparatorStudent{Overridepublic int compare(Student o1, Student o2) {return o1.souce - o2.souce;} } class NameComparator implements ComparatorStudent{Overridepublic int compare(Student o1, Student o2) {return o1.compareTo(o2);} }public class Exercise {public static void sort(Comparable[] array) {for (int i 0; i array.length; i) {for (int j 0; j array.length-i-1; j) {if(array[j].compareTo(array[j1])0){Comparable tmp array[j];array[j] array[j1];array[j1] tmp;}}}}public static void main(String[] args) {Student[] student new Student[3];student[0] new Student(zhangsan,11,55);student[1] new Student(lisi,8,41);student[2] new Student(wangwu,13,12);NameComparator nameComparator new NameComparator();AgeComparator ageComparator new AgeComparator();SouceComparator souceComparator new SouceComparator();Arrays.sort(student);System.out.println(Arrays.toString(student));//比较器Arrays.sort(student,souceComparator);System.out.println(Arrays.toString(student));Arrays.sort(student,nameComparator);System.out.println(Arrays.toString(student));Arrays.sort(student,ageComparator);System.out.println(Arrays.toString(student));//sort重新sort(student);System.out.println(Arrays.toString(student));} } 此段代码中对sotr中的Comparable接口中的compareTo进行了重写但是这么写有一个很大的问题因为这个方法一旦写死了后续调用sort排序都是以这一成员属性来排序。 所以在代码中我们运用了构造器这样使用者就可以根据自己的实际需求调用不同的比较器来对数组进行排序。 另外可以对sort方法进行重写这样就可以选择调用自己的sort方法。 2.Clonable 接口和深拷贝 Java 中内置了一些很有用的接口, Clonable 就是其中之一。Object 类中存在一个 clone 方法, 调用这个方法可以创建一个对象的 拷贝。 但是要想合法调用 clone 方法, 必须要先实现 Clonable 接口, 否则就会抛出 CloneNotSupportedException 异常。 下面是一段代码示例 import java.util.Objects;class Money implements Cloneable{public double money 6.6;Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();} } class Student implements Cloneable{public String name zxhangsan;Money m new Money();Overridepublic String toString() {return Student{ name name \ , m m.money };}Overrideprotected Object clone() throws CloneNotSupportedException {Student student (Student) super.clone();student.m (Money) this.m.clone();return student;}}public class Exercise {public static void main(String[] args) throws CloneNotSupportedException{Student student1 new Student();Student student2 (Student) student1.clone();System.out.println(student1);System.out.println(student2);System.out.println();student2.m.money 88;System.out.println(student1);System.out.println(student2);System.out.println();} } 这段代码展示了如何使用Cloneable接口和拷贝来创建对象的副本。 首先Cloneable接口是一个标记接口用于指示该类的对象可以被拷贝。在类中实现Cloneable接口表示该类的对象可以使用clone()方法进行拷贝。 在Money类和Student类中都实现了Cloneable接口并重写了clone()方法。在clone()方法中都调用了super.clone()来创建对象的浅拷贝。 在Student类中还对m对象进行了深拷贝。在clone()方法中首先调用了super.clone()来创建对象的浅拷贝然后将m对象进行深拷贝。深拷贝是为了确保副本对象和原始对象中的引用类型成员变量不共享同一个引用而是拥有各自独立的拷贝。 在Exercise类的main方法中创建了一个Student对象student1。然后通过调用clone()方法创建了student1的副本student2。使用println方法打印student1和student2对象的信息可以看到它们的内容是相同的。 接着修改了student2副本对象中的m对象的money属性将其修改为88。再次打印student1和student2对象的信息可以看到student1的m对象的money属性没有改变而student2的m对象的money属性被修改为88。这表明副本对象和原始对象中的引用类型成员变量是独立的互不影响。 综上所述Cloneable接口和拷贝可以用于创建对象的副本。通过实现Cloneable接口并重写clone()方法可以实现对象的浅拷贝。如果对象中包含引用类型成员变量需要进行深拷贝确保副本对象和原始对象中的引用类型成员变量不共享同一个引用。 3.获取对象信息 如果要打印对象中的内容可以直接重写Object类中的toString()方法。 toString()方法是Object类中的一个方法它返回一个包含对象内容的字符串表示。默认情况下toString()方法返回的是对象的类名和哈希码。 结合上个例子中的代码在Student类中重写了toString()方法以便返回一个包含name和m.money属性的字符串表示。通过重写toString()方法可以自定义打印对象的内容使其更加有意义和可读性。 在Exercise类的main方法中通过调用System.out.println()方法打印student1和student2对象实际上是调用了对象的toString()方法来获取字符串表示并将其输出到控制台。 所以通过重写toString()方法可以方便地打印对象的内容。 4.对象比较equals 方法 在Java中对象比较通常使用equals()方法。equals()方法是Object类中的一个方法用于比较两个对象是否相等。 默认情况下equals()方法比较的是对象的引用是否相等即比较两个对象是否指向同一个内存地址。这可以通过运算符进行比较。 然而有时候我们需要比较对象的内容是否相等而不仅仅是比较引用。在这种情况下我们需要重写equals()方法。 重写equals()方法时通常需要满足以下几个条件 自反性对于任何非空引用值xx.equals(x)应该返回true。对称性对于任何非空引用值x和y如果x.equals(y)返回true则y.equals(x)也应该返回true。传递性对于任何非空引用值x、y和z如果x.equals(y)返回truey.equals(z)返回true则x.equals(z)也应该返回true。一致性对于任何非空引用值x和y多次调用x.equals(y)应该始终返回相同的结果。非空性对于任何非空引用值xx.equals(null)应该返回false。 在重写equals()方法时通常需要比较对象的属性是否相等。可以使用instanceof运算符检查对象类型然后比较属性的值。在比较引用类型的属性时可以使用equals()方法递归比较。 另外如果重写了equals()方法通常也需要重写hashCode()方法以确保相等的对象具有相同的哈希码。这是因为在使用一些集合类如HashSet、HashMap等时会依赖对象的哈希码来进行快速查找和比较。 总之通过重写equals()方法可以自定义对象的相等性比较。在比较对象时应该根据对象的属性进行比较并满足equals()方法的约定。 下面是一个示例 public class Person {private String name;private int age;public Person(String name, int age) {this.name name;this.age age;}// 重写equals()方法来比较对象的相等性Overridepublic boolean equals(Object obj) {if (this obj) { // 检查对象引用是否相等return true;}if (obj null || getClass() ! obj.getClass()) { // 检查对象类型是否相同return false;}Person person (Person) obj; // 强制转换为Person类型return age person.age name.equals(person.name); // 比较属性值是否相等}public static void main(String[] args) {Person p1 new Person(Alice, 20);Person p2 new Person(Alice, 20);Person p3 new Person(Bob, 25);System.out.println(p1.equals(p2)); // 输出true因为p1和p2的属性值相等System.out.println(p1.equals(p3)); // 输出false因为p1和p3的属性值不相等} }在上面的示例中Person类重写了equals()方法来比较两个Person对象的相等性。在main方法中我们创建了三个Person对象并使用equals()方法进行比较。根据name和age属性的值我们可以确定两个对象是否相等。 在equals()方法中我们首先检查对象的引用是否相等如果相等则直接返回true。然后我们检查对象的类型是否相同如果不同则返回false。最后我们将对象强制转换为Person类型并比较name和age属性的值是否相等。如果属性值相等则返回true否则返回false。 在main方法中我们分别比较了p1和p2以及p1和p3的相等性。根据属性的值p1和p2的相等性为true而p1和p3的相等性为false。 5.hashcode方法 在Java中hashCode()方法是Object类的一个方法用于返回对象的哈希码hash code。哈希码是一个整数值用于在哈希表等数据结构中快速查找和比较对象。 hashCode()方法的默认实现是根据对象的内存地址计算哈希码。但是如果我们需要将对象用作集合类如HashSet、HashMap等的键或在自定义的哈希表中使用则通常需要重写hashCode()方法。 在重写hashCode()方法时应该遵循以下原则 如果两个对象使用equals()方法比较相等则它们的哈希码应该相等。如果两个对象的哈希码相等它们不一定相等。 以下是重写hashCode()方法的示例代码 import java.util.Objects;public class Person {private String name;private int age;public Person(String name, int age) {this.name name;this.age age;}// 重写hashCode()方法Overridepublic int hashCode() {return Objects.hash(name,age);}public static void main(String[] args) {Person p1 new Person(Alice, 20);Person p2 new Person(Alice, 20);System.out.println(p1.hashCode()); // 输出哈希码System.out.println(p2.hashCode()); // 输出哈希码} } 代码中hashCode()方法将name和age作为参数传递给Objects.hash()方法然后返回计算得到的哈希码。 在main方法中我们创建了两个Person对象并分别输出它们的哈希码。根据属性的值p1和p2的哈希码是相等的。 使用Objects.hash()方法可以简化重写hashCode()方法的过程并且可以处理多个属性的哈希码。这样可以提高代码的可读性和维护性。 以上就是本期的全部内容啦希望看完后能够对你有所帮助。希望小伙伴们可以点赞收藏加关注学习知识不迷路。
http://www.zqtcl.cn/news/376279/

相关文章:

  • 做变形字的网站工程公司简介模板
  • 网站建设网页怎么排列顺序网站制作 用户登录系统
  • 音乐网站用什么语言做深圳网站排名优化公司
  • h5响应式网站建设方案南京做微网站
  • 建设班级网站首页查注册公司什么网站
  • 中小企业网站建设平台网站开发技术大学教材
  • 有四川建设人才网这个网站吗青岛外贸网站运营哪家好
  • 网站建设j介绍ppt模板注册企业公司流程及费用
  • 建网站多少费用设计公司推荐
  • 东莞市营销网站建设哪个推广网站好
  • 上海青浦房地产网站建设广西建设人才网
  • 做网站的网络公司税收优惠推广优化关键词
  • 找能做网站的怎么查看网站备案号
  • 石嘴山北京网站建设h5网站建设
  • 滨州区建设局网站中国建行官网首页
  • 网站建设服务网站网站建设销售实习
  • 网站注册都需要什么给装修公司做推广的网站
  • me域名的网站wordpress 扩展字段
  • 新开三端互通传奇网站企业推广方式有哪些
  • 怎么制作网站页面做理论的网站
  • 哪家公司做跳转网站wordpress 网页缩放
  • 小说网站建设的支柱深圳建设发展集团有限公司
  • 陕西高速公路建设网站做网站不用编程
  • wordpress网站秒开网站建设设计理念
  • html5 网站模板永久免费的仓库管理软件
  • 贵州网站seo厦门网站设计多少钱
  • 哈市哪里网站做的好合作网站seo
  • 找苏州网站建设网站维护提醒php文件
  • 哪些网站做推广效果好与市场营销有关的网站
  • 有什么网站可以做设计赚钱吗专业vi设计公司哪家强