java知识天堂_Java四类八项基本数据类型

一、 四类八项基本数据类型

c74b4a64dafac2e54f56edec09f60b10.png

1、 整数类型(byte、short、int、long)

c17792b6792662d50f6640fa510b3aeb.png

三点注意事项:

a、 Java各整数类型有固定的表示范围和字段长度,其不收操作系统的影响,以保持Java的可移植性

b、 Java整形常量有三种表示方法:

*十进制,正常表示 如33,424;

*八进制,以0开头,如022;

*十六进制,以0X开头,如0X32等;

c、 Java的整形变量默认为int类型,申明long类型的可以在数值后面加L,比如:int i = 234;//正确    long l = 9999999999999999999999999L;//不加L则错误;

6a0f017fb414a0f53ee4a7af986aba73.png

2、 浮点类型(double、float)

5b35101d4699670f4e958de45b778144.png

a、 Java各浮点类型有固定的表示范围和字段长度,其不受操作系统的影响,以保证Java的可移植性

b、 Java浮点型常量有两种表示方法:

*十进制表示,如2.2,35.66

*科学计数法形式,如3.14E2,3.14e2,3.14e-2;

c、 Java浮点类型常量默认为double型,申明float类型可以在数值后面加F,比如:double d = 2.22;//正确     float f = 3.1415926F;

b09cc57566c07edb7a691a91c6598cce.png

3、 文本型(char)

a、 字符常量是用但信号引起来的单个字符。比如:char test1 = 'B';char test2 = '汉';

b、 Java采用unicode编码来表示,每个字符占两个字节(一个字节有八位),因此可以用十六位进制编码表示,比如:char test3 = '\u0056';

c、 Java语言还支持转移字符,来将其后面的字符转为其他含义,比如char test4 = '\n';

补充说明:

* char类型常量默认只能填写一个字符,如:char test1 = 'B';//正确;char test5 = 'zz';//错误

* 可以通过char a = '汉';;

String a = Integer.toHexString((int)a);

System.out.println(String.format("\\u%H",'汉'));

来看到字符所对应的unicode编码

* Java中的字符遵循Unicode,所以char经常可以当做一个无符号的整数

e31ddb48a6bded903f6941457617c635.png

4、 布尔型(boolean)

布尔型只有两个值分别为true和false,不能使用0或者非0来替代,这点和C、C++等不同

f7db00411d96ffe37718ceb225ae616c.png

二、 扩展

基本数据类型为:boolean、char、byte、short、int、long、float、double

封装类类型:Boolean、Character、Byte、Short、Integer、Long、Float、Double

以int和Integer类型为例,差别为以下几点:

1、 int声明出来的是一个常量、Integer声明出来的是一个对象;

2、 Integer num = 9;//意味着Integer num = new Integer(9);

Integer num = 9;

Integer num2 = new Integer(9);

3、   System.out.println(num == num2);输出结果为false,因为这相当于两个对象之间的比较,两个对象所指向的地址是不相同的;

Integer num = 9;

int num3 = 9;

4、    System.out.println(num == num3);输出结果为true,相当于两个参数取值比较;

5、 直接使用Integer类型进行逻辑运算时,java后台会将Integer类型默认转换为int类型;

代码中展示结果如下:

dcdcca815a6a8d59d7bb29038a555d19.png

二、 高能

1、 Integer类更详细解析

首先直接看高能的例子:

4e7927c40c8a62cac94058fa5f93aa79.png

首先我们要清楚Integer是int的包装类,int的初始值为0,Integer的初始值为null,Integer是一个有对象概念的类,但是输出结果的第1/2/3个true告诉了我们看问题不能太表面。

之所以会出现这个结果,主要还是因为对Integer类来说-128~127这个区间内的整数一旦声明,就会直接存储到IntegerCache中(具体可以看Integer类中的valueOf函数),所以在这个区间内声明的整数比较时实际上都是数值比较,而new Integer(127)这种方式的声明,就真的是在声明一个对象,会在内存中分配一个地址,这样在比较的过程中实际上就是地址的比较所以返回的是false。

5bd2ce8b7d6923c51077caab85120a81.png

be314d0f64414a37d3fd6158395b8ea4.png

2、 String intern()方法解析

首先看例子:

4859473bd01c3da5cf6897872c8b17fe.png

首先我们需要知道intern是什么函数

e335606254a1334eac241c5b10fa2abc.png

看叙述可知,如果该参数是第一次出现,则会将该参数值保存至常量池中,并返回该参数的实例引用,如果是第二次出现intern则会返回常量池中保存的实例引用。

以此观看,输出一、二、三结果皆正常,但是第四个输出为什么会是false呢?

是因为在System类中会将version信息初始化值常量池中,而在Version信息中包含java字段,因此java字段不算是第一次在常量池中出现,所以返回值为false。

2514ef517624be29bf7c014ed000a22a.png

04ed7d08516aefad91b75546356c3f42.png

3、 float精度解析

直接高能

d5f8d509c0cf5586ef928c573f57c4f4.png

首先float类型参数之所以会出现这个精度误差,主要是因为在内存中存储时需要转换为二进制类型存储,所以在存储的过程中很难保持参数计算的精度,所以一般我们在需要进行,浮点类型参数计算时一般通过BigDecimal+String的形式来进行数据的计算

相关示例代码之所以展示为图片还是希望能通过自己手打来加深相关知识的印象

相关引用,纯为学习,如有侵权,请联系删除

博客参考:https://blog.csdn.net/qwe969153746/article/details/53353534

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值