SpringBoot日常:常用數據類型比較

文章目錄

  • 前言
  • 基本類型
  • 引用類型
    • date類型比較
    • LocalDate類型比較
    • LocalDateTime類型比較
    • Bigdecimal類型比較
    • 對象類型比較

前言

在Java中,我們一般分為基本類型的比較和引用類型的比較,下面按照這兩個大分類梳理一下日常用到的類型比較

基本類型

基本數據類型比較主要都是采用運算符進行比較(> < >= <= != ==),最終得到布爾返回值,這里就不詳細贅述

  • 整型: byte,short,int,long
  • 浮點型: float,double
  • 字符型: char
  • 布爾型: boolean

引用類型

引用類型主要就是對象的比較,這里先列舉幾個常用的工具類,最后再闡述一下自定義對象的比較

date類型比較

當比較兩個date數據類型的大小,我們可以采用compareTo()方式進行比較兩者大于、等于和小于

下面是一個比較日期是否為當天日期的示例代碼:

public static void main(String[] args) {Date date1 = new Date();Date date2 = new Date(System.currentTimeMillis() + 5000); // 在當前日期的基礎上加5秒int result = date1.compareTo(date2);if (result < 0) {System.out.println("date1 在 date2 之前");} else if (result == 0) {System.out.println("date1 和 date2 相同");} else {System.out.println("date1 在 date2 之后");}}

除了compareTo()方法之外,我們還可以使用其他方法進行日期比較,比如before()after()equal()
示例代碼:

		if (date1.before(date2)) {System.out.println("date1 在 date2 之前");}if (date1.after(date2)) {System.out.println("date1 在 date2 之后");}if (date1.equal(date2)) {System.out.println("date1 等于 date2 ");}

LocalDate類型比較

LocalDate類型比較和Date類型比較的方式一樣,可以用compareTo()方法,也可以使用before()after()equal()
示例代碼:

public static void main(String[] args) {LocalDate date1 = LocalDate.of(2024, 1, 1);LocalDate date2 = LocalDate.of(2024, 12, 31);int result = date1.compareTo(date2);if (result < 0) {System.out.println("date1 在 date2 之前");} else if (result == 0) {System.out.println("date1 和 date2 相同");} else {System.out.println("date1 在 date2 之后");}// 使用 isBefore 方法if (date1.isBefore(date2)) {System.out.println("date1 在 date2 之前");}// 使用 isAfter 方法if (date1.isAfter(date2)) {System.out.println("date1 在 date2 之后");}// 使用 equals 方法if (date1.equals(date2)) {System.out.println("date1 等于 date2 ");}}

LocalDateTime類型比較

LocalDateTime類型和LocalDate比較的方式一樣,可以直接參考上面LocalDate的比較方式,這里就不重復編寫示例

Bigdecimal類型比較

在Java中,BigDecimal類有compareTo方法,可以用來比較兩個BigDecimal對象的大小。
compareTo方法會返回一個整數值:

  • 如果BigDecimal相等,則返回0。
  • 如果BigDecimal調用者大于作為參數傳入的BigDecimal,則返回1。
  • 如果BigDecimal調用者小于作為參數傳入的BigDecimal,則返回-1。

示例代碼:

public static void main(String[] args) {BigDecimal a = new BigDecimal("10");BigDecimal b = new BigDecimal("5");int result = a.compareTo(b);if (result > 0) {System.out.println("a > b");} else if (result < 0) {System.out.println("a < b");} else if (result == 0) {System.out.println("a == b");}}

對象類型比較

比較兩個對象是否相同,通常是覆寫equals()方法,如果相同返回true,不相同返回false。對于覆寫的這個equals方法只能比較兩個對象相不相同,不能比較對象的大小.

當我們不覆寫equals()方法時,比較兩個對象是達不到我們想要的效果.
示例代碼:

//定義一個書本類class Book{public int page;public String name;public Book(int page,String name){this.page=page;this.name=name;}}public class TestBook {public static void main(String[] args) {Book page1=new Book(328,"西游記");Book page2=new Book(328,"西游記");System.out.println(page1.equals(page2));}}// 最終輸出的結果是false

覆寫equals()方法,再進行重新比較,就能輸出我們想要的結果
示例代碼:

//定義一個書本類class Book{public int page;public String name;public Book(int page,String name){this.page=page;this.name=name;}//復寫equals@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Book book = (Book) o;return page == book.page && Objects.equals(name, book.name);}@Overridepublic int hashCode() {return Objects.hash(page, name);}}public class TestBook {public static void main(String[] args) {Book book1=new Book(328,"西游記");Book book2=new Book(328,"西游記");System.out.println(book1.equals(book2));}}// 最終輸出的結果是true

除了類的相等比較,JDK還提供泛型的比較接口類comparable,在用戶自己定義的類,如果想要按照自己的比較方式比較時,就可以在定義類時實現comparable接口,并且在類中重寫compareTo方法。
示例代碼:

	class Book implements Comparable<Book> {public int page;public String name;public Book(int page,String name){this.page=page;this.name=name;}//復寫equals@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Book book= (Book) o;return page == book.page && Objects.equals(name, book.name);}@Overridepublic int hashCode() {return Objects.hash(page, name);}//按頁數排序@Overridepublic int compareTo(Book o) {return this.page-o.page;}}public class TestBook {public static void main(String[] args) {Book book1=new Book(328,"西游記");Book book2=new Book(503,"三國演義");System.out.println(book1.compareTo(book2));}}// 輸出結果-175

若我們想要自定義實現不同屬性的比較,comparable就無法實現,這是我們需要自己去實現Comparator接口 ,然后重寫Comparator接口中的compare方法
示例代碼:

	//定義一個書本類class Book{public int page;public String name;public Book(int page,String name){this.page=page;this.name=name;}}//定義書名比較器class NameCom implements Comparator<Book> {@Overridepublic int compare(Book o1, Book o2) {return o1.name.compareTo(o2.name);}}//定義頁碼比較器class PageCom implements Comparator<Book>{@Overridepublic int compare(Book o1, Book o2) {return o1.page-o2.page;}}public class TestBook {public static void main(String[] args) {Book book1=new Book(328,"西游記");Book book2=new Book(503,"三國演義");//定義比較器對象 ->姓名比較NameCom nameCom=new NameCom();//定義比較器對象 ->年齡比較PageCom pageCom=new PageCom();//使用比較器對象進行比較System.out.println(nameCom.compare(book1,book2));System.out.println(pageCom.compare(book1,book2));}//輸出結果   15222  -175}

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

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

相關文章

算法 —— LRU算法

算法 —— LRU算法 LRULRU算法的工作原理&#xff1a;實現方法&#xff1a;性能考慮&#xff1a; 模擬過程splice函數對于std::list和std::forward_list基本語法&#xff1a;功能描述&#xff1a; 示例&#xff1a;注意事項&#xff1a; 如果大家已經學習過了Cache的替換算法和…

ElementUIV12相關使用方法

今日內容 零、 復習昨日 零、 復習昨日 一、Element UI Element&#xff0c;一套為開發者、設計師和產品經理準備的基于 Vue 2.0 的桌面端組件庫 官網&#xff1a; https://element.eleme.cn/#/zh-CN Element Plus,基于 Vue 3&#xff0c;面向設計師和開發者的組件庫 官網: htt…

C語言--遞歸

曾經有一個段子&#xff1a;上大學時&#xff0c;我們的c語言老師說&#xff1a;學c時&#xff0c;如果有50%的同學死在了循環上面&#xff0c;那么就有90%的同學死在了遞歸上面。接下來&#xff0c;就來看看遞歸是怎么個事&#xff1f; 一.遞歸的介紹 遞歸是指一個函數直接或…

Spring中的@Transactional什么時候會失效?

在Spring中&#xff0c;Transactional注解用于聲明式事務管理&#xff0c;它可以使方法在事務上下文中執行。然而&#xff0c;Transactional注解有時會失效&#xff0c;這通常是由于以下幾種情況&#xff1a; 1. 非public方法&#xff1a; - Transactional注解默認只能應用…

跨平臺WPF音樂商店應用程序

目錄 一 簡介 二 設計思路 三 源碼 一 簡介 支持在線檢索音樂&#xff0c;支持實時瀏覽當前收藏的音樂及音樂數據的持久化。 二 設計思路 采用MVVM架構&#xff0c;前后端分離&#xff0c;子界面彈出始終位于主界面的中心。 三 源碼 視窗引導啟動源碼&#xff1a; namesp…

MySQL(8)事務

目錄 1.事務; 1.事務: 1.1 如果CURD不加限制會這么樣子? 可能造成數據同時被修改, 數據修改的結果是未知的.(可以想一下之前的搶票線程問題) 1.2 事務概念: 事務就是一組DML語句組成&#xff0c;這些語句在邏輯上存在相關性&#xff0c;這一組DML語句要么全部成功&#xff0…

基于python旅游景點滿意度分析設計與實現

1.1研究背景與意義 1.1.1研究背景 隨著旅游業的快速發展&#xff0c;滿意度分析成為評估旅游景點質量和提升游客體驗的重要手段。海口市作為中國的旅游城市之一&#xff0c;其旅游景點吸引了大量游客。然而&#xff0c;如何科學評估和提升海口市旅游景點的滿意度&#xff0c;…

中電金信-杭州工商銀行|面試真題|2024年

中電金信-杭州工商銀行 JAva集合用過哪些? ArrayList、LinkedList、HashSet、TreeSet、HashMap、LinkedHashMap、ConcurrentHashMap Arraylist和linkbist區別 ArrayList底層是數據&#xff0c;查詢快&#xff0c;增刪慢&#xff0c;線程不安全&#xff0c;效率高LikedList 底…

【概率論三】參數估計:點估計(矩估計、極大似然法)、區間估計

文章目錄 一. 點估計1. 矩估計法2. 極大似然法2.1. 似然函數2.2. 極大似然估計法 3. 評價估計量的標準3.1. 無偏性3.2. 有效性3.3. 一致性 二. 區間估計1. 區間估計的概念2. 正態總體參數的區間估計 參數估計講什么 由樣本來確定未知參數參數估計分為點估計與區間估計 一. 點估…

算法:二叉樹相關

目錄 題目一&#xff1a;單值二叉樹 題目二&#xff1a;二叉樹的最大深度 題目三&#xff1a;相同的樹 題目四&#xff1a;對稱二叉樹 題目五&#xff1a;另一棵樹的子樹 題目六&#xff1a;二叉樹的前序遍歷 題目七&#xff1a;二叉樹遍歷 題目八&#xff1a;根據二叉…

linux搭建mysql主從復制(一主一從)

目錄 0、環境部署 1、主服務器配置 1.1 修改mysql配置文件 1.2 重啟mysql 1.3 為從服務器授權 1.4 查看二進制日志坐標 2、從服務器配置 2.1 修改mysql配置文件 2.2 重啟mysql 2.3 配置主從同步 2.4 開啟主從復制 3、驗證主從復制 3.1 主服務器上創建test…

微服務拆分流程 (黑馬商城拆分商品服務)

1. 創建新module - maven模塊&#xff0c;并引入依賴&#xff08;可以復制 把不需要的依賴刪掉 &#xff09; 2. 新建包com.hmall.xx&#xff08;業務名&#xff09;&#xff0c;添加和修改啟動類&#xff0c;新建mapper包、domain包 - service包 - controller包 3. 拷貝并修…

4款良心軟件,免費又實用,內存滿了都舍不得卸載

以下幾款高質量軟件&#xff0c;若是不曾體驗&#xff0c;實在是遺憾可惜。 PDF Guru 這是一款開源免費的PDF編輯軟件&#xff0c;打開之后功能一目了然。 可以拆分、合并PDF&#xff0c;也可以給PDF添加水印和密碼&#xff0c;同時也可以去除別人PDF里的水印或密碼&#xff0…

HouseCrafter:平面草稿至3D室內場景的革新之旅

在室內設計、房地產展示和影視布景設計等領域,將平面草稿圖快速轉換為立體的3D場景一直是一個迫切的需求。HouseCrafter,一個創新的AI室內設計方案,正致力于解決這一挑戰。本文將探索HouseCrafter如何將這一過程自動化并提升至新的高度。 一、定位:AI室內設計的革新者 Ho…

Scala之OOP講解

Scala OOP 前序 Scala 為純粹OOP1、不支持基本類型&#xff1a;一切皆為對象 Byte,Int,...2、不支持靜態關鍵字&#xff1a;static 3、支持類型推斷【通過判斷泛型的父子關系來確定泛型類的父子關系>協變&#xff0c;逆變&#xff0c;不變】和類型預定&#xff0c; 動靜…

【iOS】類對象的結構分析

目錄 對象的分類object_getClass和class方法isa流程和繼承鏈分析isa流程實例驗證類的繼承鏈實例驗證 類的結構cache_t結構bits分析實例驗證屬性properties方法methods協議protocolsro類方法 類結構流程圖解 對象的分類 OC中的對象主要可以分為3種&#xff1a;實例對象&#xf…

【React】JSX基礎

一、簡介 JSX是JavaScript XML的縮寫&#xff0c;它是一種在JavaScript代碼中編寫類似HTML模板的結構的方法。JSX是React框架中構建用戶界面&#xff08;UI&#xff09;的核心方式之一。 1.什么是JSX JSX允許開發者使用類似HTML的聲明式模板來構建組件。它結合了HTML的直觀性…

TDesign組件庫日常應用的一些注意事項

【前言】Element&#xff08;餓了么開源組件庫&#xff09;在國內使用的普及率和覆蓋率高于TDesign-vue&#xff08;騰訊開源組件庫&#xff09;&#xff0c;這也導致日常開發遇到組件使用上的疑惑時&#xff0c;網上幾乎搜索不到其文章解決方案&#xff0c;只能深挖官方文檔或…

2024.7.17 ABAP面試題目總結

2024.7.17 用的SAP什么平臺&#xff0c;S4/HANA嗎&#xff0c;有用過ECC嗎 S4/HANA&#xff0c;沒用過ECC 會不會CDS VIEW 不會 會不會FIORI 不會 銀企直連里面的邏輯了解不 不了解&#xff0c;做過&#xff0c;但是只能算很簡單的修改 SAP做增強&#xff0c;如何創建…

網絡安全-網絡安全及其防護措施7

31.防病毒和惡意軟件保護 防病毒和惡意軟件防護的定義和作用 防病毒和惡意軟件防護是一種保護計算機和網絡免受病毒、木馬、間諜軟件等惡意軟件侵害的安全措施。通過防護措施&#xff0c;可以檢測、阻止和清除惡意軟件&#xff0c;確保系統和數據的安全。其主要作用包括&…