• Java学习笔记------常用API(二)


    Object

    无有参构造

    public Object()     空参构造

    成员方法:

    public String toString()       返回对象的字符串表示

    public boolean  equals(object obj)    比较两个对象是否相等

    Object默认用==号比较地址值,需要重写才能比较属性值

    protected Object clone(int a)       对象克隆

    对象克隆

    把a对象的属性值完全拷贝给b对象,也叫对象拷贝,对象复制

    深克隆:基本数据类型拷贝过来,字符串复用,引用数据类型会重新创建新的

    浅克隆:不管对象内部的属性是基本数据类型还是引用数据类型,都完全拷贝下来

    object中的是浅克隆

    深克隆需要重写

    浅克隆

    1. import java.util.Arrays;
    2. public class student implements Cloneable{
    3. private int age;
    4. private String name;
    5. private int[] date;
    6. public student() {
    7. }
    8. public student(int age, String name, int[] date) {
    9. this.age = age;
    10. this.name = name;
    11. this.date = date;
    12. }
    13. /**
    14. * 获取
    15. * @return age
    16. */
    17. public int getAge() {
    18. return age;
    19. }
    20. /**
    21. * 设置
    22. * @param age
    23. */
    24. public void setAge(int age) {
    25. this.age = age;
    26. }
    27. /**
    28. * 获取
    29. * @return name
    30. */
    31. public String getName() {
    32. return name;
    33. }
    34. /**
    35. * 设置
    36. * @param name
    37. */
    38. public void setName(String name) {
    39. this.name = name;
    40. }
    41. /**
    42. * 获取
    43. * @return date
    44. */
    45. public int[] getDate() {
    46. return date;
    47. }
    48. /**
    49. * 设置
    50. * @param date
    51. */
    52. public void setDate(int[] date) {
    53. this.date = date;
    54. }
    55. public String toString() {
    56. return "student{age = " + age + ", name = " + name + ", date = " + Arrays.toString(date) + "}";
    57. }
    58. //调用父类的clone,相当于Java帮我们克隆
    59. @Override
    60. protected Object clone() throws CloneNotSupportedException {
    61. return super.clone();
    62. }
    63. }
    64. public class Main {
    65. public static void main(String[] args) throws CloneNotSupportedException{
    66. int[]date={1,2,3,4,5,6,7};
    67. student a=new student(15,"hangman",date);
    68. //浅克隆
    69. student b=(student)a.clone();
    70. System.out.println(a);
    71. System.out.println(b);
    72. }
    73. }

     

    深克隆 

     

    1. import java.util.Arrays;
    2. public class student implements Cloneable{
    3. private int age;
    4. private String name;
    5. private int[] date;
    6. public student() {
    7. }
    8. public student(int age, String name, int[] date) {
    9. this.age = age;
    10. this.name = name;
    11. this.date = date;
    12. }
    13. /**
    14. * 获取
    15. * @return age
    16. */
    17. public int getAge() {
    18. return age;
    19. }
    20. /**
    21. * 设置
    22. * @param age
    23. */
    24. public void setAge(int age) {
    25. this.age = age;
    26. }
    27. /**
    28. * 获取
    29. * @return name
    30. */
    31. public String getName() {
    32. return name;
    33. }
    34. /**
    35. * 设置
    36. * @param name
    37. */
    38. public void setName(String name) {
    39. this.name = name;
    40. }
    41. /**
    42. * 获取
    43. * @return date
    44. */
    45. public int[] getDate() {
    46. return date;
    47. }
    48. /**
    49. * 设置
    50. * @param date
    51. */
    52. public void setDate(int[] date) {
    53. this.date = date;
    54. }
    55. public String toString() {
    56. return "student{age = " + age + ", name = " + name + ", date = " + Arrays.toString(date) + "}";
    57. }
    58. //调用父类的clone,相当于Java帮我们克隆
    59. @Override
    60. protected Object clone() throws CloneNotSupportedException {
    61. int[]date=this.date;
    62. int[]newdate=new int[date.length];
    63. for (int i = 0; i < date.length ; i++) {
    64. newdate[i]=date[i];
    65. }
    66. //调用父类克隆方法
    67. student a=(student)super.clone();
    68. a.date=newdate;
    69. return a;
    70. }
    71. }
    72. public class Main {
    73. public static void main(String[] args) throws CloneNotSupportedException{
    74. int[]date={1,2,3,4,5,6,7};
    75. student a=new student(15,"hangman",date);
    76. //深克隆
    77. student b=(student)a.clone();
    78. int[]arr= a.getDate();
    79. arr[0]=100;
    80. System.out.println(a);
    81. System.out.println(b);
    82. }
    83. }

     

  • 相关阅读:
    LeetCode5:最长回文子串
    网页制作课作业基于HTML+CSS+JavaScript+jquery仿慕课网教学培训网站设计实例 企业网站制作
    乘用车排气系统流场的数值模拟
    RocketMQ-RocketMQ部署(Linux、docker)
    【图】:常用图搜索(图遍历)算法
    关于go和rust语言的对比
    机器学习笔记 十六:基于Boruta算法的随机森林(RF)特征重要性评估
    Java中通过List中的stream流去匹配相同的字段去赋值,避免for循环去查询数据库进行赋值操作
    win10 OpenVINO2022版
    刷题记录:牛客NC51180Accumulation Degree
  • 原文地址:https://blog.csdn.net/2301_80483372/article/details/136635762