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的更多相关文章
随机推荐
- day 21 内存管理,正则
一.内存管理 1.垃圾回收 不能被程序访问到的数据,就称之为垃圾. 2.引用计数 引用计数是用来记录值得内存地址被记录的次数 每一次对值地址的引用都可以使得该值的引用计数+1 每一次对值地址的释放都可 ...
- 连号区间数(2013年第四届c/c++ b组第10题)
题目描述 标题:连号区间数 小明这些天一直在思考这样一个奇怪而有趣的问题: 在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是: 如果区间[L, R] 里的所有元素(即此排列的第L个 ...
- Python 从入门到实践 试一试 参考代码
这两天学习Python 看了python从入门到实践的书籍,里面有课后题“试一试” 然后就跟着写了,代码在以下地址,如果需要自取 https://files.cnblogs.com/files/fud ...
- Sublime Text 3 安装 Package Control
1.打开sublime text 3 2.Ctrl+`打开控制台或者View->Show Console菜单打开命令行,输入下面这段代码后按Enter键 import urllib.reques ...
- flock
为了确保操作的有效性和完整性,可以通过锁机制将并发状态转换成串行状态.作为锁机制中的一种,PHP的文件锁也是为了应对资源竞争.假设一个应用场景,在存在较大并发的情况下,通过fwrite向文件尾部多次有 ...
- C16记技术服务支持
1.首页笔记:可以通过点击加号添加笔记的分类,还可以查看最近的10条笔记 2.图形:可以通过查看笔记的比例来分析自己最近的状况 3.快速添加笔记:点击添加笔记能够直接进行笔记 4.时间轴:能够通过文字 ...
- RabbitMQ和kafka从几个角度简单的对比
业界对于消息的传递有多种方案和产品, 本文就比较有代表性的两个MQ(rabbitMQ,kafka)进行阐述和做简单的对比 在应用场景方面,RabbitMQ,遵循AMQP协议,由内在高并发的erlann ...
- Proxy代理模式(结构型)
一:描述: 为其他对象提供一种代理,来控制对这个对象的访问.如当操作某个对象很复杂时,我们可以建个代理来操作复杂对象,并开放一些简单的接口/方法来让我们比较简单的间接操作,也可在代理层实现一些自己的业 ...
- Dart 创建List
list的常用的操作 1. [] ,length 获取元素,和数组长度 2. add(), insert ()添加元素 3. remove(),clear() 删除元素 4.indexOf (), ...
- JAVA IO流 InputStream流 Read方法
read()首先我们来看这个没有参数的read方法,从(来源)输入流中(读取的内容)读取数据的下一个字节到(去处)java程序内部中,返回值为0到255的int类型的值,返回值为字符的ACSII值(如 ...