1.1 Scanner类
1.1.1 Scanner类作用
用Scanner类的方法可以完成接收键盘录入的数据,接收的数据类型为基本数据类型和字符串类型。
1.1.2 Scanner 类接受键盘录入的字符串
1.1.2.1案例代码
package com.itheima;
import java.util.Scanner;
/*
* Scanner:用于获取键盘录入数据。(基本数据类型,字符串数据)
* public String nextLine():获取键盘录入字符串数据
*/
public class ScannerDemo {
public static void main(String[] args) {
//创建键盘录入对象
Scanner sc = new Scanner(System.in);
//接收数据
System.out.println("请输入一个字符串数据:");
String line = sc.nextLine();
//输出结果
System.out.println("line:"+line);
}
}
1.2 Object类
1.2.1 Object类作用
Object:是类层次结构的根类,所有的类都直接的或者间接的继承自该类。
1.2.2 Object类的toString()方法
1.2.2.1 案例代码
package com.itheima_01;
public class Student {
private String name;
private int age;
public Student() {}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
}
package com.itheima_01;
/*
* Object:是类层次结构的根类,所有的类都直接的或者间接的继承自该类。
* 构造方法:Object()
*
* 直接输出对象名,输出底层调用的是该对象的toString()
*
* 查看API,我们发现建议所有子类都重写toString()。
* 到底该如何重写该方法呢?自动生成的就可以。
*/
public class ObjectDemo {
public static void main(String[] args) {
Student s = new Student();
s.setName("林青霞");
s.setAge(30);
System.out.println(s);
//System.out.println(s.toString());
/*
public void println(Object x) { //Object x = s;
String s = String.valueOf(x);
synchronized (this) {
print(s);
newLine();
}
}
public static String valueOf(Object obj) { //Object obj = x;
return (obj == null) ? "null" : obj.toString();
}
*/
}
}
1.2.3 Object类的equals()方法
1.2.3.1 案例代码
package com.itheima_02;
public class Student {
private String name;
private int age;
public Student() {}
public Student(String name,int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + "]";
}
@Override
public boolean equals(Object obj) {
//s1.equals(s2)
//this -- s1
//obj -- s2
if (this == obj)
return true;
if (obj == null)
return false;
//比较的是对象是否是同一个类的对象
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj; //other -- s2
if (age != other.age) //this.age -- s1.age
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
//字符串的equals()比较的是字符串的内容是否相同
return false;
return true;
}
}
package com.itheima_02;
/*
* ==:
* 可以比较基本数据类型,比较基本数据类型的时候比较的是基本数据类型的值是否相同
* 也可以比较引用数据类型,比较引用数据类型的时候比较的是引用数据类型的地址值是否相同
*
* 而我们现在想比较的是对象的内容是否相同?该怎么办呢?
* 通过查看API,我们找到了比较对象是否相等的方法:
* public boolean equals(Object obj)
* Object类中的equals()方法默认比较的是对象的地址是否相同。
* 如果我们想比较对象的内容是否相同,就必须自己重写该方法。
* 如何重写该方法呢?
* 自动生成即可。
*/
public class ObjectDemo {
public static void main(String[] args) {
Student s1 = new Student("林青霞", 30);
Student s2 = new Student("林青霞", 30);
//System.out.println(s1 == s2);//false
System.out.println(s1.equals(s2));//false
/*
public boolean equals(Object obj) {
//this -- s1
//obj -- s2
return (this == obj);
}
*/
}
}
网友评论