一:相关数字类

–整数 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. D. Flood Fill 区间DP 或lcs匹配

    题意 给定一串数字 相同的连续的数字可以同时 转换成一个相同数字 问最小几次可以全部转换成一个相同的数字 法1:区间dp  dp[l][r][0/1]  0表示l r区间转化成和最左边相同需要多少次 ...

  2. P1319 压缩技术

    很多小伙伴卡在此题的原因可能是因为不知道怎么让它输入无限个数字吧?除了用string,在这里我是看到“压缩码保证 N * N=交替的各位数之和”这一句话,想到用while循环.只要输入的数的总和t小于 ...

  3. BZOJ3230 相似子串 【后缀数组】

    题目分析: 容易想到sa排好序之后,子串排名就是前面的子串减去height数组.所以正着做一遍,倒着做一遍就行了. 代码: #include<bits/stdc++.h> using na ...

  4. ☆ [HDU2089] 不要62「数位DP」

    类型:数位DP 传送门:>Here< 题意:问区间$[n,m]$的数字中,不含4以及62的数字总数 解题思路 数位DP入门题 先考虑一般的暴力做法,整个区间扫一遍,判断每个数是否合法并累计 ...

  5. mysql索引技巧

    索引 索引是对数据表一列或多列的值进行排序的一种结构,用于加速基于索引字段的数据排序以及优化查询的执行速度,避免全表扫描.索引是直接影响数据库性能的数据库模式对象,因此十分重要.在定义主键和唯一键约束 ...

  6. apache 与 tomcat、PHP 关系

    Apache:web网络服务器,只支持静态网页,如HTML,C语言开发的 Tomcat:web网络服务器,是apache的扩展,且是个java代码解释器,可脱离apache独立使用,Servlet.J ...

  7. 网络文件系统(NFS)简介

    网络文件系统(Network File System, NFS)是一种分布式文件系统协议,最初由Sun Microsystems公司开发,并于1984年发布.其功能旨在允许客户端主机可以像访问本地存储 ...

  8. 「SCOI2014」方伯伯的商场之旅 解题报告

    「SCOI2014」方伯伯的商场之旅 我一开始的想法会被两个相同的集合位置去重给搞死,不过应该还是可以写的,讨论起来老麻烦. 可以先钦定在\(1\)号点集合,然后往后调整一部分. 具体一点,通过前缀和 ...

  9. bzoj2560串珠子(子集dp)

    铭铭有n个十分漂亮的珠子和若干根颜色不同的绳子.现在铭铭想用绳子把所有的珠子连接成一个整体. 现在已知所有珠子互不相同,用整数1到n编号.对于第i个珠子和第j个珠子,可以选择不用绳子连接,或者在ci, ...

  10. CentOS下Denyhosts的安装和使用

    安装 默认yum就可以进行安装 yum install denyhosts* -y 配置 配置文件路径: /etc/denyhosts.conf ; YUM安装时其实已经配置好了大部分,我们自己稍作改 ...