五(十一)、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     }

 

posted @ 2020-07-22 21:50  啄木鸟伍迪  阅读(209)  评论(0编辑  收藏  举报
//火箭 GenerateContentList();