Java學習筆記之equals和Objects.equals

  equals 相信大家就知道,就是比較,我們平時也會在自己定義的類中加入自己重寫的equals用來比較兩個類是否相同,例如這樣

public class Person {private String name; //姓名private int age; //年齡private String nickName; //昵稱public Person(String name,int age,String nickName){this.name = name;this.age = age;this.nickName = nickName;}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;}public String getNickName() {return nickName;}public void setNickName(String nickName) {this.nickName = nickName;}//比較方法public boolean equals(Person p){return this.name.equals(p.name)&& this.age==p.age && this.nickName.equals(p.nickName);}
}
然后比較的時候就這樣用
public class Main {public static void main(String[] args) {Person p1 = new Person("張三",14,"三狗子");Person p2 = new Person("張三",14,"三狗子");if(p1.equals(p2)){System.out.println("一樣");}else{System.out.println("不一樣");}}
}

但是我們大多數會用來比較兩個字符串之間是否一樣,例如上面Person類中的equals方法中的this.name.equals(name)這里的equals是調用java的api,但這里有個問題例如如果name是null怎么辦?

這樣的話我們就不得不修改下代碼改成這樣

//比較方法public boolean equals(Person p){return Objects.equals(this.name,p.name) && this.age == p.age && Objects.equals(this.nickName, p.nickName);}

這樣就可以避免null的尷尬了。

解釋:

為了防備name或者nickName可能為null的情況,需要使用Objects.equals方法,如果兩個參數都為null,Objects.equals(a,b)調用將返回true;如果其中一個參數為null則返回false;否則,如果兩個參數都不為null的話,則調用a.equals(b)就可以了。

?

學習記錄,如果錯誤請指正謝謝!



?

轉載于:https://www.cnblogs.com/woaixingxing/p/7482215.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/257513.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257513.shtml
英文地址,請注明出處:http://en.pswp.cn/news/257513.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java限制發送短信次數_使用java發送短信驗證碼碼,出現流量限制怎么辦?急急急...

注冊登錄后需要企業認證,直接在某度上找一張清晰有紅章的企業營業執照,注意要細心點,要看看有沒有水印。我第一次就沒注意上傳了一張有水印的營業執照,從此這個賬號再也沒有審核通過了,后面只能換個賬號。都是后臺人工審核的,比較嚴格。如果時…

GDKOI2015 Day2

P1 題目描述: 給出一個二分圖,選擇互不相交的邊,使得邊覆蓋的點權和最大。 solution: 簡單DP,用樹狀數組維護最大值。 時間復雜度:$O(n \log n) $ P2 題目描述: 給出N個或黑或白的元素&#xff…

寫在SDOI2016Round1前的To Do List

理性的整理了一下自己的不足。 計算幾何啥都不會,字符串類DP毫無練習,數據結構寫的不熟,數論推不出式子,網絡流建模常建殘; 需要達成的任務: 一、網絡流: 熟練網絡流的板子(之前一…

XMind入門教程

最近在總結一些框架知識的時候,總找不到一款好的軟件來畫流程圖,后來在網上查找這方面的東西,找到了 XMind,發現用來畫思維導圖還挺好的,看起來思路清晰,美觀。那么便將使用的一些經驗分享給大家。 1、什么是思維導圖&…

標簽與表格

bgcolor 頁面背景色 text 文字顏色 topmargain 上頁邊距 leftmargain 左頁邊距 rightmargain 右頁邊距 bottomargain 下頁邊距 background 背景壁紙 &nbsp 空…

java word轉圖片tiff_不怕復制內容 Word轉存TIFF文件這么玩

辛辛苦苦把Word文件敲好,為了不讓別人復制走內容,只能看文稿,有些人就選擇轉存成PDF文件——但是PDF文件依然可以被編輯,還有什么方法能防范呢?其實在Word 2003之前,用戶可以通過Microsoft Office Document…

item-設置可見性

如果我們想要設置menu中item的可見行&#xff0c;有兩種方式&#xff1a; 1.直接在menu的xml代碼中設置 <menu> <item android:id"id/action_hotknot"android:showAsAction"always"android:icon"drawable/action_mode_hotknot"android:…

IDC:聚焦6+6,抓住數字化轉型商機

今天&#xff0c;IDC中國2015年中國ICT市場趨勢論壇巡回系列的第二站在北京舉行。論壇的主題為“加速創新實現數字化轉型”。 這是最壞的時代&#xff1a;經濟增長乏力、實體經濟不振、傳統行業在被顛覆與重構、IT市場總體增長進入個位數區間、IT第二平臺的領導廠商仍在困境中。…

編寫EL函數

1.建立java類的靜態函數 package chapter4;public class ELFun {public static String processStr(String s){s s.replaceAll("<", "&lt");s s.replaceAll(">", "&gt");s s.replaceAll(" ", " "…

2016.3.22(關系型數據庫簡介,管理數據庫和表)

數據庫的集中式控制有什么優點&#xff1f; 1&#xff1a;降低存儲數據的冗余度 2&#xff1a;更高的數據一致性 3&#xff1a;存儲數據的可以共享 4&#xff1a;可以建立數據庫所遵循的標準 5&#xff1a;便于維護數據完整性 6&#xff1a;能夠實現數據的安全性 存儲數據有哪些…

java前端ajax提交數據_Java 前端使用Ajax通過FormData傳遞文件和表單數據到后臺

提交1&#xff0c;當僅僅想上傳文件到后臺function tijiao(){var file $("#image")[0].files[0];//打印file 為對象console.log(file);var formObj new FormData();formObj.set(image, file);$.ajax({url:test/test3,data:formObj,type: POST,dataType:json,proces…

IBM收購以色列應用發現公司EZSource

6月1日晚消息&#xff0c;IBM宣布對以色列公司EZSource進行收購&#xff0c;交易的具體條款沒有被披露。 EZSource成立于2003年&#xff0c;以自有視覺面板產品聞名&#xff0c;該公司的產品能夠幫助開發人員將重要的大型機應用程序現代化。該公司在以色列、英國、美國、瑞士、…

oracle存儲過程+游標處理select數據

create or replace PROCEDURE UPDATE_RECORDCODE iscursor location_data is select * from location where remark in(952701,9527008,952705);--申明游標serviceCode NUMBER:1; BEGINfor l in location_data loop --遍歷游標BEGIN--業務處理UPDATE SERIAL_CODE SET CUR_NUMB…

POJ 3617 Best Cow Line(最佳奶牛隊伍)

POJ 3617 Best Cow Line Time Limit: 1000MS  Memory Limit: 65536K 【Description】 【題目描述】 FJ is about to take his N (1 ≤ N ≤ 2,000) cows to the annual "Farmer of the Year" competition. In this contest every farmer arranges his cows in a …

js blob php_js發送blob數據, php端接收blob數據

服務器環境CentOs7.4 php7print_r($_FILES)blob結構如下Array([blob] > Array([name] > blob[type] > image/jpeg[tmp_name] > /tmp/phpu37qnN[error] > 0[size] > 1175745))很納悶這個結構為什么沒有圖片數據流&#xff0c;只有圖片的信息悶了幾個小時胡…

eclipse環境配置、快捷鍵及基本操作

Eclipse與MyEclipse的區別 Elipse是一種可擴展的開放源代碼的集成開發環境&#xff0c;具有免費、純java語言編寫、免安裝、擴展性強等特點。 MyElipse在Elipse基礎上追加的功能性插件&#xff0c;對插件收費&#xff0c;在WEB開發中提供強大的系統架構平臺。 工作空間的基本配…

php 枚舉類型比較,枚舉的比較-python編程入門系列圖文教程-PHP中文網教程

因為枚舉成員不是有序的&#xff0c;所以它們只支持通過標識(identity) 和相等性 (equality) 進行比較。下面來看看 和 is 的使用&#xff1a;#!/usr/bin/env python3# -*- coding: UTF-8 -*-from enum import Enumclass User(Enum):Twowater 98Liangdianshui 30Tom 12Twow…

我與C++的不解情緣

我是一個老實人&#xff0c;我當時報考C真的全心是為了自己自考的免考&#xff0c;絕不是為了什么二級證&#xff0c;可是&#xff0c;進行到一半的時候&#xff0c;突然獲悉&#xff0c;C自我們這次開始&#xff0c;不作為免考科目了&#xff0c;當時我的心里啊&#xff0c;那…

hadoop之 Hadoop2.2.0中HDFS的高可用性實現原理

在Hadoop2.0.0之前&#xff0c;NameNode(NN)在HDFS集群中存在單點故障&#xff08;single point of failure&#xff09;&#xff0c;每一個集群中存在一個NameNode&#xff0c;如果NN所在的機器出現了故障&#xff0c;那么將導致整個集群無法利用&#xff0c;直到NN重啟或者在…

3D坦克大戰游戲源碼

3D坦克大戰游戲源碼&#xff0c;該游戲是基于xcode 4.3&#xff0c;ios sdk 5.1開發。在xcode4.3.3上完美無報錯。兼容ios4.3-ios6.0 &#xff0c;一款ios平臺上難得的3D坦克大戰游戲源碼&#xff0c;有20張不同的作戰地圖。通過左下角方向鍵和重力感應來控制坦克運行&#xff…