第26天学习打卡

JavaBean重写Object类的方法

需求:开发中通常需要将对象转换成字符串形式进行传输,也需要对将使用的对象进行相等判断。定义标准JavaBean类,重写toString和equals方法。

步骤:

定义标准Java Bean类Student,属性:id,name,score

重写toString():

该对象的字符串表现形式,一般都是包含所有属性值且具有一定的格式的字符串

重写equals():

可以通过关键属性(id name score)来确定该类的两个对象是否相同,可以比较所有属性值

在测试类中创建Student对象并使用

 

 

 package cn.itcast.demo02;
 //学生类
 public class Student {
     //成员变量
     private int id;//编号
     private String name;//姓名
     private int score;//成绩
     //构造方法
 
 
     public Student() {
    }
 
     public Student(int id, String name, int score) {
         this.id = id;
         this.name = name;
         this.score = score;
    }
     //成员方法
 
     public int getId() {
         return id;
    }
 
     public void setId(int id) {
         this.id = id;
    }
 
     public String getName() {
         return name;
    }
 
     public void setName(String name) {
         this.name = name;
    }
 
     public int getScore() {
         return score;
    }
 
     public void setScore(int score) {
         this.score = score;
    }
     //toString() ,用来将对象转换成其对应的字符串形式
 
 
     //equals()方法,用来比较两个对象是否相同
 }
 

 

 package cn.itcast.demo02;
 
 /*
    需求:定义一个标准的JavaBean类,并在测试类中进行测试
    学生类:Student
        属性:id(编号) ,name(名字) ,score(成绩)
 
  */
 
 public class Test {
     public static void main(String[] args) {
         //测试toString方法
         //创建学生类对象
         Student s1 = new Student(1, "欧阳修",66);
         //输出语句直接打印对象,默认调用了该对象的toString()方法。
         System.out.println(s1);
         //类似于这种形式
         System.out.println(s1.toString());
 
    }
 }
 

输出结果:

cn.itcast.demo02.Test cn.itcast.demo02.Student@14ae5a5 cn.itcast.demo02.Student@14ae5a5

Process finished with exit code 0

自定义版的重写equals()方法

 package cn.itcast.demo02;
 //学生类
 public class Student {
     //成员变量
     private int id;//编号
     private String name;//姓名
     private int score;//成绩
     //构造方法
 
 
     public Student() {
    }
 
     public Student(int id, String name, int score) {
         this.id = id;
         this.name = name;
         this.score = score;
    }
     //成员方法
 
     public int getId() {
         return id;
    }
 
     public void setId(int id) {
         this.id = id;
    }
 
     public String getName() {
         return name;
    }
 
     public void setName(String name) {
         this.name = name;
    }
 
     public int getScore() {
         return score;
    }
 
     public void setScore(int score) {
         this.score = score;
    }
     //toString() ,用来将对象转换成其对应的字符串形式
 
     @Override
     public String toString() {
         return "Student{" +
                 "id=" + id +
                 ", name='" + name + '\'' +
                 ", score=" + score +
                 '}';
    }
 
 
     //equals()方法,用来比较两个对象是否相同
     //自定义的重写equals()方法
     //假设id属性值相同,两个对象就是同一个对象
     public boolean equals(Object obj){
         //s1.equals(s2)
         /*
         this:被调用,this就表示谁。这里表示s1
         obj:表示s2
         这里的比较是obj 和this比较
          */
         //向下转型
         Student s2 = (Student) obj;
         return this.id == s2.id;
    }
 
 }
 

 

 package cn.itcast.demo02;
 
 /*
    需求:定义一个标准的JavaBean类,并在测试类中进行测试
    学生类:Student
        属性:id(编号) ,name(名字) ,score(成绩)
     注意:
         实际开发中,我们把两个对象的各个属性值都相同相同的情况下,才会认为这两个对象是同一个对象
 
  */
 
 public class Test {
     public static void main(String[] args) {
         //测试toString方法
         //创建学生类对象
         Student s1 = new Student(1, "欧阳修",66);
         //输出语句直接打印对象,默认调用了该对象的toString()方法。
         System.out.println(s1);
         //类似于这种形式
         System.out.println(s1.toString());
 
         //测试equals()方法, s1.equals(s2);
         Student s2 = new Student(11,"欧阳修",66);
         boolean b1 = s1.equals(s2);
         System.out.println(b1);
 
    }
 }
 

 

 package cn.itcast.demo02;
 
 import java.util.Objects;
 
 //学生类
 public class Student {
     //成员变量
     private int id;//编号
     private String name;//姓名
     private int score;//成绩
     //构造方法
 
 
     public Student() {
    }
 
     public Student(int id, String name, int score) {
         this.id = id;
         this.name = name;
         this.score = score;
    }
     //成员方法
 
     public int getId() {
         return id;
    }
 
     public void setId(int id) {
         this.id = id;
    }
 
     public String getName() {
         return name;
    }
 
     public void setName(String name) {
         this.name = name;
    }
 
     public int getScore() {
         return score;
    }
 
     public void setScore(int score) {
         this.score = score;
    }
     //toString() ,用来将对象转换成其对应的字符串形式
 
     @Override
     public String toString() {
         return "Student{" +
                 "id=" + id +
                 ", name='" + name + '\'' +
                 ", score=" + score +
                 '}';
    }
 
 
     //equals()方法,用来比较两个对象是否相同
     //通过快捷键的方法生成
 
 
     @Override
     public boolean equals(Object o) {
         //this-->指的是s1 o--->对应s2
         //比较两个对象的地址值是否相同,提高效果
         //补充:如果if语句控制的语句体只有一行代码,那么{}可以省略不写
         if (this == o)
             return true;
         //判断要比较的两个对象是否是同一个类型的对象,提高程序的健壮性
         //拿s1的字节码和s2的字节码进行比较
         if (o == null || getClass() != o.getClass())
             return false;
         //向下转型,正常的逻辑代码
         Student student = (Student) o;
         return id == student.id && score == student.score && name.equals(student.name);
    }
 
 
 }
 

 

 package cn.itcast.demo02;
 
 /*
    需求:定义一个标准的JavaBean类,并在测试类中进行测试
    学生类:Student
        属性:id(编号) ,name(名字) ,score(成绩)
     注意:
         实际开发中,我们把两个对象的各个属性值都相同相同的情况下,才会认为这两个对象是同一个对象
 
  */
 
 public class Test {
     public static void main(String[] args) {
         //测试toString方法
         //创建学生类对象
         Student s1 = new Student(1, "欧阳修",66);
         //输出语句直接打印对象,默认调用了该对象的toString()方法。
         System.out.println(s1);
         //类似于这种形式
         System.out.println(s1.toString());
 
         //测试equals()方法, s1.equals(s2);
         Student s2 = new Student(1,"欧阳修",66);
         boolean b1 = s1.equals(s2);
         System.out.println(b1);
 
    }
 }
 

输出结果:

cn.itcast.demo02.Test Student{id=1, name='欧阳修', score=66} Student{id=1, name='欧阳修', score=66} true

Process finished with exit code 0

Scanner类

简介

扫描器。能够解析字符串(String)和基本数据类型的数据

构造方法

Scanner(InputString):

构造一个扫描器对象,从指定输入流中获取数据参数System.in,对应键盘录入

成员方法

hasNextXxx():

判断是否还有下一个输入项,其中Xxx可能是任意基本数据类型,返回结果为布尔类型。

nextXxx():

获取下一个输入项,其中Xxx可能是任意基本数据类型。返回对应类型的数据。

String nextLine():

获取下一行数据,以换行符作为分隔符。

String next():

获取下一个输入项,以空白字符作为分隔符。空白字符:空格、tab、回车等

image-20210203100319675

接收整数

 

 package cn.itcast.demo03;
 /*
     Scanner类:
          概述:
          扫描器。能够解析字符串(String)和基本类型的数据
          构造方法:
          hasNextXxx():
                 判断是否还有下一个输入项,其中Xxx可能是任意基本数据类型,返回结果为布尔类型。
 
           nextXxx():
                 获取下一个输入项,其中Xxx可能是任意基本数据类型。返回对应类型的数据。
 
           String nextLine():
                获取下一行数据,以换行符作为分隔符。
 
           String next():
                    获取下一个输入项,以空白字符作为分隔符。空白字符:空格、tab、回车等
 
 
      */
 
 import java.util.Scanner;
 
 public class Test {
     public static void main(String[] args) {
         //创建Scanner类型的对象(注意:要导包)
         //System.in:标准的输入流,默认指向键盘。就是你对键盘进行的操作System.in都能监听到
         Scanner sc = new Scanner(System.in);
 
 
         //接收整数
         System.out.println("请录入一个整数");
 
         //为了解决(避免)InterruptedException异常,可以加入一个判断
         if(sc.hasNextInt()){
             //判断下一个录入的是否是整数,如果是,结果就是true
             int num = sc.nextInt();
             System.out.println("num:" + num);
        }
 
    }
 
 }
 

 

 

接收字符串类型

nextLine():

 

 package cn.itcast.demo03;
 /*
     Scanner类:
          概述:
          扫描器。能够解析字符串(String)和基本类型的数据
          构造方法:
          hasNextXxx():
                 判断是否还有下一个输入项,其中Xxx可能是任意基本数据类型,返回结果为布尔类型。
 
           nextXxx():
                 获取下一个输入项,其中Xxx可能是任意基本数据类型。返回对应类型的数据。
 
           String nextLine():
                获取下一行数据,以换行符作为分隔符。
 
           String next():
                    获取下一个输入项,以空白字符作为分隔符。空白字符:空格、tab、回车等
 
 
      */
 
 import java.util.Scanner;
 
 public class Test {
     public static void main(String[] args) {
         //创建Scanner类型的对象(注意:要导包)
         //System.in:标准的输入流,默认指向键盘。就是你对键盘进行的操作System.in都能监听到
         Scanner sc = new Scanner(System.in);
 
 
         
 
         //接收字符串类型的数据
         System.out.println("请录入一个字符串:");
         String str1 = sc.nextLine();
         System.out.println("str1:" + str1);
 
    }
 
 }
 

next():用法

 

 package cn.itcast.demo03;
 /*
     Scanner类:
          概述:
          扫描器。能够解析字符串(String)和基本类型的数据
          构造方法:
          hasNextXxx():
                 判断是否还有下一个输入项,其中Xxx可能是任意基本数据类型,返回结果为布尔类型。
 
           nextXxx():
                 获取下一个输入项,其中Xxx可能是任意基本数据类型。返回对应类型的数据。
 
           String nextLine():
                获取下一行数据,以换行符作为分隔符。
 
           String next():
                    获取下一个输入项,以空白字符作为分隔符。空白字符:空格、tab、回车等
         注意:
            在实际开发中,应用到的最多就是:
            nextInt():接收整数
            nextLine():接收字符串
 
 
      */
 
 import java.util.Scanner;
 
 public class Test {
     public static void main(String[] args) {
         //创建Scanner类型的对象(注意:要导包)
         //System.in:标准的输入流,默认指向键盘。就是你对键盘进行的操作System.in都能监听到
         Scanner sc = new Scanner(System.in);
 
 
 
 
         //接收字符串类型的数据
         System.out.println("请录入一个字符串:");
        /* String str1 = sc.nextLine();//结束标记是 换行符
         System.out.println("str1:" + str1);*/
 
 
         String str2 = sc.next();//结束标记是:空白字符(空格,tab,换行符),到这些标记时后面的字符都不打印
         System.out.println("str2:" + str2);
 
 
    }
 
 }
 

 

String类

简介

字符串。每一个字符串对象都是常量。

构造方法

String(byte[]):

构造一个String对象,将指定字节数组中的数据转化为字符串。

String(char[]):

构造一个String对象,将指定字符串数组中的数据转化为字符串。

成员方法

boolean equals(String):

判断当前字符串与给定字符串是否相同,区分大小写。

boolean equalsIgnoreCase(String):

判断当前字符串与给定字符串是否相同,不区分大小写。

boolean startsWith(String):

判断是否以给定字符串开头。

image-20210203110448204

 

 package cn.itcast.demo04;
 /*
 String类:
 概述:
       字符串,每个字符串对象都是常量。
 构造方法:
        String(byte[]):构造一个String对象,将指定字节数组中的数据转化为字符串
        String(char[]):构造一个String对象,将指定字符数组中的数据转化为字符串
 成员方法:
        boolean equals(String): 判断当前字符串与给定字符串是否相同,区分大小写
        boolean equalsIgnoreCase(String):判断当前字符串与给定字符串是否相同,不区分大小写
        boolean startsWith(String):判断是否以给定字符串开头
        boolean isEmpty():判断字符串是否为空
 
  */
 
 public class Test {
     public static void main(String[] args) {
         //测试 构造方法
         //1.将指定的字节数组转成字符串
         //'a':97 'b':98 'c':99
         byte[] bys = {97, 98, 99};
         String s1 = new String(bys);
         System.out.println("s1:" + s1);
         System.out.println("===================");
 
         //2.将指定的字符数组转成字符串
         char[] chs = {'h', 'e', 'l', 'l', 'o'};
         String s2 = new String(chs);
         System.out.println("s2:" + s2);
         System.out.println("============================");
 
         //在实际开发中,String 类非常常用,每次都new很麻烦,于是针对String的语法进行了优化,省去了new的动作
         String s3 = "doudou";//免用new
         System.out.println("s3 :" + s3);
         System.out.println("===========================");
 
 
         //测试成员方法
         String str1 = "abc";
         String str2 = "ABC";
         // boolean equals(String): 判断当前字符串与给定字符串是否相同,区分大小写
         boolean b1 = str1.equals(str2);
         System.out.println("equals():" + b1);
         //       boolean equalsIgnoreCase(String):判断当前字符串与给定字符串是否相同,不区分大小写
         boolean b2 = str1.equalsIgnoreCase(str2);
         System.out.println("equalsIgnoreCase():" + b2);
         //       boolean startsWith(String):判断是否以给定字符串开头
         //需求:判断字符串str1,是否以字符串"a"开头
         boolean b3 = str1.startsWith("ab");//与abc进行比较
         System.out.println("startsWith:" + b3);
         //       boolean isEmpty():判断字符串是否为空
         String str3 = "";
         boolean b4 = str3.isEmpty();
         System.out.println("isEmpty():" + b4);
 
 
 
    }
 }

 

posted @ 2021-02-03 11:43  豆豆tj  阅读(65)  评论(0)    收藏  举报