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());
//
}
}
java新手笔记18 类比较的更多相关文章
- java新手笔记9 类的封装示例
1.bank类 package com.yfs.javase; //类封装 public class BankCard { //属性 int balance;//默认0 实例变量 分配给每个对象一个 ...
- java新手笔记5 类
1.进制转换 /* 企业发放的奖金根据利润提成. 利润(I)低于或等于10万元时,奖金可提10%: 利润高于10万元,低于20万元时, 低于10万元的部分按10%提成,高于10万元的部分,可提成7.5 ...
- java新手笔记11 类的静态属性、方法(单例)
1.Person类 package com.yfs.javase; public class Person { String name;//每个对象上分配 与对象绑定 int age; char se ...
- java新手笔记14 类继承示例
1.Person package com.yfs.javase; public class Person { private String name; private int age; private ...
- JAVA自学笔记18
JAVA自学笔记18 1.Map接口: 1)功能: 2) Map<String,String>m=new HashMap<String,String>(); //添加元素,元素 ...
- Java学习笔记——File类之文件管理和读写操作、下载图片
Java学习笔记——File类之文件管理和读写操作.下载图片 File类的总结: 1.文件和文件夹的创建 2.文件的读取 3.文件的写入 4.文件的复制(字符流.字节流.处理流) 5.以图片地址下载图 ...
- Java学习笔记之---类和对象
Java学习笔记之---类和对象 (一)类 类是一个模板,它描述一类对象的行为和状态 例如:动物类是一个类,动物们都有属性:颜色,动物们都有行为:吃饭 public class Dog { Stri ...
- java新手笔记8 包
1.main函数 public class MainParam { //考察main 方法的参数 args //运行时可以传入参数 参数类型 String public static void mai ...
- java新手笔记3 运算符&循环
1.包 2.运算符 public class Operator { public static void main(String[] args) { int a = 5; System.out.pri ...
随机推荐
- 后续遍历 java leecode
以前觉得后续遍历最难写,今天看了篇博客http://blog.csdn.net/sgbfblog/article/details/7773103,其实却是我们仔细比较后续遍历和先序遍历,其实后续遍历就 ...
- [读书笔记]了不起的node.js+实践(一)
环境的变化带来了技术大跃进,机遇和挑战同时到来.基于我js也没有学,只好赶鸭子上架一起学了.(>﹏<) 1.先读读书 一开始就不知死活地看<深入浅出node.js>,弄得团团转 ...
- PHP使用IP地址连接MySQL数据库
我们通常测试的时候都是用mysql_connect("localhost","usrname","password");的方式来连接MySQ ...
- hdu 3996 (最大权闭合图)
题意:有n个区域布局,每个区域有一些金矿,挖开金矿需要一定的费用,可以得到一定的利润,要想挖开一个金矿,必须挖开所有在这个金矿上边的金矿,求最大利益,给的数据价值太大,用64位. 分析:如果一个金矿可 ...
- JS多态
面向对象语言有三大特征,前面介绍了封装和继承,那么JS作为一门面向对象语言,有多态么,又怎么实现多态呢? 我们先看看多态的概念: 多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果. ...
- local storage 简单应用‘’记住密码’
前些时候一直用cookie等来进行登录页面记住面膜操作,但是由于其存储容量小等缘故,所以后来转向local storage,原理为:当用户勾选记住密码时,local storage 存储用户名密码同时 ...
- C#性能优化的一些技巧
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:C#性能优化的一些技巧.
- 动态加载JS文件,并根据JS文件的加载状态来执行自己的回调函数
动态加载JS文件,并根据JS文件的加载状态来执行自己的回调函数, 在很多场景下,我们需要在动态加载JS文件的时候,根据加载的状态来进行后续的操作,需要在JS加载成功后,执行另一方法,这个方法是依托在加 ...
- Python+Django+SAE系列教程17-----authauth (认证与授权)系统1
通过session,我们能够在多次浏览器请求中保持数据,接下来的部分就是用session来处理用户登录了. 当然,不能仅凭用户的一面之词,我们就相信,所以我们须要认证. 当然了,Django 也提供了 ...
- 导入导出封装的工具类 (一) 利用POI封装
对于导入导出各个项目中差点儿都会用到,记得在高校平台中封装过导入导出这部分今天看了看是利用JXL封装的而经理说让我用POI写写导出,这两个导入导出框架是眼下比較流程和经常使用的框架,有必要都了解一下. ...