• 五(十一)、Object 类、Equals方法、toString方法、包装类、Junit


    java.lang,Object类
    1.Object类是所有java类的根父类
    2.如果在类的声明中未使用extends关键字指明其父类,则默认父类为 java.lang.Object类
    Object中的功能(属性、方法)就具有通用性;
    4.Object类只声明一个空参构造器

    Equals:

    面试题: == 和 equals()的区别
      一、
              ==:运算符,可以使用基本数据类型变量和引用数据变量中;
                        如果比较的是基本数据变量,比较两个变量报错的数据是否相等(不一定类型要相同);
                        如果比较的是引用数据类型变量,比较的是地址值,即两个引用是否指向同一个对象实体;
              equals:
                      是方法;而非运算符,通过对象来调用;
                      object类中对equals()的定义 与 “==” 作用是相同的;比较两个对象的地址值是否相同,即啷个引用是否指向同一个实体;
                  像String ,Date File 包装类等都重写了Object类中的equals()方法,重写以后,比较的不是两个引用的地址值是否相同,
                  而是比较两个对象的“实体内容”。
              通常情况下,我们自定义的类如果使用equals()的话,也通常比较两个对象的“实体内容”是否相同,那么我们就需要对Object类中的
              equals()进行重写;

    以下手动重写equals方法:

    10 class Person1{
    11     private String name;
    12     private int age;
    13     public String getName() {
    14         return name;
    15     }
    16     public void setName(String name) {
    17         this.name = name;
    18     }
    19     public int getAge() {
    20         return age;
    21     }
    22     public void setAge(int age) {
    23         this.age = age;
    24     }
    25     
    26     public void eat() {
    27         System.out.println("人吃饭。。。。");
    28         study();
    29     }
    30     
    31     public void study() {
    32         System.out.println("学习。。。");
    33     }
    34     public Person1(String name, int age) {
    35         //super();
    36         this(age);
    37         this.name = name;
    38         //this.age = age; //等同于 this("Tome");
    39     }
    40     public Person1() {
    41         super();
    42     }
    43     public Person1(String name) {
    44         this();//调用当前的空参构造器
    45         //super();
    46         this.name = name;
    47         
    48     }
    49     public Person1(int age) {
    50         //super();
    51         this.age = age;
    52     }
    53 //    @Override //手写部分
    54 //    public boolean equals(Object obj) {
    55 //        if(this == obj) {
    56 //            return true;
    57 //        }else if(obj instanceof Person1) {
    58 //            Person1 p = (Person1)obj;
    59 //            if(name.equals(p.name) && age == p.age) {
    60 //                return true;
    61 //            }else {
    62 //                return false;
    63 //            }
    64 //        }else {
    65 //            return false;
    66 //        }
    67 //    }
    68     @Override
    69     public int hashCode() {
    70         final int prime = 31;
    71         int result = 1;
    72         result = primeresult + age;
    73         result = primeresult + ((name == null) ? 0 : name.hashCode());
    74         return result;
    75     }
    //代码自动生成的equals
    76 @Override 77 public boolean equals(Object obj) { 78 if (this == obj) 79 return true; 80 if (obj == null) 81 return false; 82 if (getClass() != obj.getClass()) 83 return false; 84 Person1 other = (Person1) obj; 85 if (age != other.age) 86 return false; 87 if (name == null) { 88 if (other.name != null) 89 return false; 90 } else if (!name.equals(other.name)) 91 return false; 92 return true; 93 } 94 95 96 }
     1     public static void main(String[] args) {
     2         int i = 10;
     3         int j = 10;
     4         double d = 10.0;
     5         char c = 10;
     6         System.out.println(i == j);//true
     7         System.out.println(i == d);//true
     8         System.out.println(c == i);//true
     9         
    10         Person1 person1 = new Person1("Tom", 11);
    11         Person1 person2 = new Person1("Tom", 11);
    12         
    13         
    14         System.out.println(person1 == person2);//false
    15         System.out.println(person1.equals(person2));//false重写前,重写后是true;
    16     }

    toString()方法:

    Object类中tostring()的使用
    1.当我们输出一个对象的引用是,实际上调用的是当前对象的toString();
    2.Object的定义:
             public String toString() {
                return getClass().getName() + "@" + Integer.toHexString(hashCode());
            }
        3. String Date File 包装类等都重写过toString()方法,使得在调用对象的实体时,返回“实体信息”;
        4.自定义类也可以重写toString()方法,一般默认生成即可
        5.对象.toString();如果对象是null 则报错 空指针异常;

    Junit单元测试:

    Java中的JUnite单元测试
      步骤:1.选中当前工程 右键选择bulidpath   add libraries -- JUnite 5 - finish;
              2.创建Java类,进行单元测试;此类是public 此类提供公共的无参构造器
              3.此类中声明单元测试方法:
                  权限是public  没有返回值  没有形参;
                  需要@Test注解,
                  在单元测试类中导入 import org.junit.Test
              4.声明好单元测试方法以后,就可以在方法体内测试相关代码;
              5.写完代码以后,左键双击方法名,右键:run as  JUnite Test
      说明:
      1.如果执行结构没有任何异常,绿条
      2.如果执行结果出现异常,红条

    包装类:

    包装类的使用
      1.java提供了8种基本数据类型对应的包装类,使得基本数据类型的变量具有类的特征;
      2.基本数据类型 包装类 string 三者之间的转换;

     1 //基本数据类型 --》 包装类:调用包装类的构造器
     2     @Test 
     3     public void test1() {
     4         int num1 = 10;
     5         Integer in1 = new Integer(num1);
     6         System.out.println(in1.toString());
     7         Float f1 = new Float(12.3);
     8         Double d1 = new Double(12.3);
     9         Boolean b1 = new Boolean(true);
    10         Boolean b2 = new Boolean("true");
    11         Boolean b3 = new Boolean("true123");
    12         System.out.println(b3);//false
    13     }
    14     //包装类--》 基本数据类型 :调用包装类的 xxxValue();
    15     @Test 
    16     public void test2() {
    17         int num1 = 10;
    18         Integer in1 = new Integer(num1);
    19         int num2 = in1.intValue();
    20         System.out.println(num2+1);
    21         Float f1 = new Float(12.3);
    22         float f2 = f1.floatValue();
    23         System.out.println(f2);//false
    24     }
    25     //自动装箱 与 自动拆箱
    26     @Test 
    27     public void test3() {;
    28         int num = 10;
    29         Integer in1 = num;//自动装箱
    30         int num1 = in1;//自动拆箱;
    31         method(num);
    32     }
    33     //基本数据类型 包装类 --》String; 调用String重载的valueOf(Xxx xxx);
    34     @Test 
    35     public void test4() {
    36     //方式一
    37         int num = 10;
    38         String str = num+"";
    39         //方式二
    40         str = String.valueOf(num);
    41         
    42     }
    43     // String--》基本数据类型 包装类; 包装类的parseXXX();
    44     @Test 
    45     public void test5() {
    46         String str = "123";
    47         //可能会出现 numberformate 异常
    48         Integer in1 = Integer.parseInt(str);
    49         String str1 = "true";
    50         Boolean b1 = Boolean.parseBoolean(str1);
    51         
    52         
    53     }
    54     public void method(Object obj) {
    55         System.out.println(obj);
    56     }
  • 相关阅读:
    Qt QSqlquery结果集使用——size()函数无法返回结果集个数
    Bootstrap 响应式珊格布局
    Bootstrap navbar使用
    UML 类图之间关系
    QMessageBox 主要用法
    QT QString 与 int 转化
    Qt 连接数据库失败 QSqlDatabase: QMYSQL driver not loaded
    数据库使用问题 mysqld.sock找不到
    操作系统(二)--操作系统概述
    操作系统(一)--计算机系统概述
  • 原文地址:https://www.cnblogs.com/lixiuming521125/p/13363359.html
Copyright © 2020-2023  润新知