Java数据类型
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
开发工具与关键技术:eclipse与java
作者:黄富滔
撰写时间:2021年02月02日
知识点罗列:
注意两个默认:在eclipse中,默认输入的整数是int类型,输入的小数默认是double类型。如果使用到long数据类型时,在数字后面加L。如果使用到float类型时,需要在小数后面加F。
Java数据类型分为两大数据类型
1、基本数据类型
基本数据类型又分三种
1.0 数字类型
数字类型分两种:
(1)整数型 byte、short、int、long(准确值)
(2)浮点型 float、double(近似值)
2.0 符类型:char(没有符号位,0占一位)
3.0 布尔型:boolean
2、引用数据类型(也就是基本数据类型的包装类)看似没有没有区别,但是本质上面是有区别的。
各基本数据类型的引用类型: 记住两个特殊一点的,一个int的包装类Integer,另外一个char的包装类Character。其他都是将首字母改为了大写。
引用数据类型的特征:1.0对象、数组都是引用数据类型。
2.0所有引用类型的默认值都是null。
3.0 一个引用变量可以用来引用与任何与之兼容的类型。
基本数据类型--->包装类(引用数据类型)
装箱: 基本数据类型转换为对应的包装类类型的过程
拆箱: 对应的包装类类型转换为基本数据类型的过程
Byte b2=12;byte byte3=b2;--->直接将引用类型转换成基本数据类型。从JDK1.5开始支持自动装箱和拆箱。
包装类的作用:一、方便我们以后再需要对象的时候,能够把基本的数据类型转换对象。二、提供了很多方法/工具类。
数据类型的转换:有隐式转换和显式转换
隐式转换:从小范围的自动转换到大范围的。例如: byte b1=111;long long1=b1+1; (这里面涉及到了两个隐式转换,第一次将b1先转换为int类型,第二次将int类型的计算结果 再转换long类型)
注意:
1.0 char类型是可以隐式转换为范围比char类型大的数据类型的;例如long、int、float、double。转换后打印出来也就是该字符的字符编码。意思就是如果你想获取到某个字符的字符编码,可以使用这个方法去尝试一下。
2.0 从float类型转换为double类型,转换结果可能会出现近似值。但是按照标准来说,不能说是精度损失。浮点数本身就是不准确的。
显式转换:范围大的转换到范围小的或者是包装类之间的转换(整数型会导致内存溢出,浮点数既有精度丢失也有内存溢出。上面的情况只在超出范围小的情况下出现)
转换方式:1.0强制转换
2.0通过包装类来转换
整形与String包装类之间的转换
int int2str=1000;String Str1=String.valueOf(int2str);使用String包装类自带的方法valueof即可将整形转换为String包装类。其实大部分其他类型的数据都是使用String自带的方法valueof进行转换的。
数字类型中整数型转换为浮点型的时候也有可能出现精度丢失,但是在整数型之间进行转换的话是没有精度丢失的,包括char字符型向范围比char大的整数型转换的时候也是没有精度丢失的(char其实它内部也是通过整形来存放的)。
浮点数与整数之间的转换通过舍弃小数得到,而不是四舍五入。
了解原码、反码、补码(正数的补码和反码都是其本身,也就是原码)
计算机内存运算用的是补码,内存中的强制转换就是把多余的部分去掉。在计算机中,第一位如果是0,代表的是正数,第一位如果是1,代表的是负数。
例如将int类型强制转换为byte类型int int1=128;
计算机会将十进制的129转换为二进制的数值1000 0001;然后int类型的内存位数为32位 ,二进制数1000 0001要在前面补上24位,补上之后也就是 00000000 00000000 00000000 10000001。
00000000 00000000 00000000 10000001 原码、反码、补码(正数的反码和补码跟原码是一样的)
如果将int129强制转换为byte类型的129的话,因为byte类型内存位数为8位,所以在强制转换的时候会把多余的部分去掉,去掉后后为10000001(补码)。10000001第一位为1,所以为负数。因为负数的补码是在其反码的基础上+1,所以反码为10000000。负数的反码是符号位保持不变,其余位取反。第一位为1,故为负数;所以其反码10000000的原码为11111111。第一位符号位,1代表负,其余七位的二进制数的1111111转换为十进制为127,所以最终结果为-127。
精度丢失:在计算机当中,计算浮点数的时候可能不会计算出准确值。计算机中以二进制的方式存储或计算,当你计算浮点数的时候会将其他进制的数转换为二进制去计算,所以会出现精度丢失。不能用浮点数去计算钱等。
对于基本数据类型的取值范围,如果我们已经忘记了,可以用包装类里面已经定义好的一些常量来进行打印输出即可知道基本数据类型的取值范围。
例如byte 获取内存位数 Byte.SIZE
获取最大值 Byte.MAX_VALUE
获取最小值 Byte.MIN_VALUE