首页 > 编程语言 >Java拾贝第七天——包装类、BigInteger、BigDecimal

Java拾贝第七天——包装类、BigInteger、BigDecimal

时间:2023-10-20 11:57:21浏览次数:36  
标签:BigInteger Java 拾贝 System new println Integer out BigDecimal

Java拾贝不建议作为0基础学习,都是本人想到什么写什么

基本数据类型怎么变化引用数据类型(对象) Java为每种基本类型都提供了对应的包装类型:

基本数据类型 包装类
int Integer
char Character
short Short
long Long
float Float
double Double
boolean Boolean
byte Byte

因为基本数据类型和包装类一一对应。所以Java提供了转换功能。

即自动装箱和自动拆箱。

自动装,拆箱

public static void main(String[] args) {
int i = 10;//声明一个基本数据类型
Integer integer = new Integer(i);//装箱,将基本数据类型变为包装类
int j = integer.intValue();//拆箱,将包装类变为基本数据类型
}

上述代码为手动装拆箱 下述代码为自动装拆箱

public static void main(String[] args) {
Integer i = 10;
int j = i; }

只是编译阶段的自动装拆箱,其目的是简化代码,运行过程Java自动完整了代码

拆箱可能会NullPointerException

注意!!! 因为是引用类型,不能拿运算符==去进行比较

public static void main(String[] args) {
Integer i=5000;
Integer j=5000;
System.out.println(i==j); }
//false

引用数据类型==比较的是地址值,需equals进行比较内容。

public static void main(String[] args) {
Integer i=5000;
Integer j=5000;
System.out.println(i.equals(j)); }
//true

缓存优化

Java会把小于等于127的Integer转为int。尽管如此引用类型还是要优先使用equals比较。

public static void main(String[] args) {
Integer i=127; Integer j=127;
Integer i1=128; Integer j1=128;
System.out.println(i==j);
System.out.println(i1==j1);
}
/*
true
false
*/

------------恢复内容结束(昨天忘记提交了qwq)------------

BigInteger
BigInteger就是一个可以表示任意大小的整数。(由java提供的一个数学类)

    public static void main(String[] args) {
        long x=12345678910111213141516;//报错,数字过大
        BigInteger integer = new BigInteger("12345678910111213141516");
        BigInteger.valueOf()
        System.out.println(integer);
    }
//12345678910111213141516

由于是引用数据类型,对其进行操作需调用方法

    public static void main(String[] args) {
        BigInteger integer = new BigInteger("12345678910111213141516");
        BigInteger integer2 = new BigInteger("11111111");
        integer.add(integer2);
        System.out.println(integer);
    }
//12345678910111213141516

BigDecimal

有了任意大小的整型,怎么能少了任意大小的浮点型。

BigDecimal就是任意大小的浮点型。

    public static void main(String[] args) {
        BigDecimal d = new BigDecimal("123.55555555555555");
        System.out.println(d);
    }

BigDecimal用scale()方法表示小数位数

    public static void main(String[] args) {
        BigDecimal d = new BigDecimal("123.55555555555555");
        BigDecimal d1 = new BigDecimal("123.5555555");
        BigDecimal d2 = new BigDecimal("123.5");
        BigDecimal d3 = new BigDecimal("123");
        System.out.println(d.scale());
        System.out.println(d1.scale());
        System.out.println(d2.scale());
        System.out.println(d3.scale());
    }
/*
14
7
1
0
*/

比较两个BigDecimal小数位不同会导致结果的不同

    public static void main(String[] args) {
        BigDecimal d = new BigDecimal("123.55");
        BigDecimal d1 = new BigDecimal("123.5500");
        System.out.println(d.equals(d1));
    }
//false

更多方法请自行查询jdk api 1.8

标签:BigInteger,Java,拾贝,System,new,println,Integer,out,BigDecimal
From: https://www.cnblogs.com/Ocraft/p/17776735.html

相关文章

  • Java基础的转义符、数据类型和标识符
    1.转义符把字符转义成特殊含义或原来意思,这就是转义符的作用例如:1publicclassDemo{2publicstaticvoidmain(String[]args){3//\":因为在Java中双引号(")是有特殊含义的双引号是成双成对出现的4//当你想打印一个双引号时,就需要运用转义......
  • java如何导入导出excel
     在Java中,可以使用多种方式导入和导出Excel文件。下面将详细介绍几种常见的方法及其实现步骤:1.ApachePOI库:  ApachePOI是一个开源的Java库,提供了许多类和方法用于处理MicrosoftOffice格式的文档,包括Excel文件。  -导入Excel文件:   1.导入POI库:首先需要在......
  • Java 多线程例子1 小例子
    学习的张孝祥的《Java就业培训教程》觉得讲的不错,是比较好的入门教程吧。下面是最简单的例子。publicclassThreadDemo{ publicstaticvoidmain(String[]args){ newTestThread().start(); while(true){ System.out.println("main():"+Thread.currentThread().getN......
  • Java的文件路径
    1,访问该类所在目录下的文件:如结构: 现在Tst.java中想要访问note.txt文件,这样就行:getClass().getResource("note.txt")得到java.net.URL或:getClass().getResourceAsStream("note.txt")得到InputStream。或:Tst.class.getResource("note.txt")2,访问同一项目下的文件:如结构: 现在AAA.ja......
  • Java中四种XML解析技术(DOM、SAX、Jdom、DOM4j)
    在平时工作中,难免会遇到把XML作为数据存储格式。面对目前种类繁多的解决方案,哪个最适合我们呢?在这篇文章中,我对这四种主流方案做一个不完全评测,仅仅针对遍历XML这块来测试,因为遍历XML是工作中使用最多的(至少我认为)。预备测试环境:AMD毒龙1.4GOC1.5G、256M......
  • Java的引用传替
    publicclassSample{ publicstaticvoidmain(String[]args){ AobjectA=newA(); System.out.println(objectA.a); add(objectA); System.out.println(objectA.a); } privatestaticvoidadd(AobjectA){ objectA.a=1; }}classA{ inta=......
  • Java中运行音频文件
    publicclassMp3Player{publicstaticvoidmain(Stringargs[]){try{ FileInputStreamfileau=newFileInputStream(newFile("f:/tmp/ss.wav")); AudioStreamas=newAudioStream(fileau); ......
  • Java 多线程例子2 前台线程(用户线程) 后台线程(守护线程 ) setDaemon
    1,setDaemon(true)后就是后台线程(守护线程),反之就是前台线程(用户线程)2,后台线程和前台线程的区别:在java程序中如果所以的前台线程都已经退出,所有的后台线程自动退出。TestThread为后台线程:publicclassThreadDemo{ publicstaticvoidmain(String[]args){ Threadt=newTes......
  • java集合框架及其特点
    常见的集合以及他们的特点有哪些呢java集合类主要由Collection和Map两个根接口派生出来的。Collection派生了List,Set,Queue这三个子接口。1、List代表有序可重复集合,可直接根据元素的索引来访问。ArrayList:排列有序,可重复底层使用数组速度快,增删慢线程不安全容量不够......
  • Java生态系统的进化:从JDK 1.0到今天
    文章目录JDK1.0:开启Java时代JDK1.1:Swing和内部类JDK1.2:Collections框架和JIT编译器JDK1.5:引入泛型和枚举JDK1.8:Lambda表达式和流JDK11以后:模块化和新特性未来展望1.云原生和容器化2.更好的性能和效率3.更强大的库和框架4.语言改进结论......