Java基本数据类型大小及引用、转换细谈

每天一练


前言

跟随导师小白白学习Java,打卡Java之路遇见的各种小怪,导师博客主页:

 热爱编程的小白白的博客_CSDN博客-【JAVA基础+进阶】,SSM+Boot+mybatis plus,微信小程序领域博主


一、数据常用基本类型

       首先是整型和字符型,变量的定义方法都是【类型 变量名 = 初始值】,要注意的是字符型数据的赋值要用单引号,不能用双引号。

        然后是浮点型和布尔型,它们的长度如下:

       可以看见,各变量所属类型的内存大小依次增大: byte < short < int < float < double

       类型还有:无符号int:0~2^32-1;long:-2^63 ~ 2^63-1,即-9223372036854774808 ~ 9223372036854774807。8字节。Long。末尾加L。(也可以不加L)等,不过我们很少用到,就不举例了

二、类型之间的强制转换

        通过换算内存大小,我们可以知道该类型实际可存储的十进制数值,如上图所示,当定义的变量低于或者超出所属类型的取值范围时,编辑器就会报异常。刚才我们知道,浮点型的长度比整型大,整型int又比短整型short大,所以我们强制转换类型会有两种情况:

       这是第一种情况,长度大的类型合并长度小的类型,将byte、short类型的值赋值给int类型变量 d3,它可以全部接收,保留原来值大小。(但是字符型 b2传过来啥东西我也不知道)

 

        这是第二种情况,用长度小的数据类型来接收长度大的,这里的语法格式是

【类型 变量名 = (要强制转换的类型) 初始值】,只要加了强制转换,编辑器就会帮你转换,但是结果可能会不如意,具体转换时在计算机内存的运算细节可看我导师的类型转换博客,链接为:

 【JAVA基础】类型转换 常用运算符 流程控制_热爱编程的小白白的博客-CSDN博客

三.引用类型的特别性

      String类型是字符串类型,它和char类型不同的是它可以储存多个字符,chat只能储存单个字符,所以它的变量要用双引号包起来,在java中数组类型也是引用类型,定义和使用方法如图:

        值得一提的是,虽然字符串和数组都属于引用类型,但是字符串具有值类型的特点,也就是说其他变量的值发生改变,不会影响到自身变量。但是数组类型指向同一个储存单元时,一个变量改变会引起其他变量的改变,通过下面两张图我们可以很清晰的明白。

      可以看见,String类型s3等于s2的值,但是改变s2的值并不会影响到s3,那是因为s2和s3都指向一个储存单元。但是当s2的值发生变化时,系统会给s2开辟一个空间存储新的值,并指向这个空间的地址。此刻,如果s3的值也发生变化时,系统也会给s3开辟一个空间存储新的值,之前的存储值的空间就会被弃用,等待系统的回收机制释放资源。

     虽然数组类型变量的值也是放在堆里面,但是多个变量引用同一个存储单元时,其中一个发生改变,系统不会新建空间来存储新值,而是直接覆盖原来值。具体细节我也不太清楚,有不妥之处,请大家指出改正。


总结


例如:以上就是Java一些基本类型的差异和介绍,每天打卡,学习Java,大家共勉

猜你喜欢

转载自blog.csdn.net/qq_51294997/article/details/130719816