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

3如何做网站推广上海网站设计知名乐云seo

3如何做网站推广,上海网站设计知名乐云seo,长沙优化网站建设,thinkphp5 网站开发1.Comparable 接口 在Java中#xff0c;我们对一个元素是数字的数组可以使用sort方法进行排序#xff0c;如果要对一个元素是对象的数组按某种规则排序#xff0c;就会用到Comparable接口 当实现Comparable接口后#xff0c;sort会自动调用Comparable接口里的compareTo 方法…1.Comparable 接口 在Java中我们对一个元素是数字的数组可以使用sort方法进行排序如果要对一个元素是对象的数组按某种规则排序就会用到Comparable接口 当实现Comparable接口后sort会自动调用Comparable接口里的compareTo 方法. compareTo 的参数是 Object 注意 如果当前对象应排在参数对象之前, 返回小于 0 的数字; 如果当前对象应排在参数对象之后, 返回大于 0 的数字; 如果当前对象和参数对象不分先后, 返回 0; 对于 sort 方法来说, 需要传入的数组的每个对象都是 可比较 的, 需要具备 compareTo 这样的能力. 通 过重写 compareTo 方法的方式, 就可以定义比较规则. 缺点对于Comparable接口来说一个类里面只能实现一个compareTo方法也就是说实现Comparable接口在排序时只能按一种规则排序如果想要使用其他方法排序就必须重写compareTo方法 参考代码 class Student implements ComparableStudent{String name;int age;public Student(String name, int age) {this.name name;this.age age;}// Override // public int compareTo(Student o) { // return this.age-o.age; // }Overridepublic String toString() {return Student{ name name \ , age age };}Overridepublic int compareTo(Student o) {return this.name.compareTo(o.name);} }public class T1 {public static void main(String[] args) {Student[] students new Student[3];students[0] new Student(张三, 12);students[2] new Student(李四, 14);students[1] new Student(王五, 10);System.out.println(排序前 Arrays.toString(students));Arrays.sort(students);System.out.println(排序后 Arrays.toString(students));} } 2.Comparator接口 Comparator接口完美解决了Comparable接口的缺点 参考代码 class Student {String name;int age;public Student(String name, int age) {this.name name;this.age age;}Overridepublic String toString() {return Student{ name name \ , age age };} }class AgeComparator implements ComparatorStudent {Overridepublic int compare(Student o1, Student o2) {return o1.age-o2.age;} } class NameComparator implements ComparatorStudent{Overridepublic int compare(Student o1, Student o2) {return o1.name.compareTo(o2.name);} }public class T1 {public static void main(String[] args) {Student[] studentsnew Student[3];students[0]new Student(张三,12);students[2]new Student(李四,14);students[1]new Student(王五,10);System.out.println(排序前Arrays.toString(students));AgeComparator ageComparatornew AgeComparator();NameComparator nameComparatornew NameComparator();Arrays.sort(students,ageComparator);System.out.println(排序后Arrays.toString(students));Arrays.sort(students,nameComparator);System.out.println(排序后Arrays.toString(students));} } 3.对象比较equals方法 在Java中进行比较时 a.如果左右两侧是基本类型变量比较的是变量中值是否相同 b.如果左右两侧是引用类型变量比较的是引用变量地址是否相同 c.如果要比较对象中内容必须重写Object中的equals方法因为equals方法默认也是按照地址比较的 重写equals方法 参考代码 class Person{String name;int age;public Person(String name, int age) {this.name name;this.age age;}Overridepublic boolean equals(Object obj) {if(objnull){return false;}if(objthis){return true;}if(!(obj instanceof Person)){return false;}Person person(Person) obj;return this.name.equals(person.name)this.age person.age;} }public class T1 {public static void main(String[] args) {Person person1new Person(张三,28);Person person2new Person(王五,28);Person person3new Person(王五,28);System.out.println(person1.equals(person1));System.out.println(person1.equals(person2));System.out.println(person2.equals(person3));} 4.Clonable 接口 平时对数组进行拷贝时可以直接调用copyof方法和clone方法 public static void main(String[] args) {int []arr{1,2,3,4,5,6,7};int []brrarr.clone();int []crrArrays.copyOf(arr,arr.length);System.out.println(Arrays.toString(brr));System.out.println(Arrays.toString(arr));System.out.println(Arrays.toString(crr));} 但是在对一个对象进行拷贝时却无法使用copyof方法和直接使用clone方法 故此就需要用到Clonable接口 4.1Clonable的使用 注意事项 1.当以上4步均为实现时直接调用clone方法时 编译器会报这样的错误 这是因为Object类的clone方法是被protected所修饰的只能在同一个包或不同包的子类中访问然而我的测试类显然和Object类没关系 解决办法 在Sheep类重写Object类的clone方法调用Object类的clone方法 2.当重写玩clone方法后还报错 这是因为重写的clone方法的返回值是Object类型子类不能接收父类对象我们需要向下转型将返回值强转为Sheep类型 3.当一个自定义的类型想要被克隆就必须实现Cloneable接口 然而这个Cloneable接口是一个空接口 空接口也叫做标记接口实现了这个接口就表示当前类是可以被复制的 4.完成以上操作报异常 处理一下异常就可以了 4.2浅拷贝VS深拷贝 浅拷贝 运行下面代码有什么意外 class Price{int price; }class Sheep implements Cloneable{String name;int age;Price pricenew Price();public Sheep(String name, int age) {this.name name;this.age age;}Overridepublic String toString() {return {name:this.name age:this.ageprice:this.price.price};}Overrideprotected Object clone() throws CloneNotSupportedException {return super.clone();} }public class T1 {public static void main(String[] args)throws CloneNotSupportedException {Sheep sheep1new Sheep(多莉,2);sheep1.price.price99;Sheep sheep2(Sheep) sheep1.clone();sheep2.price.price88;System.out.println(sheep1.toString());System.out.println(sheep2.toString());} } 当输出结果是会发现sheep1和sheep2的price都变成了88然而我并没有操作sheep1的price这是因为在克隆是我克隆的只是price的地址所以sheep1和sheep2的price指向的是同一块空间当操作sheep2的price时也就相当于操作了sheep1的price 以上就是浅拷贝也就是说浅拷贝不能拷贝类里面的其他对象只能拷贝对象的地址 深拷贝 深拷贝也就是将对象也进行拷贝 Override protected Object clone() throws CloneNotSupportedException {Sheep tmp(Sheep) super.clone();tmp.price (Price) this.price.clone();return tmp;} 我们只需要将sheep1的price克隆然后被指向sheep2的price 注意事项 1.在对price进行克隆时需要先在price类里面实现Cloneable接口并重写clone方法 2.tmp在将克隆的结果返回出来后会被销毁 3.注意向上转型和向下转型​​​​​​​
http://www.hkea.cn/news/14533805/

相关文章:

  • 做网站的管理员咋找一个企业做网站推广的优势
  • 学校网站建设代码网站建设文献综述模板
  • 做企业网站用什么程序wordpress 接口
  • 网站后台统计横向网站
  • 做行程的网站医院门户网站制作
  • 字体设计比较好的网站一台vps两个wordpress网站
  • 网站开发后台前端数据库建一个网站需要多少费用
  • 官方网站优化价格淘宝 网站建设
  • 嘉兴网站制作计划企业网站源码php
  • 高邮市城乡建设局网站哪里有专业的培训机构
  • 网站设置关键词上海做机床的公司网站
  • 淄博做网站推广计算机类17个专业
  • 韩国优秀网站欣赏wordpress文章密码查看
  • 优秀网页模板广东seo站外推广折扣
  • 上海 网站备案代理网络设计山西分公司
  • 域名服务器都有了怎么做网站网站建设中 目录是什么
  • 网站建设都有什么类型东莞网站域名注册
  • 国家建设部网站倪虹网页设计培训机构哪家好一些
  • 做网站用什么配置的笔记本90设计官方网站
  • wordpress怎么做两个语言网站建设网站需要注意什么
  • 免费做app和网站的平台有哪些中山精品网站建设讯息
  • 设计软件免费下载网站哈尔滨建设工程管理工资多少
  • 网站上传教程网站做关键词
  • 网站统计源码网站开发的基础是什么
  • 建设网站能挣钱吗wordpress空格消失
  • 好的建网站的公司南阳淅川县制作网站的公司
  • 做微信的网站火车头发布wordpress带磁力链
  • 建设北京公司网站网站无障碍建设规定
  • 做网站时的电话图标旅游景区网站建设规划方案
  • 网站首页制作教程视频长沙微网站制作