==与equals(重载运算符和重载函数)

1)对于==
如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;
如果作用于引用类型的变量,则比较的是所指向的对象的地址
2)对于equals方法,
注意:equals方法不能作用于基本数据类型的变量,equals继承Object类,比较的是是否是同一个对象
如果没有对equals方法进行重写,则比较的是引用类型的变量所指向的对象的地址;
诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。
在java中==和equals()的区别

我们可以用 “==” 来比较两个字符串吗?

这取决于下面这个问题的答案:

我们使用的语言是否支持运算符重载

如果答案是 yes (例如 C++)。我们可以使用 “” 来比较两个字符串。
如果答案是 no (例如 Java),我们可能无法使用 “
” 来比较两个字符串。当我们使用 “==” 时,它实际上会比较这两个对象是否是同一个对象。
下面是以C++为例,介绍函数和运算符重载。
C++ 重载运算符和重载函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基本的时间类的实现,包括构造函数、析构函数、设置时间函数、返回时间函数、显示时间函数以及重载运算符函数。其中,重载了==、!=、>、<、>=、<=这些关系运算符和+=这个复合运算符。 ``` #include <iostream> using namespace std; class CTime { public: CTime(int h=0, int m=0, int s=0); // 构造函数 ~CTime(); // 析构函数 void SetTime(int h, int m, int s); // 设置时间 string GetTime(); // 返回时间 void ShowTime(); // 显示时间 CTime& operator+=(const CTime& t); // 复合运算符+= bool operator==(const CTime& t); // 关系运算符== bool operator!=(const CTime& t); // 关系运算符!= bool operator>(const CTime& t); // 关系运算符> bool operator<(const CTime& t); // 关系运算符< bool operator>=(const CTime& t); // 关系运算符>= bool operator<=(const CTime& t); // 关系运算符<= private: int hour; int minute; int second; }; CTime::CTime(int h, int m, int s) { hour = h; minute = m; second = s; } CTime::~CTime() {} void CTime::SetTime(int h, int m, int s) { hour = h; minute = m; second = s; } string CTime::GetTime() { return to_string(hour) + ":" + to_string(minute) + ":" + to_string(second); } void CTime::ShowTime() { cout << GetTime() << endl; } CTime& CTime::operator+=(const CTime& t) { second += t.second; minute += t.minute; hour += t.hour; if (second >= 60) { second -= 60; minute++; } if (minute >= 60) { minute -= 60; hour++; } return *this; } bool CTime::operator==(const CTime& t) { return hour == t.hour && minute == t.minute && second == t.second; } bool CTime::operator!=(const CTime& t) { return !(*this == t); } bool CTime::operator>(const CTime& t) { if (hour > t.hour) return true; if (hour < t.hour) return false; if (minute > t.minute) return true; if (minute < t.minute) return false; if (second > t.second) return true; return false; } bool CTime::operator<(const CTime& t) { return !(*this > t) && !(*this == t); } bool CTime::operator>=(const CTime& t) { return (*this > t) || (*this == t); } bool CTime::operator<=(const CTime& t) { return (*this < t) || (*this == t); } int main() { CTime t1(10, 23, 45); CTime t2(8, 15, 30); CTime t3; t3 = t1; t3 += t2; t3.ShowTime(); // 预期输出:18:39:15 if (t1 == t2) { cout << "t1 equals t2" << endl; } else { cout << "t1 does not equal t2" << endl; } if (t1 > t2) { cout << "t1 is greater than t2" << endl; } else { cout << "t1 is not greater than t2" << endl; } return 0; } ``` 输出结果: ``` 18:39:15 t1 is greater than t2 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值