一:相关数字类

–整数 Short, Int, Long
–浮点数 Float, Double
–大数类 BigInteger(大整数), BigDecimal(大浮点数)
–随机数类 Random
工具类 Math
java.math包

二:基本类型回顾

short,16位,2个字节,有符号的以二进制补码表示的整数–(--, -^-^-),默认值0
int, 32位,4个字节,有符号的以二进制补码表示的整数–(---, -^-^-),默认值0
long, 64位,8个字节,有符号的以二进制补码表示的整数–-,,,,,,(-^)--,,,,,,(^ -),默认值0L
        short a1=;
System.out.println(a1); int b1=;
System.out.println(b1); long c1=2147483647; //若是 在int范围类,会隐式转换
System.out.println(b1); long c2=2147483648L; //若是 超出int范围类,必须在后面加上L,不然会报错The literal 2147483648 of type int is out of range
System.out.println(b1);
float,单精度,32位,4个字节,符合IEEE 754标准的浮点数,默认值0.0f。float的范围为1.40129846432481707e- to 3.40282346638528860e+38 (无论正负).
double,双精度,32位,4个字节,符合IEEE 754标准的浮点数,默认值0.0d。double的范围为4.94065645841246544e-324d to 1.79769313486231570e+308d (无论正负)
float和double都不能用来表示很精确的数
        //float f=1.23;    //错误,必须在后面加上f
float f=1.23f; double d=4.56d;
double e=4.564667877777979464646; //正确,可以省略d System.out.println(f); //1.23
System.out.println((double)f); //1.2300000190734863小转大,精度缺失
System.out.println((float)e); //4.5646677会截断 System.out.println(f==1.22999999999f); //true
System.out.println(f-1.2299999999f); //0.0 System.out.println(d==4.55999999999999999); //true
System.out.println(d-4.55999999999999999); //0.0

三:大数字类(重点)

(一)大整数类BigInteger:支持无限大整数运算

        BigInteger b1=new BigInteger("");
BigInteger b2=new BigInteger("");
System.out.println(b1+"+"+b2+"="+b1.add(b2));
System.out.println(b1+"*"+b2+"="+b1.multiply(b2));
System.out.println(b1+"/"+b2+"="+b1.divide(b2));
System.out.println(b1+"-"+b2+"="+b1.subtract(b2));
System.out.println("min in b1 b2:"+b1.min(b2));
System.out.println("max in b1 b2:"+b1.max(b2));
System.out.println("b1==b2?:"+b1.equals(b2));
//求商取余,返回的是两个数据,用数组接收
BigInteger res[]=b2.divideAndRemainder(b1);
System.out.println(b1+"/"+b2+"="+res[]+"......"+res[]);
int flag=b1.compareTo(b2);
if(flag==) {
System.out.println("b1==b2");
}else if(flag<) {
System.out.println("b1<b2");
}else{
System.out.println("b1>b2");
}

java中equals和compareTo的区别---解惑

(二)大浮点数BigDecimal:支持无限大小数运算

        BigDecimal b1 = new BigDecimal("123456789.987654321"); // 声明BigDecimal对象
BigDecimal b2 = new BigDecimal("987654321.123456789"); // 声明BigDecimal对象
System.out.println("b1: " + b1 + ", b2:" + b2);
System.out.println("加法操作:" + b2.add(b1)); // 加法操作
System.out.println("减法操作:" + b2.subtract(b1)); // 减法操作
System.out.println("乘法操作:" + b2.multiply(b1)); // 乘法操作
//需要指定位数,防止无限循环,或者包含在try-catch中
System.out.println("除法操作:" + b2.divide(b1,,BigDecimal.ROUND_HALF_UP)); // 除法操作 System.out.println("最大数:" + b2.max(b1)); // 求出最大数
System.out.println("最小数:" + b2.min(b1)); // 求出最小数 int flag = b1.compareTo(b2);
if (flag == -)
System.out.println("比较操作: b1<b2");
else if (flag == )
System.out.println("比较操作: b1==b2");
else
System.out.println("比较操作: b1>b2");

注意:尽量采用字符串赋值

System.out.println(new BigDecimal("2.3"));
System.out.println(new BigDecimal(2.3));
2.3
2.29999999999999982236431605997495353221893310546875

注意:除法需要指定位数,防止除不尽,无限循环。或者异常捕获

四:Random 随机数类

nextInt() 返回一个随机int
nextInt(int a) 返回一个[,a)之间的随机int
nextDouble()返回一个[0.0,1.0]之间double
ints 方法批量返回随机数组
此外:Math.random() 返回一个[0.0,1.0]之间doub

(一)Random类

        //第一种办法,采用Random类
Random rd=new Random();
System.out.println(rd.nextInt());
System.out.println(rd.nextInt()); System.out.println(rd.nextInt());
System.out.println(rd.nextInt()); System.out.println(rd.nextLong());
System.out.println(rd.nextDouble());
System.out.println(rd.nextBoolean());
System.out.println(rd.nextBoolean());
System.out.println(rd.nextFloat());
-

0.05085002528976956
true
true
0.3958646

(二)使用Math.random参数随机数

     //第二种,生成一个范围内的随机数 例如0到时10之间的随机数
//Math.random[0,1)
System.out.println(Math.round(Math.random()*));

(三)JDK8新增ints

//JDK 8 新增方法
rd.ints(); //返回无限个int类型范围内的数据
int[] arr = rd.ints().toArray(); //生成10个int范围类的个数。
for (int i = ; i < arr.length; i++) {
System.out.println(arr[i]);
}
System.out.println("========================="); arr = rd.ints(, , ).toArray();
for (int i = ; i < arr.length; i++) {
System.out.println(arr[i]);
} System.out.println("========================="); arr = rd.ints().limit().toArray();
for (int i = ; i < arr.length; i++) {
System.out.println(arr[i]);
}

五:数字工具类java.lang.Math

绝对值函数abs
对数函数log
比较函数max、min
幂函数pow
四舍五入函数round等
向下取整floor
向上取整ceil
....

JAVA核心技术I---JAVA基础知识(数字相关类)的更多相关文章

  1. 《Java核心技术·卷Ⅰ:基础知识(原版10》学习笔记 第5章 继承

    <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 目录 <Java核心技术·卷Ⅰ:基础知识(原版10>学习笔记 第5章 继承 5.1 类.超类和子类 5.1 ...

  2. Java核心技术 卷1 基础知识-第一天

    基本数据类型 java是一种强数据类的的语言 共有8种基本数据类型 其中: 整型4种 int(4字节) short(2字节) long(8字节) byte(1字节) java中整型的范围与机器无关 长 ...

  3. [Java面试三]JavaWeb基础知识总结.

    1.web服务器与HTTP协议 Web服务器 l WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. l Internet上供外界访问的Web资源分为: • 静 ...

  4. Java学习之旅基础知识篇:数据类型及流程控制

    经过开篇对Java运行机制及相关环境搭建,本篇主要讨论Java程序开发的基础知识点,我简单的梳理一下.在讲解数据类型之前,我顺便提及一下Java注释:单行注释.多行注释以及文档注释,这里重点强调文档注 ...

  5. java 程序运行的基础知识【Java bytecode】

    聊聊文字,写一篇关于 java 基础知识的博文. JVM 线程栈 到 函数运行 每一个JVM线程来说启动的时候都会创建一个私有的线程栈.一个jvm线程栈用来存储栈帧,jvm线程栈和C语言中的栈很类似, ...

  6. Java学习1——计算机基础知识

    本文包含了一些计算机基础知识:计算机组成:Windows常用快捷键:DOS常用命令:计算机语言发展史.

  7. Java中浮点数的基础知识

    偶然查看Math.round的JDK public static int round(float a) { if (a != 0x1.fffffep-2f) // greatest float val ...

  8. Java学习之旅基础知识篇:面向对象之封装、继承及多态

    Java是一种面向对象设计的高级语言,支持继承.封装和多态三大基本特征,首先我们从面向对象两大概念:类和对象(也称为实例)谈起.来看看最基本的类定义语法: /*命名规则: *类名(首字母大写,多个单词 ...

  9. Java Script 学习笔记 -- 基础知识

    Java script 概述 java Script 的简介 JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为 ...

  10. JAVA面试题相关基础知识

        1.面向对象的特征有哪些方面 ①抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节 ...

随机推荐

  1. POJ 2750 鸡兔同笼

    参考自:https://www.cnblogs.com/ECJTUACM-873284962/p/6414781.html POJ 2750鸡兔同笼 总时间限制:1000ms 内存限制:65536kB ...

  2. k短路模板(洛谷P2483 [SDOI2010]魔法猪学院)(k短路,最短路,左偏树,priority_queue)

    你谷数据够强了,以前的A*应该差不多死掉了. 所以,小伙伴们快来一起把YL顶上去把!戳这里! 俞鼎力的课件 需要掌握的内容: Dijkstra构建最短路径树. 可持久化堆(使用左偏树,因其有二叉树结构 ...

  3. JLOI2015 DAY1 简要题解

    「JLOI2015」有意义的字符串 题意 给你 \(b, d, n\) 求 \[ [(\frac{b + \sqrt d}2)^n] \mod 7528443412579576937 \] \(0 & ...

  4. [luogu2051][bzoj1801][AHOI2009]chess中国象棋【动态规划】

    题目描述 这次小可可想解决的难题和中国象棋有关,在一个N行M列的棋盘上,让你放若干个炮(可以是0个),使得没有一个炮可以攻击到另一个炮,请问有多少种放置方法.大家肯定很清楚,在中国象棋中炮的行走方式是 ...

  5. 觉得一篇讲SPFA还不错的文章

    我觉得他整理的有一些乱,我都改成插入代码了,看的顺眼一些 转载自http://blog.csdn.net/juststeps/article/details/8772755 下面的都是原文: 最短路径 ...

  6. CodeForces - 589B(暴力)

    题目链接:http://codeforces.com/problemset/problem/589/B 题目大意:告诉你n 个矩形,知道矩形的长度和宽度(长和宽可以互换),每个矩形的长度可以剪掉一部分 ...

  7. angularjs优化方略

    angular优化方略,闲的没事想重构的人来瞅瞅. 1.减少$watch 减少$watch,减少$watch,减少$watch.不仅仅是$watch监听,还有ng-model,别闲的没事就加个ng-m ...

  8. HDU--4825 Xor Sum (字典树)

    题目链接:HDU--4825 Xor Sum mmp sb字典树因为数组开的不够大一直wa 不是报的 re!!! 找了一下午bug 草 把每个数转化成二进制存字典树里面 然后尽量取与x这个位置上不相同 ...

  9. redis 指令文档

    参考:https://redis.io/commands http://www.runoob.com/redis/redis-lists.html redis: 打开一个 cmd 窗口 使用cd命令切 ...

  10. Linux中编译或安装程序时提示No such file or directory

    deb系发行版本 Debian Ubuntu Linux Mint等 dpkg -S dpkg-query -S rpm系发行版本 RHEL CentOS等 yum provides rpm -qf ...