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());
//		

	}

}
时间: 2024-11-19 22:34:18

java新手笔记18 类比较的相关文章

java新手笔记14 类继承示例

1.Person package com.yfs.javase; public class Person { private String name; private int age; private char sex; private void privateMehtod() { System.out.println("call privateMehtod()..."); } public Person() { //System.out.println("创建Perosn对

Java学习笔记_25_Collections类

25.Collections类: Collections类是一个工具类,用来对集合进行操作,它主要是提供一些排序算法,包括随机排序.反相排序等. Collections类提供了一些静态方法,实现了基于List容器的一些常用算法. Collections的一些方法列表: · void sort(List): 对List内的元素进行排序. · void shuffle(List): 对List内的元素随机排序. · void reverse(List): 对List内的元素进行逆序排列. · voi

Java学习笔记——File类之文件管理和读写操作、下载图片

Java学习笔记——File类之文件管理和读写操作.下载图片 File类的总结: 1.文件和文件夹的创建 2.文件的读取 3.文件的写入 4.文件的复制(字符流.字节流.处理流) 5.以图片地址下载图片 文件和文件夹 相关函数 (boolean) mkdir() 创建此抽象路径名指定的目录  (boolean) mkdirs() 创建此抽象路径名指定的目录,包括所有必需但不存在的父目录. (boolean) delete() 删除此抽象路径名表示的文件或目录 (boolean) createNe

Java学习笔记_19_String类

19.String类: 1>String类的构造方法: · 利用字符串构造一个字符串对象: String str = "HelloWorld": · 无参构造一个字符串对象: String str = new String(); · 传递参数生成一个字符串对象: String str = new String("HelloWorld"); · 由字符数组生成一个字符串对象: String str = new String(char s[ ]); · 由字符数组

Java学习笔记—复用类

复用代码是Java众多引人注目的功能之一. 一般而言,实现代码重用java提供了两种方式:组合以及继承. 组合:新的类由现有类的对象所组成.(复用现有代码的功能,而非它的形式) 继承:按照现有类的类型组建新类.(在不改变现有类的基础上,复用现有类的形式并在其中添加新代码). 组合 class Engine{ public void start(){} public void stop(){} } class Door{ public void open(){} public void close

Java学习笔记1——类和对象

面向对象 对象:万物皆对象 面向对象 类:模子,属性+方法,类是对象的类型,是具有相同属性和方法的一组对象的集合 对象属性:对象拥有的各种特征,"对象有什么" 对象方法:对象执行的操作,"对象能干什么" 类与对象的关系/区别:类是抽象的,仅仅是模版:对象是看得到,摸得着的具体实体.例如:'手机'类,对象为iPhone6,Lumia920 Java中的类 定义类:Java程序都以类class为组织单元 创建一个对象 //1.定义一个类 public class Tel

java新手笔记3

1.包 2.运算符 public class Operator { public static void main(String[] args) { int a = 5; System.out.println("a = " + a); //a = -a; //+ - System.out.println("a = " + a); //+ 字符串链接 System.out.println("影分身" + "软件开发"); Sys

java新手笔记8

1.main函数 public class MainParam { //考察main 方法的参数 args //运行时可以传入参数 参数类型 String public static void main(String[] args) { for(int i = 0; i < args.length; i++ ) { System.out.println(i + " -> " + args[i]); } } } 2.包 //给自定义类添加包名 生成对应的目录 包名是类名的部分

java学习笔记——String类

一.概述 ·字符串是一个特殊的对象 ·字符串一旦初始化就不可以被改变 ·String str = "abc"; ·String str1 = new String("abc"); 有什么区别? package com.java.study.StringDemo; public class StringDemo { public static void main(String[] args) { String s1 = "abc"; //s1是一个