java8_api_math
java.math包
BigDecimal
BigInteger
MathContext
RoundingMode这是枚举
BigDecimal
不可变的,任意精度的有符号十进制数,适合商业计算中,数字很长的数字运算
方法add,subtract,multiply,divide
package java_20180210_api_datetime; import java.math.BigDecimal;
import java.math.MathContext; public class BigDemo { public static void main(String[] args) { // long l1=1213133242353245345345;
BigDecimal d1=new BigDecimal("20");
BigDecimal d3=new BigDecimal("5");
System.out.println(d1.add(d3));
System.out.println(d1.subtract(d3));
System.out.println(d1.multiply(d3));
System.out.println(d1.divide(d3));
System.out.println(d1.doubleValue());
System.out.println(d1.toString());
System.out.println(d1.toPlainString()); BigDecimal d2=new BigDecimal("134.56", new MathContext(2));
System.out.println(d2.toPlainString()); } }
数学运算类
Math
Random
Math是java.lang中的类
Random是java.util中的类
package java_20180211_api_math;
import java.util.Random;
public class MathDemo {
public static void main(String[] args) {
System.out.println(Math.abs(-12.34));
System.out.println(Math.ceil(5.324));
System.out.println(Math.floor(-234.876));
for (int i = 0; i < 10; i++) {
System.out.println(Math.random());
}
System.out.println("==============");
int i = 0;
do {
i++;
int max=100;
int min=60;
Random random = new Random();
int s = random.nextInt(max)%(max-min+1)+min;
System.out.print(s);
System.out.print(" ");
} while (i<10);
System.out.println("==============");
//下面这个5是种子值
Random r1=new Random(5);
for (int j = 0; j < 10; j++) {
//加10就代表10-20之间的一个数字
System.out.println(r1.nextInt(11)+10);
}
}
}
比较
Comparable
Comparator
Comparable是一个函数式接口(只有一个抽象方法的接口)。java.lang.Comparable<T>
为现有类提供一种比较的能力
Comparator是一个函数式接口。java.util.Comparator<T>
将两个类进行比较,在集合排序中会大量使用
二者比较
Comparable接口为子类提供比较的能力
Comparator接口封装了比较的逻辑,可用于策略设计模式,其子类常作为排序方法中的参数
package java_20180211_api_math;
public class User implements Comparable<User> {
int age;
@Override
public int compareTo(User o) {
if (age > o.age) {
return 1;
} else if (age < o.age) {
return -1;
}
return 0;
}
}
==================
package java_20180211_api_math;
public class CompDemo {
public static void main(String[] args) {
User u1=new User();
u1.age=40;
User u2=new User();
u2.age=20;
if (u1.compareTo(u2)>0) {
System.out.println("u1>u2");
} else if(u1.compareTo(u2)<0){
System.out.println("u1<u2");
}else {
System.out.println("u1==u2");
}
}
}
=====================
package java_20180211_api_math;
import java.util.Comparator;
public class CompDemo2 implements Comparator<User> {
@Override
public int compare(User o1, User o2) {
if (o1.age > o2.age) {
return 1;
} else if (o1.age < o2.age) {
return -1;
}
return 0;
}
}
迭代
Iterable
Iterator
java.lang.Iterable<T>
如果想要一个类放在foreach中遍历,就必须实现Iterable<T>这个接口,一般都是数组
package java_20180211_api_math;
import java.util.Iterator;
class Student {
String name;
public Student(String name) {
this.name = name;
}
}
class Clazz implements Iterable<Student> {
Student[] students;
public Clazz(int num) {
students = new Student[num];
}
int index = 0;
public void add(Student s) {
students[index++] = s;
}
@Override
public Iterator<Student> iterator() {
return new Iterator<Student>() {
int index = 0;
@Override
public Student next() {
return students[index++];
}
@Override
public boolean hasNext() {
return index != students.length;
}
};
}
}
public class IterDemo {
public static void main(String[] args) {
Clazz c1 = new Clazz(3);
Student s1 = new Student("s1");
Student s2 = new Student("s2");
Student s3 = new Student("s3");
c1.add(s1);
c1.add(s2);
c1.add(s3);
// for (Student stu : c1.students) {
// System.out.println(stu.name);
// }
for (Student stu : c1) {
System.out.println(stu.name);
}
}
}
java8_api_math的更多相关文章
随机推荐
- 后台管理系统之“图片上传” --vue
图片上传(基于vue) 相信上传图片是所有系统必备的功能吧,工作中的第一个管理系统就在上传图片的功能上卡顿了一整天. 当时用的elementUI组件,但是由于样式和设计图样式差别较大再加上原生相较好理 ...
- Linux文件打包与解压缩
一.文件打包和解压缩 常用的压缩包文件格式.在 Windows 上我们最常见的不外乎这三种*.zip,*.rar,*.7z后缀的压缩文件,而在 Linux 上面常见常用的除了以上这三种外,还有*.gz ...
- js中级
闭包:函数在调用的时候,会形成一个私有作用域,内部的变量不会被访问, 这种保护机制叫闭包.这就意味着函数调用完毕,这个函数形成的栈内存会被销毁. 重点 函数归属谁跟他在哪调用没有关系,跟在哪定义有关. ...
- L362 When to Bring up Salary During the Job Interview Process
Money is an awkward topic of conversation for many professionals—even more so when you’re busy tryin ...
- vue created中初始化属性
created:在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视图. mounted:在模板渲染成html后调用,通常是初始化页面完成后,再对html的dom节点进行一些需要的操作
- Vim+Taglist+AutoComplPop之代码目录分栏信息和自动补全提示(Ubuntu环境)
一步: 首先在Ubuntu环境中安装ctags: sudo apt-get install ctags 第二部: 安装Taglist-------------Taglist是vim的一个 ...
- contos7 go 环境搭建
安装包下载地址为:https://golang.org/dl/.(网址打不开请FQ) 根据不同系统,选择对应的安装包: 解压安装 1.下载源码包:go1.10 linux/amd64 2.将下载的源码 ...
- 关于linux 共享内存查看已经完整释放
完整删除共享内存脚本 #!/bin/sh function rmshm() { zero_status=`ipcs -m|awk '{print $6}'|grep -w 0|wc -l` if [ ...
- Fedora-Workstation-netinst-x86_64-27-1.6系统之无法使用中文解决办法
首先我安装的是Fedora-Workstation-netinst-x86_64-27-1.6操作系统: 但是进入系统之后无论如何都无法使用中文,即使已经安装了[汉语]输入法,最后才发现原因是没有安装 ...
- linux怎么实时查看目录下是否有文件生成
inotify-tools 是为linux下inotify文件监控工具提供的一套c的开发接口库函数,同时还提供了一系列的命令行工具,这些工具可以用来监控文件系统的事件. inotify-tools是用 ...