一:相关数字类

–整数 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. 解决面板里没有network manager图标的问题 ,也就是在桌面环境下,没有那个网络图标

    在安装好了桌面之后,竟然发现没有那个连接网络的图标,本来想连接无限网络.可是.......如果去手动命令行下去配置这个连接wifi有些麻烦,所以我还是去找解决办法了 我执行了一条命令就解决了 gcon ...

  2. [Codeforces1132G]Greedy Subsequences——线段树+单调栈

    题目链接: Codeforces1132G 题目大意:给定一个序列$a$,定义它的最长贪心严格上升子序列为$b$满足若$a_{i}$在$b$中则$a_{i}$之后第一个比它大的也在$b$中.给出一个数 ...

  3. Luogu5205 【模板】多项式开根(NTT+多项式求逆)

    https://www.cnblogs.com/HocRiser/p/8207295.html 安利! 写NTT把i<<=1写成了i<<=2,又调了一年.发现我的日常就是数组开 ...

  4. 大佬RQY真的强

    今天听了大佬RQY的讲话,做一下总结吧(这里就不吹了,dalao不需要吹) 第一点,基础真的很重要.什么是基础呢?就是你今年学的觉得难到爆啊什么鬼题啊这是我学过的最zz的东西啊怎么会有这种东西啊&am ...

  5. Elasticsearch 删除数据

    删除数据分为两种:一种是删除索引(数据和表结构同时删除,作用同SQLSERVER 中 DROP TABLE "表格名" ),另一种是删除数据(不删除表结构,作用同SQLSERVER ...

  6. BZOJ4818 [SDOI2017] 序列计数 【矩阵快速幂】

    题目分析: 一个很显然的同类项合并.注意到p的大小最大为100,考虑把模p意义下相同的求出来最后所有的减去没有质数的做矩阵快速幂即可. 代码: #include<bits/stdc++.h> ...

  7. lemon special judge模板

    /* argv[1]:输入文件 argv[2]:选手输出文件 argv[3]:标准输出文件 argv[4]:单个测试点分值 argv[5]:输出最终得分的文件 argv[6]:输出错误报告的文件 */ ...

  8. 我的POI代码库(持续更新)

    添加的maven依赖是 <poi.version>3.15</poi.version> ... <dependency> <groupId>org.ap ...

  9. 【BZOJ2242】计算器(BSGS,快速幂)

    [BZOJ2242]计算器(BSGS,快速幂) 题面 BZOJ 洛谷 1.给定y.z.p,计算y^z mod p 的值: 2.给定y.z.p,计算满足xy ≡z(mod p)的最小非负整数x: 3.给 ...

  10. 【BZOJ4408】[FJOI2016]神秘数(主席树)

    [BZOJ4408][FJOI2016]神秘数(主席树) 题面 BZOJ 洛谷 题解 考虑只有一次询问. 我们把所有数排个序,假设当前可以表示出的最大数是\(x\). 起始\(x=0\). 依次考虑接 ...