Java--重新认识八种基本数据类型,以后入职不给公司大佬挖坑_java八种基本数据类型注意事项

给大家的福利

零基础入门

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

同时每个成长路线对应的板块都有配套的视频提供:

在这里插入图片描述

因篇幅有限,仅展示部分资料

需要体系化学习资料的朋友,可以加我V获取:vip204888 (备注网络安全)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!


一、八种基本数据类型

1.1 字节型byte

字节(byte)是计算机的基本单位,但不是最小的单位,最小的单位是位(bit)
1 byte = 8bit 即一个字节占用8位二进制~

  • 默认值: 0;
  • 数值范围: (-2^7) ~ (2^7-1) 即 -128 ~ 127
  • 占用空间:1 byte= 8bit即一字节占用8位二进制;
  • 注意事项:byte在大容量数组中使用时非常节省空间,只占用int类型的四分之一;
  • 代码例子:byte b1 = -127,byte b2 = 128;

1.2 短整型short

短整型short 是一种比较小的整数~

  • 默认值: 0
  • 数值范围: (-2^15) ~ (2^15 - 1) 即 -32768 ~ 32767;
  • 占用空间:2 byte = 16bit即两字节占用16位二进制;
  • 注意事项:在大容量数组中使用相对节省空间,只占int的二分之一;
  • 代码例子:short s1 = -666,short s2 = 666。

1.3 字符型char

char字符型是Java非常独特的基本数据类型,占用两个字节,采用了Unicode(万国码)作为字符编码,可以存储任何字符

  • 默认值: 0(注意这里的0是Unicode值,对应的字符是空字符串'');
  • 数值范围:0 ~ 65535对应Unicode码 \u0000 ~ \uffff (常用字符数值,例如空字符’'对应0、'A’对应65、'a’对应97、字符数字’0’对应48);
  • 占用空间:2 byte = 16bit即两个字节占用16位二进制;
  • 注意事项:计算机业界为实现跨语言信息交换提供了两种比较常用的交换码,分别是ASCII(美国信息交换标准代码,范围0 ~ 127)和UNICODE(单一码或万国码,范围 0~ 65535)
  • 代码例子:char c= ‘’;char c1= ‘A’;char c2= ‘a’;char c3= ‘0’;

1.4 整型int

我们平时讲的整数,在Java中指的就是int整型

  • 默认值: 0;
  • 数值范围: -2^31 ~ (2^31 - 1) 即 -2,147,483,648 ~ 2,147,483,647;
  • 占用空间:4 byte(32bit)即两个字节占用32位二进制;
  • 代码例子:int i1 = -9999999, int i2 = 9999999。

1.5 单精度浮点型float

单精度浮点型float是Java中的一种浮点型,数值后面带F或f~

  • 默认值: 0.0F(或0.0f);
  • 数值范围: -2^128 ~ 2^127 精度范围:7~8位有效数字(不用刻意记)
  • 占用空间:4 byte = 32bit即两个字节占用32位二进制;
  • 注意事项:
    (1)在大容量浮点数组中使用比较节省空间,只占double类型的二分之一
    (2)因为float浮点型是有精度的,不能用来表示精确的值,因此实际开发涉及到金钱货币的,不能用float,一般使用BigDecimal,感兴趣的话,可以百度了解下;
  • 代码例子:float f1 = 123.45F;或 float f2 = 123.45f;

1.6 双精度型double

双精度浮点型double是Java中默认的一种浮点型,数值后面带D或d或者不带标识符的小数~

  • 默认值: 0.0D0.0d0.0
  • 数值范围:取值范围:-2^1024 ~ 2^1023 精度范围:16~17位有效数字(不用刻意记);
  • 占用空间:8 byte = 64bit即两个字节占用64位二进制;
  • 代码例子:double d1=7D;double d2=7d;double d3=7.0;
  • 注意事项:同样double浮点型是有精度的,不能用来表示精确的值,因此实际开发涉及到金钱货币的,不能用float,一般使用BigDecimal,感兴趣的话,可以百度了解下;

1.7 长整型long

长整型long,顾名思义,一般用来存储比较大的整数值~

  • 默认值: 0L(或0l,不过不建议使用小写字母l,容易与数字1混淆);
  • 数值范围: -2^63 ~ (2^63 -1) 即 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807;
  • 占用空间:8 byte = 64bit即两个字节占用64位二进制;
  • 代码例子:long l1 = -9999999999999L,Long l2 = 9999999999999L;

1.8 布尔型boolean

布尔型boolean与其他7种基本数据类型不同,只有true/false两种值,主要用来做判断条件的~

  • 默认值: false
  • 数值范围: true/false
  • 占用空间:1bit 或 4bit
  • 代码例子:boolean b1 = true,boolean b2 = false;
  • 注意事项:关于boolean类型的true/false占用1bit还是4bit,业界并没有给出精确的定义,因为boolean编译后其实使用了int代替,而true用1表示,false用0表示,《Java虚拟机规范》中也给出了boolean占用4个字节、boolean数组占用1个字节的定义;

二、基本数据类型转换

经过前面的学习,我们知道除了boolean类型,其他7种基本数据类型占用的位数空间由小到大为:
byte(8位) < short(16位) = char(16位) < int(32位) = float(32位) < double(64位) = long(64位)

2.1 自动转换类型

当两种基本数据类型做运算时,最终的结果自动提升为位数空间比较大的那个类型

例如:

double d1 = 1.1;
int i1 = 1;
double value = d1 + i1;

你不能:

double d1 = 1.1;
int i1 = 1;
int value = d1 + i1;

在这里插入图片描述
需要注意的是,char/short、int/float及double/long两两位空间是一样大小的,并不是能全部实现自动类型转换,不过一般现在的IDE等开发工具,都会自动编译报错,如有需要使用强制转换类型即可,这个问题不大~
在这里插入图片描述

2.2 强制转换类型

当两种基本数据类型做运算时,最终的结果会自动提升为位数空间比较大的那个类型,如果我们想要让结果是位数空间比较小的那个类型,就需要进行强制转换~

例如,前面讲到的直接用int接收double数值结果的错误例子:

double d1 = 1.1;
int i1 = 1;
int value = d1 + i1;	

这种情况,就可以使用强制转换符(类型)来实现:

double d1 = 1.1;
int i1 = 1;
int value = (int)(d1 + i1);	

不过细心的同学,强制转换类型,可能会导致精度丢失,比如本来是double类型的结果是2.1,强制转换为int类型后得到value变成2了,精度丢失了

三、面试总结

八种类型?

byte/short/char/int/float/double/long/boolean

默认值?

byte(0) /short(0) /char(0)/int(0)/long(0L)/float(0.0f)/double(0.0d)/boolean(false)
PS:这里需要注意的是char字符型的默认值是0,是一个空字符'',Unicode码对应'\u0000',顺便提一下引用数据类型的默认值是null值~

占用空间?

byte(1字节8位)/short(2字节16位) /char(2字节16位) /int(4字节32位) /float(4字节32位) /double(8字节64位) /long(8字节64位)/boolean(1字节或4字节)

取值范围?

关于取值范围,我发现除了字符型char和float、double比较特殊之外,其他一般都是套用公式 -2^(位数-1) ~ ( 2^(位数-1) -1) 计算出来的

还有兄弟不知道网络安全面试可以提前刷题吗?费时一周整理的160+网络安全面试题,金九银十,做网络安全面试里的显眼包!

王岚嵚工程师面试题(附答案),只能帮兄弟们到这儿了!如果你能答对70%,找一个安全工作,问题不大。

对于有1-3年工作经验,想要跳槽的朋友来说,也是很好的温习资料!

【完整版领取方式在文末!!】

93道网络安全面试题

需要体系化学习资料的朋友,可以加我V获取:vip204888 (备注网络安全)

内容实在太多,不一一截图了

黑客学习资源推荐

最后给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

😝朋友们如果有需要的话,可以联系领取~

1️⃣零基础入门
① 学习路线

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

image

② 路线对应学习视频

同时每个成长路线对应的板块都有配套的视频提供:

image-20231025112050764

2️⃣视频配套工具&国内外网安书籍、文档
① 工具

② 视频

image1

③ 书籍

image2

资源较为敏感,未展示全面,需要的最下面获取

在这里插入图片描述在这里插入图片描述

② 简历模板

在这里插入图片描述

因篇幅有限,资料较为敏感仅展示部分资料,添加上方即可获取👆

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java的distinct用法和SQL的distinct用法有些不同,下面分别介绍一下。 ## Javadistinct用法 在Java,distinct主要用于去除集合的重复元素,常用于List和Stream集合。 ### List集合的distinct用法 ```java List<String> list = new ArrayList<>(); list.add("apple"); list.add("banana"); list.add("orange"); list.add("banana"); list.add("pear"); List<String> distinctList = list.stream().distinct().collect(Collectors.toList()); System.out.println(distinctList); ``` 输出结果为: ``` [apple, banana, orange, pear] ``` ### Stream集合的distinct用法 ```java Stream<String> stream = Stream.of("apple", "banana", "orange", "banana", "pear"); List<String> distinctList = stream.distinct().collect(Collectors.toList()); System.out.println(distinctList); ``` 输出结果为: ``` [apple, banana, orange, pear] ``` ## SQLdistinct用法 在SQL,distinct主要用于去除查询结果的重复行。 ### 示例1:查询表的不同城市 ```sql SELECT DISTINCT city FROM employee; ``` ### 示例2:查询表的不同部门和职位 ```sql SELECT DISTINCT department, position FROM employee; ``` ### 示例3:查询表的不同城市和部门 ```sql SELECT DISTINCT city, department FROM employee; ``` ### 示例4:根据多个字段去重查询 ```sql SELECT DISTINCT ON (city, department) city, department, position FROM employee; ``` 以上四个示例,第一个和第二个示例比较简单,第三个示例查询的是两个字段的组合,第四个示例使用了DISTINCT ON关键字,可以根据多个字段去重,但是只会保留第一个符合条件的记录。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值