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、回车等
接收整数
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):
判断是否以给定字符串开头。
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);
}
}