java int相除向上取整_java實戰項目常用類,Date、Calendar、BigDecimal、Math、UUID

Java開發中經常用到的類和方法,以下主要就日期是時間處理、金融數字處理、數學計算、隨機數、MD5加密等。

java.util.Date類

java.util 包提供了 Date 類來封裝當前的日期和時間。 Date 類提供兩個構造函數來實例化 Date 對象。日期時間的本質是一個long,它表示從1970-1-1 0:0:0.000以來的毫秒數。

System.currentTimeMillis() 可以得到當前系統時間所表示的毫秒數.

java.util.Date類

getYear(): 自1900年以來的年數

getMonth(): 0-11

getDate(): 1-31

getHours(): 0-23

getMinutes(): 0-59

getSeconds(): 0-59

getDay(): 0(sunday)-6(saturday)

getTime(): 自1970-1-1以來的毫秒數

toLocaleString(): 轉換為本地格式的字符串

日期比較

Java使用以下三種方法來比較兩個日期:

1. 使用 getTime() 方法獲取兩個日期(自1970年1月1日經歷的毫秒數值),然后比較這兩個值。

2. 使用方法 before(),after() 和 equals()。例如,一個月的12號比18號早,則 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。

3. 使用 compareTo() 方法,它是由 Comparable 接口定義的,Date 類實現了這個接口。

使用 SimpleDateFormat 格式化日期

java.text.SimpleDateFormat類支持String和Date的轉換。SimpleDateFormat 是一個以語言環境敏感的方式來格式化和分析日期的類。SimpleDateFormat 允許你選擇任何用戶自定義日期時間格式來運行。例如:

8b18b309b18968b0635fe4a02acfac21.png

java.util.Calendar類

從JDK1.1版本開始,在處理日期和時間時,系統推薦使用Calendar類進行實現。在設計上,Calendar類的功能要比Date類強大很多。當然在實現方式上Calendar比Date類要復雜一點點。

創建一個代表系統當前日期的Calendar對象

Calendar c = Calendar.getInstance();//默認是當前日期

創建一個指定日期的Calendar對象

使用Calendar類代表特定的時間,需要首先創建一個Calendar的對象,然后再設定該對象中的年月日參數來完成。

//創建一個代表2009年6月12日的Calendar對象

Calendar c1 = Calendar.getInstance();

c1.set(2009, 6 - 1, 12);

Calendar類對象常用方法

getInstance(): 得到當前日期和時間

set(): 可以只設定某個字段,且其它所有的數值會被重新計算

add(): add(Calendar.DATE, 10); 表示為10天后的日期,其它所有的數值會被重新計算

get(): 得到某一部分的值,如:YEAR,MONTH,DAY_OF_YEAR ...

getTime(): 得到java.util.Date

setTime(Date): 用java.util.Date給Calendar賦值

Calendar類對象信息的獲得

Calendar cal = Calendar.getInstance();

// 獲得年份

int year = cal.get(Calendar.YEAR);

// 獲得月份

int month = cal.get(Calendar.MONTH) + 1;

// 獲得日期

int date = cal.get(Calendar.DATE);

// 獲得小時

int hour = cal.get(Calendar.HOUR_OF_DAY);

// 獲得分鐘

int minute = cal.get(Calendar.MINUTE);

// 獲得秒

int second = cal.get(Calendar.SECOND);

// 獲得星期幾(注意(這個與Date類是不同的):1代表星期日、2代表星期1、3代表星期二,以此類推)

int day = cal.get(Calendar.DAY_OF_WEEK);

金融計算

java.math.BigDecimal類是java小數操作的一個專有類,在電商、金融行業 存儲跟金額有關的字段。

思考:java里面明明已經有了,float,double這種精度的小數,為什么還需要BigDecimal呢?這難道不是多余嗎?

接下來看一個例子:

@Test

public void testDoubleSimple() {

double a = 3;

double b = 10;

double c = a / b;

System.out.println(c);

}

控制臺輸出結果:0.3

在小數操作中,我們通常希望能有多種自由的定義方式。例如在不同的場景可能需要返回: 0.3, 0.4, 0.333 不同精度,在不同的精度進位時希望能自主控制。這個時候,就輪到BigDecimal出場了。

四則運算方法:

add()

subtract()

multiply()

divide()

41f68dc685ffd647adfe1eac1e0f502d.png
bccbae2e34a8dd28ebc617d73c0629b9.png

注意: 盡量傳入String型參數來構造BigDecimal對象,這樣才能避免計算誤差。

MD5加密

MD5算法是不可逆的,與它同級別的算法還有SHA1, SHA256等。

jdk本身提供java.security.MessageDigest類,它實現了md5加密算法;除此之外,apache也提供更便捷的加密類。

5d5875f344b24462bc1428c326480d36.png

數學運算

java.lang.Math類

pow(): 求冪值

sqrt(): 求平方根

ceil(): 向上取整

floor(): 向下取整

random(): 生成隨機的0-1的小數

round(): 四舍五入

abs(): 求絕對值

取隨機值

java.util.Random類

這是一個偽隨機序列生成器,可以給它提供一個種子(seed),不同的seed產生不同的隨機數序列。

Random random = new Random(100);

部分方法:

nextInt()

nextDouble()

java.util.UUID類

這是一個標識符生成器, 它生成全局唯一的32位字符串.

部分方法:

randomUUID()

String uuid = UUID.randomUUID().toString().replaceAll("-", "");

//獲取32位隨機UUID值

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

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

相關文章

python四級中考有用的_一位中考生家長的后悔藥:考前30多天,千萬別做這7件傻事...

中考即將來臨,考后必定是幾家歡樂幾家愁,有慶幸的、有后悔的。中考前的幾個月到底應該怎么過?考前考中需要注意什么?家長做哪些事情是畫蛇添足的。今天給大家推薦一位“中考失敗”學子父親的自白,其中有對優秀兒子的心疼&#xf…

R語言中dim函數_R語言--向量化計算(apply族函數)

R語言最優秀的是它的向量化編程,這其中apply族函數扮演了非常重要的角色。apply族函數是由apply、sapply、lapply、mapply、tapply等函數組成的。熟練使用apply族函數,能夠簡化程序,提高代碼的運算速度。軟件&環境win10 64bitR 3.6.1appl…

php+mysql記事本_一個簡單記事本php操作mysql輔助類創建

//SqlHelper.class.phpconnmysql_connect($this->host,$this->user,$this->passwrd); if(!$this->conn){ die("連接失敗".mysql_error()); } mysql_select_db($this->db); mysql_query("set names utf8"); } //增刪改 function execute_dml…

python init方法做了什么_Python類方法、__new__方法和__init__方法分別是什么

Python類方法、__new__方法和__init__方法分別是什么發布時間:2020-09-03 15:24:06來源:億速云閱讀:104作者:小新這篇文章主要介紹Python類方法、__new__方法和__init__方法分別是什么,文中介紹的非常詳細,…

谷歌瀏覽器中文版_中國科學家設計超薄指尖傳感器,厚度不到A4紙五分之一 / 谷歌發布地圖時光機:百年前,你家街道啥樣?/ AI看圖說話首超人類...

關注我們了解計算機視覺最新動態 !動態先覽1中國科學家設計超薄指尖傳感器,厚度不到A4紙五分之一2谷歌發布地圖「時光機」:100年前,你家街道長啥樣?3仿真環境跟車2分鐘,就讓自動駕駛系統撞上馬路牙子&#…

300小時成為java程序員_直擊面試現場: Java程序員3輪6小時面試, 成功拿到阿里offer!...

原標題:直擊面試現場: Java程序員3輪6小時面試, 成功拿到阿里offer!今天給大家分享一位Java程序員小伙去阿里應聘的經歷!從Java開發要掌握的技術來講,前面已經說得差不多了。我主要想從面試者的角度談一談看法。如果是我面試,就給…

python 判斷每月最后一天_python獲取某年中每個月的第一天和最后一天的兩種方法...

搜索關鍵字:python get every first day of month參考解答:方法一:>>> import calendar>>> calendar.monthrange(2002,1)(1, 31)>>> calendar.monthrange(2008,2)(4, 29)>>> calendar.monthrange(2100,2…

anaconda python3.8目錄_MacBook Pro 安裝anaconda、配置環境

新入手了MacBook Pro,iOS系統還不算非常熟練...作為一個新手程序員,在python開發道路上的學習就從安裝環境開始吧:1、下載安裝包2、安裝過程一路同意or繼續...不過,mac上彈出不允許在當前路徑安裝,那么選擇自定義安裝路…

中國網建java發送短信_短信驗證登陸-中國網建提供的SMS短信平臺

一、JAVA發送手機短信常見的有三種方式(如下所列):使用webservice接口發送手機短信,這個可以使用sina提供的webservice進行發送,但是需要進行注冊使用短信mao的方式進行短信的發送,這種方式應該是比較的常用,前提是需要購買硬件設備。二、一下整理了SMS短信驗證過程…

stm32外部中斷_STM32學習筆記 | 電源管理及低功耗設計要點

一款好的電子產品,都需要認真考慮電源管理的問題,電池供電的產品更應該注意低功耗的實現。 STM32電源介紹嵌入式開發直播課 - STM32 USART串口的應用 - 創客學院直播室?www.makeru.com.cn每一塊STM32芯片中都有一個電源控制器(PWR&#xff0…

delphi 調用瀏覽器內核_HFL:基于混合模糊測試的Linux內核漏洞挖掘

RemarksConference: NDSS 2020Full Paper: HFL: Hybrid Fuzzing on the Linux KernelSummary針對的問題: Linux 操作系統內核安全漏洞的發現需要新技術。現有解決方案的不足:當前的模糊測試技術難以直接應用于內核安全漏洞發現。提出的創新方案概述&…

隔行變色java代碼_jquery入門—選擇器實現隔行變色實例代碼

1、JQuery選擇器繼承了CSS、path語音的部分語法,允許通過標簽名、屬性名、內容對DOM元素進行快速、準確的選擇。2、JQuery選擇器與JavaScript相比,具有代碼簡單、完善的檢測機制的優勢。3、使用JQuery選擇器實現隔行變色,示例代碼如下&#x…

python arduino c_從Python向Arduino LCD發送一個字符串

我想用python在arduinolcd16x2上顯示一個字符串,但是我遇到了串行通信的問題。在以下是Arduino中運行的代碼:Arduino代碼#include LiquidCrystal lcd(8, 9, 4, 5, 6, 7);String stringa;const unsigned long TimeOut 10; // timeout 10 msString string…

如何實現軟件的遠程更新_手機免root終于也能實現遠程控制了 這款國產軟件真是越來越好用...

說到遠程控制,大家或許可以說出好幾個應用軟件出來,比如Teamviewer、Anydesk、向日葵等等。其實,這些軟件我都用過,但Teamviewer現在對個人用戶經常宕機,Anydesk的功能又不夠豐富,只有一個向日葵遠程控制是…

角標越界 Java_【新人求助】利用占位符操作數據庫是總是提示數組角標越界是怎么回事 - Java論壇 - 51CTO技術論壇_中國領先的IT技術社區...

用占位符和數組來操作數據庫總是提示下角標越界,找了半天也沒弄明白哪里有問題,這個地方是跟著云課堂老師的講解做的,只不過操作的數據表不一樣,但是老師那個就沒問題,我就出了問題,如果有大神能幫忙看看&a…

簡述ospf的工作原理_現代數字存儲示波器的工作原理簡述

示波器是一種用途十分廣泛的電子測量儀器。俗話說,電是看不見摸不著的。但是示波器可以幫我們“看見”電信號,便于人們研究各種電現象的變化過程。所以示波器的核心功能,就和他的名字一樣,是顯示電信號波形的儀器,以供…

pyecharts 間距_高月雙色球20108期:紅球首尾間距參考29區段

雙色球第2020108期獎號為:03 09 11 24 25 28 16,紅球和值:100,重號2個:11 28,首尾間距:25。和值:上期和值為100,上升了22點,再次開出小和值,最近…

java類中聲明log對象_用于Android環境,java環境的log打印,可打印任何類型數據

LogXixi用于Android環境,java環境的log打印,可打印任何類型數據,根據android項目環境debug環境自動打開,release環境自動關閉android環境log打印,規范bean對象,json,xml對應log,crash捕捉&#…

xbox手柄接收器驅動_xbox手柄連接 win10電腦

xbox手柄 連接win10筆記本 分為三種連接方式:有線藍牙無線適配器首先說明一下連接方式的特點然后說明連接方式第一種:有線連接 手柄直接通過micro USB數據線和win10電腦連接。這一步最簡單,一般電腦會自動安裝驅動,連接之后可以使…

單片機復位后為什么要對sp重新賦值_51單片機系列之2點亮第一個led小燈

點亮led燈簡單的理解就是要求陽極高電平陰極低電平。接下來我們去看看單片機的原理圖,找到led 模塊。如圖可以看到led的陽極是連接的VCC(電源高電平)陰極連接的接口是單片機的I/O口P20到P27.要想led點亮只需控制單片機I/O口輸出低電平即可(單片機I/O口默認高電平)。…