網站首頁 編程語言 正文
常用類
1.BigDecimal類
-
引言: 很多實際應用中需要精確運算,而double是近似值存儲,不在符合要求,需要借助BIgDecimal。
-
BigDecimal
- 位置:java.math包中
- 作用:精確計算浮點數
- 基本類型存儲在棧中,引用類型存儲在堆中
- 創建方式:
BigDecimal bd=new BigDecimal("1.0");
-
方法:
BigDecimal add(BigDecimal db);//加
BigDecimal subtract(BigDecimal db);//減
BigDecimal multiply(BigDecimal db);//乘
BigDecimal divide(BigDecimal db);//除
-
除法:
divide(BigDecimal bd,int scal,RoundingMode mode)
- 參數scal:指定精確到小數點后幾位。
- 參數mode:指定小數部分的取舍模式,通常采用四舍五入的模式,取值為BigDecimal.ROUND_HALF_UP。
1.1 BigDecimal代碼演示
package classes.demo08;
import java.math.BigDecimal;
import java.math.RoundingMode;
public class TestBigDecimal {
public static void main(String[] args) {
double d1=1.0;//double 是近似值存儲
double d2=0.9;
System.out.println(d1-d2);//輸出0.09999999999999998
//面式題
double result=(1.4-0.5)/0.9;
System.out.println(result);//輸出0.9999999999999999
//BigDecimal,大的浮點數精確計算
BigDecimal bd1 = new BigDecimal("1.0");
BigDecimal bd2 = new BigDecimal("0.9");
//加法
BigDecimal r1 = bd1.add(bd2);
System.out.println(r1);
//減法
BigDecimal r2 = bd1.subtract(bd2);
System.out.println(r2);
//乘法
BigDecimal r3 = bd1.multiply(bd2);
System.out.println(r3);
//先減再除法
BigDecimal r5 = new BigDecimal("1.4").
subtract(new BigDecimal("0.5")).
divide(new BigDecimal("0.9"));//除法
System.out.println(r5);
//除法時除不盡會報錯,要用重載的選擇保留幾位小數的divide()方法
//四舍五入的取法BigDecimal.ROUND_HALF_UP
//除不盡的情況,保留小數位 //RoundingMode.HALF_UP:4舍5入法
//BigDecimal r6 = new BigDecimal("10").divide(new BigDecimal("3"),5,BigDecimal.ROUND_HALF_UP);
BigDecimal result1 = new BigDecimal("20").divide(new BigDecimal("3"),3,BigDecimal.ROUND_HALF_UP); // 10 除以 3,保留 5 位小數,采用四舍五入
System.out.println(result1);
}
}
運行結果
0.09999999999999998
0.9999999999999999
1.9
0.1
0.90
1
6.667
2.Date類
-
Date表示特定的瞬間,精確到毫秒。Date類中的大部分方法都已經被Calendar類中的方法所取代。
-
時間單位
- 1秒=1000毫秒
- 1毫秒=1000微秒
- 1微秒=1000納秒
2.1 Date類使用代碼演示
package classes.demo08;
import java.util.Date;
/*
在程序開發中,經常需要處理日期和時間的相關數據,此時我們可以使用 java.util 包中的
Date 類。這個類最主要的作用就是獲取當前時間,我們來看下 Date 類的使用:
使用 Date 類的默認無參構造方法創建出的對象就代表當前時間,我們可以直接輸出 Date 對象顯示當前的時間
其中, Wed 代表 Wednesday (星期三), Jun 代表 June (六月), 11 代表 11 號, CST 代表 China Standard Time (中國標準時間,也就是北京時間,東八區)。
從上面的輸出結果中,我們發現,默認的時間格式不是很友好,與我們日常看到的日期格式不太一樣,如果想要按指定的格式進行顯示,如 2014-06-11 09:22:30 ,那該怎么做呢?
此時就到了 java.text 包中的 SimpleDateFormat 類大顯身手的時候了!!可以使用 SimpleDateFormat
來對日期時間進行格式化,如可以將日期轉換為指定格式的文本,也可將文本轉換為日期。
具體參考博客:https://blog.csdn.net/silent0001/article/details/100149282?spm=1001.2014.3001.5502
* */
public class TestDate {
public static void main(String[] args) {
//1 創建Date對象
Date date = new Date();
//今天
//d1.toString() 以字符串的形式打印
//使用 Date 類的默認無參構造方法創建出的對象就代表當前時間,我們可以直接輸出 Date 對象顯示當前的時間
System.out.println(date.toString());//Fri Jul 01 14:18:52 CST 2022
System.out.println(date.toLocaleString());//2022-7-1 14:18:52
//昨天
Date d1=new Date(date.getTime()-60*60*24*1000);
System.out.println(d1.toLocaleString());
//2 方法 after before (返回的是Boolean類型)
boolean result = date.after(d1);//今天是否在昨天之后 true
System.out.println(result);
boolean beforeresult = date.before(d1);
System.out.println(beforeresult);//false
//比較compareTo() 比較(比的是毫秒值)(返回的為int)
System.out.println(date.compareTo(d1));
//equals() 判斷是否相等,返回Boolean類型
System.out.println(date.equals(d1));
}
}
運行結果
Fri Jul 01 19:01:04 CST 2022
2022-7-1 19:01:04
2022-6-30 19:01:04
true
false
1
false
3.Calendar類
-
引言: Date 類最主要的作用就是獲得當前時間,同時這個類里面也具有設置時間以及一些其他的功能,但是由于本身設計的問題,這些方法卻遭到眾多批評,不建議使用,更推薦使用 Calendar 類進行時間和日期的處理
- java.util.Calendar 類是一個抽象類,可以通過調用 getInstance() 靜態方法獲取一個 Calendar 對象,此對象已由當前日期時間初始化,即默認代表當前時間
-
Calendar
- Calendar提供了獲取或設置各種日歷字段的方法。
-
構造方法:
protected Calendar()
由于修飾符是protected,所以無法直接創建該對象
-
方法
? ? ?? 方法名?? ? ?? | ?? ? ? 說明? ??? |
---|---|
static Calendar() | 設置默認時區和區域獲取日歷 |
void set(int year, int mouth, int date, int hourofday, int minute, int second) | 設置日歷的年月日時分秒 |
int get(int field) | 返回給定日歷字段的值,字段比如年月日等 |
void setTime(Date date) | 用給定的Date設置此日歷的時間 |
Date getTime() | 返回一個Date表示日歷的時間 |
void add(int field, int amount) | 按照日立的規則,給指定字段添加或減少時間量 |
long getTimeInMillies() | 毫秒為單位返回該日歷的時間值 |
3.1 Calendar 類方法使用代碼演示
package classes.demo08;
import java.util.Calendar;
public class TestCalender {
public static void main(String[] args) {
//1 創建Calendar對象 Protected Calendar() 由于修飾符是protected,所以無法之間創建對象。 但是可以通過getInstance()方法
Calendar instance = Calendar.getInstance();
System.out.println(instance.toString());//和date還不一樣,并不是我們需要的信息
System.out.println(instance.getTimeInMillis());
//打印時間,要使用getTime()方法
System.out.println(instance.getTime().toLocaleString());
//2 獲取時間信息
//獲取年
int year = instance.get(instance.YEAR);
//獲取月
int month = instance.get(instance.MONTH);
//獲取日
int day = instance.get(instance.DAY_OF_MONTH);
//獲取小時
int hour = instance.get(instance.HOUR_OF_DAY);
//獲取分鐘
int minute = instance.get(instance.MINUTE);
//獲取秒
int second = instance.get(instance.SECOND);
//輸出(注意月要加一) 因為外國是0-11個月
System.out.println(year+"年"+(month+1)+"月"+day+"日"+" "+hour+"時"+minute+"分"+second+"秒");
//3 修改時間
//先創建一個時間
Calendar calendar = Calendar.getInstance();
//調用set方法
calendar.set(calendar.HOUR_OF_DAY,1);//小時變為1
System.out.println(calendar.getTime().toLocaleString());
//用add方法修改時間
calendar.add(calendar.MONTH,-1);//相當于把小時減一
System.out.println(calendar.getTime().toLocaleString());
// 補充方法 判斷月有多少天
int actualMaximum = calendar.getActualMaximum(calendar.DAY_OF_MONTH);//最多天數
int actualMinimum = calendar.getActualMinimum(calendar.DAY_OF_MONTH);
System.out.println(actualMaximum);
System.out.println(actualMinimum);
}
}
運行結果
java.util.GregorianCalendar[time=1656674064029,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=31,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=6,WEEK_OF_YEAR=27,WEEK_OF_MONTH=1,DAY_OF_MONTH=1,DAY_OF_YEAR=182,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=1,AM_PM=1,HOUR=7,HOUR_OF_DAY=19,MINUTE=14,SECOND=24,MILLISECOND=29,ZONE_OFFSET=28800000,DST_OFFSET=0]
1656674064029
2022-7-1 19:14:24
2022年7月1日 19時14分24秒
2022-7-1 1:14:24
2022-6-1 1:14:24
30
1
4.SimpleDateFormat類
- SimpleDateFormat是一個以與語言環境有關的方式來格式化和解析日期的具體類
- 進行格式化(日期→文本)、解析(文本→日期)
- 常用的時間模式字母
? ? ? 字母?? ? ?? | ? 日期或時間? ? | ?? ? ? 示例? ??? |
---|---|---|
y | 年 | 2019 |
M | 年中月份 | 08 |
d | 月中天數 | 10 |
H | 一天中小時(0-23) | 22 |
m | 分鐘 | 16 |
s | 秒 | 59 |
S | 毫秒 | 356 |
4.1 SimpleDateFormat類常用方法代碼演示:
package classes.demo08;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestSimpleDateFormat {
public static void main(String[] args) throws ParseException {
//1 創建SimpleDATeFormat對象 y年 M月
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd");
//SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
//2 創建Date 獲取時間
Date date = new Date();
//調用format()方法 格式化date(把日期轉成字符串)
String format = simpleDateFormat.format(date);
System.out.println(format);
//調用parse()方法 解析(把字符串轉為日期)(字符-->日期)
// 使用時需要和前后日期格式一致
Date parse = simpleDateFormat.parse("2022/07/01");//需拋出異常
System.out.println(parse);
}
}
運行結果
2022/07/01
Fri Jul 01 00:00:00 CST 2022
5.System類
- 主要用于獲取系統的屬性數據和其他操作,構造方法私有的
- 方法
? ? ?? 方法名?? ? ?? | ?? ? ? 說明? ??? |
---|---|
static void arraycopy(…) | 復制數組 |
static long currentTimeMillis(); | 獲取當前系統時間,返回毫秒值 |
static void gc(); | 建議jvm趕快啟動垃圾回收期器回收垃圾 |
static void exit(int status); | 退出jvm 如果參數是0表示正常退出jvm;非0表示異常退出 |
5.1 System類方法代碼演示:
package classes.demo08;
public class Student {
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
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;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
protected void finalize() throws Throwable {
System.out.println(name+"被回收了");
}
}
package classes.demo08;
public class TestSystem {
public static void main(String[] args) {
//1 arraycopy(),數據復制
int[] arry={15,35,52,45,78,90,56};
int[] ints=new int[7];
//System.arraycopy(src,srcPos,dest,destPos,length);
//src:源數組
//srcPos:從哪個位置開始復制
//dest:目標數組
//destPos:目標數組的位置
//length:復制的長度
System.arraycopy(arry,3,ints,0,3);
for (int anInt : ints) {
System.out.println(anInt);
}
//2 currentTimeMillis(),獲取時間
System.out.println(System.currentTimeMillis());
long star = System.currentTimeMillis();
int result=0;
for (int i = -99999; i < 99999; i++) {
for (int i1 = -999999; i1 < 99999; i1++) {
result=i+i1;
}
}
//計時 currentTimeMillis()方法主要用于計代碼時間
long end = System.currentTimeMillis();
System.out.println("用時:"+(end-star));
//3 gc(),垃圾回收
//匿名使用后,會自動回收
Student st1 = new Student("小米", 19);
Student st2 = new Student("小明", 20);
new Student("xiaoxiao",18);
new Student("xiaobai",21);
System.gc();// 垃圾回收,在另一個類中重寫 finalize() 方法,顯示是否回收,當沒有對象引用可能就會被回收
//4 exit(0),退出
System.exit(0);//退出JVM
System.out.println("執行結束");//不會被執行
}
}
運行結果
45
78
90
0
0
0
0
1656676265134
用時:6
xiaobai被回收了
xiaoxiao被回收了
3.更多參考
千峰教育-常用類
原文鏈接:https://blog.csdn.net/qq_60501861/article/details/125564882
- 上一篇:IO流之字節流與常見編碼
- 下一篇:常用類之包裝類和String類
相關推薦
- 2022-09-19 Python使用read_csv讀數據遇到分隔符問題的2種解決方式_python
- 2021-12-18 C/C++?Qt?數據庫與TreeView組件綁定詳解_C 語言
- 2023-04-06 C++中的多態問題—理解虛函數表及多態實現原理_C 語言
- 2022-04-22 uniapp小程序報錯 TypeError: Cannot read property ‘call‘
- 2022-09-02 C++中protobuf?的交叉編譯使用詳解_C 語言
- 2022-04-21 R語言繪制數據可視化Dumbbell?plot啞鈴圖_R語言
- 2022-01-11 slice、substring、substr比較
- 2022-08-01 詳解Selenium中元素定位方式_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支