| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> Java 常用类 -> 正文阅读 |
|
[Java知识库]Java 常用类 |
Java 常用类记录一些Java 学习使用, 经常使用类进行总结… String字符串相关的类String
|
字母 | 描述 | 示例 |
---|---|---|
G | 纪元标记 | AD |
y | 四位年份 | 2001 |
M | 月份 | July or 07 |
d | 一个月的日期 | 10 |
h | A.M./P.M. (1~12)格式小时 | 12 |
H | 一天中的小时 (0~23) | 22 |
m | 分钟数 | 30 |
s | 秒数 | 55 |
S | 毫秒数 | 234 |
E | 星期几 | Tuesday |
D | 一年中的日子 | 360 |
F | 一个月中第几周的周几 | 2 (second Wed. in July) |
w | 一年中第几周 | 40 |
W | 一个月中第几周 | 1 |
a | A.M./P.M. 标记 | PM |
k | 一天中的小时(1~24) | 24 |
K | A.M./P.M. (0~11)格式小时 | 10 |
z | 时区 | Eastern Standard Time |
’ | 文字定界符 | Delimiter |
" | 单引号 | ` |
日历类
Calendar是一个抽象类,主用用于完成日期字段之间相互操作的功能
年
、MONTH月
、DAY_OF_WEEK这一周第几天
、HOUR_OF_DAY这一月第几天
MINUTE分钟
、SECOND秒
通过get(常量);
获取指定的~注意:
CalendarDemo.Java
import java.util.Calendar;
import java.util.Date;
/** 日历类对象Calendar 使用; */
public class CalendarDemo {
public static void main(String[] args) {
//1.实例化
//方式一:创建其子类(GregorianCalendar)的对象
// Calendar gregoriancalendar = new GregorianCalendar();
//方式二:调用其静态方法getInstance()
Calendar calendar = Calendar.getInstance(); //获取当前日期的: Calendar日历对象!
// System.out.println(calendar.getClass());
//2.常用方法
//get():
// 根据常量参数,获取对应的日期值~
int days = calendar.get(Calendar.DAY_OF_MONTH); //获取当月的第几天~
System.out.println("当月的第"+days+"天"); //打印!
System.out.println("当年的第"+calendar.get(Calendar.DAY_OF_YEAR)+"天"); //获取当年的第几天~
//set()
//calendar可变性
// 给当前日历对象 进行年月赋值 返回值void: 直接返回给当前对象赋值~
calendar.set(Calendar.DAY_OF_MONTH,22); //给当前日历对象设置为: 当月第22天
days = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println("修改日历为当月,第"+days+"天"); //打印: 22
//add(): 给当前日历对象进行 + - 操作
calendar.add(Calendar.DAY_OF_MONTH,-3);
days = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(days); //打印: 22-3
//getTime():日历类---> Date
// 根据当前日历对象的时间,返回一个Date类型数据~
Date date = calendar.getTime();
System.out.println(date);
//setTime():Date ---> 日历类
// 将一个Date类型数据,转换为: 日历对象!
Date date1 = new Date();
calendar.setTime(date1);
days = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(days);
}
}
Java8 之前的日期,Date JDK1.0 时引入
基本可以满足基本的需求。
但,我们希望时间可以与昼夜 季节 四季有关,JDK1.1 引入了
Calendar类
而Calendar类并不比Date类好多少,它们面临的问题
可变性:
calendar.set(Calendar.DAY_OF_MONTH,22); //给当前日历对象设置为: 当月第22天
Calendar类的:
Set(); 方法,赋值会直接改变当前的类对象,这在Java 被成为 "可变性"
偏移性:
JDK8 之前时间的类Date 类其实是存在一个构造器: "可以直接年月日返回 Date对象..."
但
Date中的年份是从1900开始的,而月份都从0开始, "直接赋值年月日,实际上返回的日期并不准确,Date是存在偏移量的!"
//JDK8之前日期问题...Date存在便宜量~
@Test
public void offsetDate(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//Date(year, month, date);
Date d1 = new Date(2000, 9, 9); //创建一个2020 9月9日的日期对象;
System.out.println("Date类存在偏移量:");
System.out.println("未设置偏移量输出:"+sdf.format(d1));
//设置便宜量:
//Date 正因为存在偏移量,而被淘汰! 而年便宜了 1900年 月默认从0开始~所以 2020 09 09 应该这个样写!
Date d2 = new Date(2000-1900, 9-1, 9);
System.out.println("设置偏移量输出: "+sdf.format(d2)); //正常输出 20200909
}
//控制台输出:
Date类存在偏移量:
未设置偏移量输出:3900-10-09
设置偏移量输出: 2000-09-09
格式化:
格式化只对Date有用,Calendar则不行。 此外,它们也不是线程安全的;不能处理闰秒等。
对日期和时间的操作一直是Java程序员最痛苦的地方之一
因此:
Java8 之前出现了,Joda-Time.Jar包
周大-泰~ 来更方便的操作,日期API
而后,JDK8之后,为了方便用户操作,直接集成了该Jar包的功能!
不在需要用户,每次都要引入 Joda-Time.Jar
依赖~
当然如果,你现在公司是Java7 你还想用这些时间ApI 还需要引入 Joda-Time.Jar包
本地日期(LocalDate)
本地时间 (LocalTime)
本地日期时间(LocalDateTime)
时区(ZonedDateTime)
…
为了方便操作,古老的
Data类 Java8之后,也新增了 toInstant() 方法;
用于将,Date 转换成新的表示形式,这些新增的本地化时间日期 API 大大简化了日期时间和本地化的管理。
它们的实例 是不可变的对象
ISO
ISO 国际标准化组织(International Organization for Standardization
方法 | 描述 |
---|---|
now() now(ZoneId zone) | 静态方法,根据当前时间创建对象/指定时区的对象 |
of() | 静态方法,根据指定日期/时间创建对象 |
getDayOfMonth() getDayOfYear() | 获得月份天数(1-31) /获得年份天数(1-366) |
getMonthValue() getYear() | 获得月份(1-12) /获得年份 |
getHour() getMinute() getSecond() | 获得当前对象对应的小时、分钟、秒 |
withDayOfMonth() withDayOfYear() withMonth() withYear() | 将月份天数、年份天数、月份、年份修改为指定的值并返回新的对象 |
plusDays() plusWeeks() plusMonths() plusYears() plusHours() | 向当前对象添加几天、几周、几个月、几年、几小时 |
minusMonths() minusWeeks() minusDays() minusYears() minusHours() | 从当前对象减去几月、几周、几天、几年、几小时 |
LocalDateTimeDemo.Java
import org.junit.Test;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.Date;
/**
* JDK8之后的日期API
* LocalDate 年月日~
* LocalTime 时分秒~
* LocalDateTime 年月日时分秒~
* 三者,方法类似,都是JDK8 之后新增的日期类,分别用于表示不同的时间 日期 时间日期 描述的Java对象!
*/
public class LocalDateTimeDemo {
/** LocalDate LocalTime LocalDateTime 使用/常用方法();
* LocalDateTime相较于LocalDate、LocalTime,使用频率要高
* 类似于Calendar
* */
public static void main(String[] args) {
//now():获取当前的日期、时间、日期+时间
LocalDate localDate = LocalDate.now();
LocalTime localTime = LocalTime.now();
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println("localDate:\t"+localDate);
System.out.println("localTime:\t"+localTime);
System.out.println("localDateTime:\t"+localDateTime);
/** 三个类重写了toString(); 直接输入的就是中国的日期格式~ */
//of():设置指定的年、月、日、时、分、秒。没有偏移量
LocalDateTime localDateTime1 = LocalDateTime.of(2020, 10, 6, 13, 23, 43);
System.out.println(localDateTime1);
//getXxx():获取相关的属性
System.out.println(localDateTime.getDayOfMonth()); //获取当前日是这个月的第几天
System.out.println(localDateTime.getDayOfWeek()); //获取当前时间是一周中的哪一天
System.out.println(localDateTime.getMonth()); //获取当前月份
System.out.println(localDateTime.getMonthValue()); //获取月份信息
System.out.println(localDateTime.getMinute()); //获取分钟
/** 三个类均可调用类似的方法~ 注意要存在符合的条件~ */
/** 体现不可变性 */
//withXxx():设置相关的属性
// LocalDate 对象通过withxx(); 给日期对象设置日期属性,但是,并不会改变当前对象,而是会返回一个对象,是更高后的日期~ 本类并不会收受到影响~
LocalDate localDate1 = localDate.withDayOfMonth(22);
System.out.println("更新前对象:"+localDate);
System.out.println("更新后对象:"+localDate1);
//plusxxx(); 向当前对象添加几天、几周、几个月、几年、几小时
LocalDateTime localDateTime3 = localDateTime.plusMonths(3);
System.out.println(localDateTime);
System.out.println(localDateTime3);
//minusxxx(); 向当前对象添加几天、几周、几个月、几年、几小时
LocalDateTime localDateTime4 = localDateTime.minusDays(6);
System.out.println(localDateTime);
System.out.println(localDateTime4);
}
//JDK8之前日期问题...Date存在便宜量~
@Test
public void offsetDate(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//Date(year, month, date);
Date d1 = new Date(2000, 9, 9); //创建一个2020 9月9日的日期对象;
System.out.println("Date类存在偏移量:");
System.out.println("未设置偏移量输出:"+sdf.format(d1));
//设置便宜量:
//Date 正因为存在偏移量,而被淘汰! 而年便宜了 1900年 月默认从0开始~所以 2020 09 09 应该这个样写!
Date d2 = new Date(2000-1900, 9-1, 9);
System.out.println("设置偏移量输出: "+sdf.format(d2)); //正常输出 20200909
}
}
方法 | 描述 |
---|---|
now() | 静态方法,返回默认UTC时区的Instant类的对象 UTC即本初子午线的时间... 与北京时间, 存在偏差~ |
ofEpochMilli(long epochMilli) | 静态方法,返回在1970-01-01 00:00:00基础上加上指定毫秒 数之后的Instant类的对象 |
atOffset(ZoneOffset offset) | 结合即时的偏移来创建一个 可以通过它来, 向东偏移8 表示东八区北京时间! |
OffsetDateTime toEpochMilli() | 返回1970-01-01 00:00:00到当前时间的毫秒数,即为时间戳 |
InsantDemo.Java
import java.time.Instant;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
/***
* Instant 类的Demo学习
*
*/
public class InsantDemo {
public static void main(String[] args) {
//now():获取本初子午线对应的标准时间
Instant instant = Instant.now();
System.out.println(instant);//2019-02-18T07:29:41.719Z //
//北京世界东八区! 1949年起的逾半世纪,在中国大陆、台湾、香港、澳门所使用的标准时间皆为东八区(UTC+8)时间
//中国,占五个时区.分别是东5区 东6区 东7区 东8区 东9区 据北京较远的地区也有不使用北京时间的 比如乌鲁木齐时间就是东九区时间,比北京时间早一个小时 世界分24个时区
//添加时间的偏移量
OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8));
System.out.println(offsetDateTime);//2019-02-18T15:32:50.611+08:00
//toEpochMilli(): 获取自1970年1月1日0时0分0秒(UTC)开始的毫秒数 ---> Date类的getTime()
long milli = instant.toEpochMilli();
System.out.println(milli);
//ofEpochMilli():通过给定的毫秒数,获取Instant实例 -->Date(long millis)
Instant instant1 = Instant.ofEpochMilli(1550475314878L);
System.out.println(instant1);
}
}
该类提供了三种格式化方法:
年月日时分秒
yyyy-MM-DD HH:mm:ss
方法 | 描述 |
---|---|
ofPattern(String pattern) | 静态方法 , 返 回一个指定字 符串格式 |
DateTimeFormatter format(TemporalAccessor t) | 格式化一个日期、时间,返回字符串 |
parse(CharSequence text) | 将指定格式的字符序列解析为一个日期、时间 |
将日期(对象) 转换为字符串~
将字符串日期转换为~ 日期对象
转换的字符 和 日期对象的格式要一致, 不然转换失败!DateTimeFormatterDemo.Java
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.time.temporal.TemporalAccessor;
/** DateTimeFormatter */
public class DateTimeFormatterDemo {
public static void main(String[] args) {
// 方式一:预定义的标准格式。如:ISO_LOCAL_DATE_TIME; ISO_LOCAL_DATE; ISO_LOCAL_TIME 分布对应三个对象!
DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
//格式化:日期-->字符串
LocalDateTime localDateTime = LocalDateTime.now();
String str1 = formatter.format(localDateTime);
System.out.println(localDateTime);
System.out.println(str1);//2019-02-18T15:42:18.797
//解析:字符串 -->日期
TemporalAccessor parse = formatter.parse("2019-02-18T15:42:18.797");
System.out.println(parse);
// 方式二:
// 本地化相关的格式。如:ofLocalizedDateTime()
// FormatStyle.LONG / FormatStyle.MEDIUM / FormatStyle.SHORT :适用于LocalDateTime
DateTimeFormatter formatter1 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG);
//格式化
String str2 = formatter1.format(localDateTime);
System.out.println(str2);//2019年2月18日 下午03时47分16秒
// 本地化相关的格式。如:ofLocalizedDate()
// FormatStyle.FULL / FormatStyle.LONG / FormatStyle.MEDIUM / FormatStyle.SHORT : 适用于LocalDate
DateTimeFormatter formatter2 = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM);
//格式化
String str3 = formatter2.format(LocalDate.now());
System.out.println(str3);//2019-2-18
// 重点: 方式三:自定义的格式。如:ofPattern(“yyyy-MM-dd hh:mm:ss”)
DateTimeFormatter formatter3 = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
//格式化
String str4 = formatter3.format(LocalDateTime.now());
System.out.println(str4);//2019-02-18 03:52:09
//解析
TemporalAccessor accessor = formatter3.parse("2019-02-18 03:52:09");
System.out.println(accessor);
}
}
Java8 新增了很多的日期API 其实常用的也就以上…
JDK是向下兼容的,所以不必担心
Java系统类:
java.lang 包下
的一个 系统类,可以通过该类获取的当前计算机的:属性~
static
的,所以也可以很方便的进行调用成员变量
成员方法
方法 | 描述 |
---|---|
native long currentTimeMillis() | 返回当前的计算机时间,时间格式,当前计算机时间和 格林威治时间所差的毫秒数 |
void exit(int status) | 作用是退出程序。其中status 的值为0代表正常退出,非零代表异常退出 在图形界面编程中实现程序的退出功能等 |
void gc() | 作用是请求系统进行垃圾回收。至于系统是否立刻回收,则取决于系统中垃圾回收算法的实现以及系统执行时的情况。 |
String getProperty(String key) | 该方法的作用是获得系统中属性名为key的属性对应的值: 如下👇 |
java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的控制台输入
需要搭配 System.in
的输入流~ Scanner s = new Scanner(System.in);
方法 | 描述 |
---|---|
hasNext() 与 hasNextLine() | 判断是否还有输入的数据 建议Next之前判断一下... 这些方法执行时都会造成堵塞,等待用户在命令行输入数据回车确认 |
next() 与 nextLine() | 方法获取输入的字符串 nextLine() 会输出一行信息…👇 |
如果要输入 int 或 float 类型的数据,在 Scanner 类中也有支持
next.Byte() nextDouble() nextFloat,nextInt() nextLin() nextLong() nextShot()
但是在输入之前最好先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取,不然输入int 的输入了一个 String会报错~
/** 成员属性: in out err */
//in: 配合Scanner 扫描器,可以实现控制台的输入流...
//out: 这个,最常用: System.out.print(); 返回一个输出流,输出信息
//err: 和out 类似,但是它输出的信息一般表示错误,比较显眼的 红色信息!
//创建一个扫描仪
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一段话s1:");
String s1 = scanner.next();
System.out.println("请输入一段话s2:");
String s2 = scanner.next();
System.err.println("s1:"+s1);
System.err.println("s2:"+s2);
//注意: 不要同时两个
// scanner.nextxxx() 写在一起,这些方法执行时都会造成堵塞,等待用户在命令行输入数据回车确认.
// 写在一起,输入了一个回车,则所有的 nextxxx() 都结束了!
scanner.close(); /** 要注意关闭流o 不然占用程序资源... */
SysDemo.Java
import java.util.Scanner;
/**
* System 系统类的学习...
*/
public class SysDemo {
//main 主方法...
public static void main(String[] args) {
/** 成员属性: in out err */
//in: 配合Scanner 扫描器,可以实现控制台的输入流...
//out: 这个,最常用: System.out.print(); 返回一个输出流,输出信息
//err: 和out 类似,但是它输出的信息一般表示错误,比较显眼的 红色信息!
//创建一个扫描仪
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一段话s1:");
String s1 = scanner.next();
System.out.println("请输入一段话s2:");
String s2 = scanner.next();
System.err.println("s1:"+s1);
System.err.println("s2:"+s2);
//注意: 不要同时两个
// scanner.nextxxx() 写在一起,这些方法执行时都会造成堵塞,等待用户在命令行输入数据回车确认.
// 写在一起,输入了一个回车,则所有的 nextxxx() 都结束了!
scanner.close(); /** 要注意关闭流o 不然占用程序资源... */
/** currentTimeMillis */
long timeStamp = System.currentTimeMillis(); //返回当前时间,时间戳;
//时间戳: 值当前日期距离,格林威治时间(GMT)1970-01-01 的毫秒数~
//使用:
// 通常可以,用于生产一个时间戳, 时间唯一的一个ID, 用作在数据库/文件名...表示数据唯一~
System.out.println(timeStamp);
/** getProperty(): 获取系统的参数信息!*/
String javaVersion = System.getProperty("java.version");
System.out.println("java的环境版本:" + javaVersion);
String javaHome = System.getProperty("java.home");
System.out.println("java的安装路径:" + javaHome);
String osName = System.getProperty("os.name");
System.out.println("操作系统的名称:" + osName);
String osVersion = System.getProperty("os.version");
System.out.println("操作系统的版本:" + osVersion);
String userName = System.getProperty("user.name");
System.out.println("计算机用户账户名:" + userName);
String userHome = System.getProperty("user.home");
System.out.println("用户的主目录:" + userHome);
String userDir = System.getProperty("user.dir");
System.out.println("用户当前工作目录:" + userDir);
}
}
Java数学类:
Java 的 Math 包含了用于执行基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数
Math 的方法都被定义为 static 形式,通过 Math 类可以在主函数中直接调用 不用new 可以直接调用!
方法 | 描述 |
---|---|
算术计算 | |
Math.sqrt() | 计算平方根 |
Math.cbrt() | 计算立方根 |
Math.pow(a, b) | 计算a的b次方 |
Math.max( , ) | 计算最大值 |
Math.min( , ) | 计算最小值 |
Math.abs() | 取绝对值 就是正数!1 -1 绝对值都是 1 |
进位 | |
Math.ceil() | 逢余进一 有小数就+1 |
Math.floor() | 逢余舍一 舍去小数! |
Math.rint() | 四舍五入,返回double值。注意.5的时候会取偶数 |
Math.round() | 四舍五入,float时返回int值,double时返回long值 |
随机数 | |
Math.random() | 取得一个 [0~1] 范围内的随机数 通常可以用该 方法+算法 获取:1-10 1-100.. 随机数! |
更多待扩展… |
MathDemo.Java
public static void main(String[] args) {
/** 算术计算 */
System.out.println("--------算术计算-----------");
System.out.println(Math.sqrt(16)); // 4.0 4^2 4的二次方=16
System.out.println(Math.cbrt(8)); // 2.0 2^3 2的三次方= 8
System.out.println(Math.pow(3, 2)); // 9.0 3^2 3的二次方=16 几次方就是, x乘x次! 3x3=9
System.out.println(Math.max(2.3, 4.5)); // 4.5 判断最大值!
System.out.println(Math.min(2.3, 4.5)); // 2.3 判断最小值!
/**
* abs求绝对值: 就是把一个数变成 + 正数!
*/
System.out.println(Math.abs(-10.4)); // 10.4
System.out.println(Math.abs(10.1)); // 10.1
/** 进位 */
System.out.println("--------进位-----------");
/**
* ceil天花板的意思,就是逢余进一
* 正数+1
* 小数+1, 小数+1~
*/
System.out.println("--------ceil-----------");
System.out.println(Math.ceil(-10.1)); // -10.0
System.out.println(Math.ceil(10.7)); // 11.0
System.out.println(Math.ceil(-0.7)); // -0.0
System.out.println(Math.ceil(0.0)); // 0.0
System.out.println(Math.ceil(-0.0)); // -0.0
System.out.println(Math.ceil(-1.7)); // -1.0
/**
* floor地板的意思,就是逢余舍一
*/
System.out.println("--------floor-----------");
System.out.println(Math.floor(-10.1)); // -11.0
System.out.println(Math.floor(10.7)); // 10.0
System.out.println(Math.floor(-0.7)); // -1.0
System.out.println(Math.floor(0.0)); // 0.0
System.out.println(Math.floor(-0.0)); // -0.0
/**
* rint 四舍五入,返回double值 注意.5的时候会取偶数 异常的尴尬=。=
*/
System.out.println("--------rint-----------");
System.out.println(Math.rint(10.1)); // 10.0
System.out.println(Math.rint(10.7)); // 11.0
System.out.println(Math.rint(11.5)); // 12.0
System.out.println(Math.rint(10.5)); // 10.0
System.out.println(Math.rint(10.51)); // 11.0
System.out.println(Math.rint(-10.5)); // -10.0
/**
* round 四舍五入,float时返回int值,double时返回long值
*/
System.out.println("--------round-----------");
System.out.println(Math.round(10)); // 10
System.out.println(Math.round(10.1)); // 10
System.out.println(Math.round(10.7)); // 11
System.out.println(Math.round(10.5)); // 11
System.out.println(Math.round(10.51)); // 11
System.out.println(Math.round(-10.5)); // -10
}
@Test
/** 获取100以内的随机数! */
public void randomHundred(){
// Math.random() 获取0-1 的随机数! 包含0!
System.out.println("随机0-1");
System.out.println(Math.random());
System.out.println("随机0-100");
System.out.println((int)(Math.random()*100)+1);
/**
* (int)(Math.random()*100)+1
* 因为: Math.random() 获取0-1 的随机数! 包含0!
* *100 获取随机数进两位小数,强制转换(int) 会截取小数点..
* 因为包含0 所以+1 就不会出现呢0 的情况了!!!
*/
}
Java.math包
Interger类作为int的包装类,能存储的最大整型值为2^{31-1}
Long类也是有限的, 最大为2^{63-1}
构造器
BigInteger abs() 返回大整数的绝对值
BigInteger add(BigInteger val) 返回两个大整数的和
BigInteger and(BigInteger val) 返回两个大整数的按位与的结果
BigInteger andNot(BigInteger val) 返回两个大整数与非的结果
BigInteger divide(BigInteger val) 返回两个大整数的商
double doubleValue() 返回大整数的double类型的值
float floatValue() 返回大整数的float类型的值
BigInteger gcd(BigInteger val) 返回大整数的最大公约数
int intValue() 返回大整数的整型值
long longValue() 返回大整数的long型值
BigInteger max(BigInteger val) 返回两个大整数的最大者
BigInteger min(BigInteger val) 返回两个大整数的最小者
BigInteger mod(BigInteger val) 用当前大整数对val求模
BigInteger multiply(BigInteger val) 返回两个大整数的积
BigInteger negate() 返回当前大整数的相反数
BigInteger not() 返回当前大整数的非
BigInteger or(BigInteger val) 返回两个大整数的按位或
BigInteger pow(int exponent) 返回当前大整数的exponent次方
BigInteger remainder(BigInteger val)返回当前大整数除以val的余数
BigInteger leftShift(int n) 将当前大整数左移n位后返回
BigInteger rightShift(int n) 将当前大整数右移n位后返回
BigInteger subtract(BigInteger val) 返回两个大整数相减的结果
byte[] toByteArray(BigInteger val) 将大整数转换成二进制反码保存在byte数组中
String toString() 将当前大整数转换成十进制的字符串形式
BigInteger xor(BigInteger val) 返回两个大整数的异或
Decimal:[中:小数]
一般的Float类和Double类可以用来做科学计算或工程计算
但在商业计算中, 要求数字精度比较高,故用到 Java.math.BigDecimal
类
BigDecimal类支持不可变的、任意精度的有符号十进制定点数
构造器
add(BigDecimal) BigDecimal对象中的值相加,然后返回这个对象。
subtract(BigDecimal) BigDecimal对象中的值相减,然后返回这个对象。
multiply(BigDecimal) BigDecimal对象中的值相乘,然后返回这个对象。
divide(BigDecimal) BigDecimal对象中的值相除,然后返回这个对象。
toString() 将BigDecimal对象的数值转换成字符串。
doubleValue() 将BigDecimal对象中的值以双精度数返回。
floatValue() 将BigDecimal对象中的值以单精度数返回。
longValue() 将BigDecimal对象中的值以长整数返回。
intValue() 将BigDecimal对象中的值以整数返回
查看下面的代码:
@Test
public void bigDecimal(){
System.out.println(0.1+0.2);
System.out.println(0.3-0.1);
System.out.println(0.2*0.1);
System.out.println(0.3/0.1);
}
因为不论是float 还是double都是浮点数,而计算机是二进制的,浮点数会失去一定的精确度
但:
😁
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/23 19:05:32- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |