java新手笔记18 类比较
1、Shap类
package com.yfs.javase;
public class Shape /*extends Object */{  //默认继承object  object方法全部继承
	//计算面积方法
	public double getArea() {
		System.out.println("计算面积");
		return 0;
	}
}
2.Circle类
package com.yfs.javase;
public class Circle extends Shape {
	
	private double r;
	
	public Circle(double r) {
		this.r = r;
		System.out.println("创建圆形面积");
	}
	
	public double getArea() {//覆盖父类的方法
		System.out.println("计算圆形面积...");
		return 3.14 * r * r;
	}
}
3.Rangton类
package com.yfs.javase;
public class Rangton  extends Shape {
	
	private double width;
	private double length;
	
	public Rangton(double width, double length) {
		this.width = width;
		this.length = length;
		System.out.println("创建矩形面积");
	}
	
	public double getArea() {
		System.out.println("计算矩形面积...");
		return width * length;
	}
}
4.Trantangel类
package com.yfs.javase;
public class Trantangle  extends Shape {
	
	private double height;
	private double width;
	
	public Trantangle(double height, double width) {
		this.height = height;
		this.width = width;
		System.out.println("创建三角形面积");
	}
	
	public double getArea() {
		System.out.println("计算三角形面积...");
		return 1.0 / 2 * width * height;
	}
}
5.Shap 测试
package com.yfs.javase;
import java.util.Date;
import java.util.Random;
import java.util.Scanner;
public class Demo1 {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Shape shape = new Shape();
		shape.getClass();
		
		Object obj = new Object();// 所有对象的基类
		// 方法
		boolean isTrue = obj.equals(shape);
		System.out.println(isTrue);
		obj.getClass();
		obj.hashCode();
		obj.toString();
		//obj.notify();
		
		obj = shape;
		
		obj = new Random();
		
		obj = new Scanner(System.in);
		
		Circle c = new Circle(2);
		
		obj = c;
		shape = c;
		
		obj = shape;
		//继承object
		c.getClass();
		
		method(shape);
		
		//method(new Date());
	}
	
	public static void method(Object obj) {
		//obj.getArea();
		Shape s = (Shape)obj;
		s.getArea();
	}
}
6.Person 类(自定义比较)
package com.yfs.javase;
public class Person {
	private String name;
	private char sex;
	private int age;
	public Person() {
	}
	public Person(String name, char sex, int age) {
		this.name = name;
		this.sex = sex;
		this.age = age;
	}
	@Override
	public String toString() {
		return "Person [name=" + name + ", sex=" + sex + ", age=" + age + "]";
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public char getSex() {
		return sex;
	}
	public void setSex(char sex) {
		this.sex = sex;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public void sayHello() {
		System.out.println(name + " Hello ....");
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + age;
		result = prime * result + ((name == null) ? 0 : name.hashCode());
		result = prime * result + sex;
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Person other = (Person) obj;
		if (age != other.age)
			return false;
		if (name == null) {
			if (other.name != null)
				return false;
		} else if (!name.equals(other.name))
			return false;
		if (sex != other.sex)
			return false;
		return true;
	}
	
//	@Override
//	public int hashCode() {
//		return 123;
//	}
//
//	@Override //自定义类 覆盖equals方法 自己定义对象比较规则
//	public boolean equals(Object obj) {
//		Person other = (Person)obj;
//		return this.name.equals(other.name) && sex == other.sex && age == other.age;
//	}
}
7.Person测试
package com.yfs.javase;
public class Demo2 {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Person p1 = new Person();
		System.out.println("p1.hashCode() : " + p1.hashCode());
		
		Person p2 = new Person();//hashCode对象的散列码
		System.out.println("p2.hashCode() : " + p2.hashCode());
		
		Person p3 = new Person();
		System.out.println("p3.hashCode() : " + p3.hashCode());
		
		p1.sayHello();
		p2.sayHello();
		p3.sayHello();
		
		System.out.println("p1 == p2 ? " + (p1 == p2));
	}
}
8.Person类
package com.yfs.javase;
public class Demo3 {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Person p1 = new Person("张三",'男',20);
		
		Person p2 = new Person("张三",'男',20);
		
		System.out.println("p1 == p2 : " + (p1 == p2));
		
		//比较对象中属性只是否相等
		System.out.println(p1.getAge() == p2.getAge());
		System.out.println("==  " + (p1.getName() == p2.getName()));
		System.out.println("equals : " + p1.getName().equals(p2.getName()));
		System.out.println("p1.equals(p2) : " + p1.equals(p2));
		System.out.println("======================");
		System.out.println("p1.hashcode :" + p1.hashCode());
//		String s1 = new String("abc");
//		String s2 = new String("abc");
//		System.out.println("s1 == s2 : " + (s1 == s2));
//		System.out.println("s1.equals(s2) : " + s1.equals(s2));//String 类覆盖equals方法
		
		Object obj = p1;
		System.out.println(obj.getClass().getName());
//		
	}
}
 
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号