首页 > 编程知识 正文

八大基本数据类型大小,列举java八种基本数据类型

时间:2023-05-06 01:44:20 阅读:45936 作者:3847

八种基本数据类型自Java发布以来,基本数据类型是Java语言的一部分,***byte、short、int、long、char、float、double、boolean*** .当然

例如:

布尔是多少字节,char可以表示汉字等等

其中8种类型又可分为4种。 也就是说,是下一个区分。

整形: byte,short,int,long

字符类型: char

浮点型:浮动,双精度

布尔型:布尔型

在详细介绍之前,Java中最小的计算单位为***字节**,1字节=8位(bit )。 以下是每个基本类型的默认值

数据类型的默认值byte0short0int0long0l float 0.0 f double 0.0 d char‘ u 0000’string (oranyobject ) nullbooleanfalse在此更为流行。 java编程语言是静态类型的编程语言,而且

int test=1; 现在,我告诉了程序test变量已经存在,是int类型,初始值是1。 java的变量类型大致分为两种,一种是基本类型,也就是说就像我们今天学到的一样,另一种是引用类型。

为什么需要基本型其实在学习这一节之前需要一点基本的知识。 那是说唱型的。 请看我写的这篇文章的Java数据类型——包装类。 如果Java在8个基本的基础上提供了包装器类,并且在文章中知道Java是面向对象的编程语言,那么Java为什么提供基本的数据类型呢? 是否存在不属于这种对象类型的数据类型?

这是因为Java在创建对象方面成本高昂,而且基本数据类型非常广泛。 与String一样,我们知道Java对String进行了很多优化。 其中,Java为提高程序效率提供了基本数据类型。 稍后,您将学习Java也在基本数据下提供缓存。

需要注意的是,包装类型都是不变的

1 .在整数类型Java中,整数类型数据属于有符号数。 也就是说,第一位为0表示正整数,第一位为1表示负整数。 在计算机上是负数由补码表示,补码怎么计算?

补码=源码取反 + 1;

例如:

2 )计算机显示为00010110,

-22,反转: 11101001,正1:11101010

Byte byte是Java的整数类型,长度为1字节8bit,值为10000000(-128 )到01111111 ) 127 ),变量初始化的默认值为0,包装类byte

Short short是Java的整数类型,长度为2字节16bit,值为10000000000000(32768 )到01111111 11111111(32767 ),变量初始化的默认值为0,包装类short

int int是Java的整数,长度为4字节32bit,取-2^31(2、147、483、648 )到2^31-1 ) 2、147、483、647 )之间的值,变量初始化的默认值为

long long是Java的整数,长度为8字节64bit,从-2^63(9、223、372、036、854、775和808 )到2^63-1 ) 9、223、372、036和854

二.浮点型Java中的浮点型数据不能直接用二进制表示,是对实数的近似数据表示,[ IEEE 754 ] (3359 baike.Baidu.com/item/IEEE 754/386922 )

浮点型是Java的浮点型,也称为单精度浮点型,长度为4字节32bit,变量初始化默认值为0.0f,包装类浮点型

包括1. float结构码比特、指数比特、尾数比特三个部分

已编码比特(s )指数比特(e )尾数比特) m )长度1比特8比特23比特说明0表示正数,1表示负数形式为e值范围(0,255 ),指数比特为值),形式为1.M或0.M。 其中E=0时,取1.M,称为范式,e!=0时,取0.M,称为非范式2. float取值范式:

非正式格式:

根据上式可轻松计算的浮动的可取范围如下。

(设最小值、编码比特s为1、指数比特e为255 )。

(最大值是符号比特s为0、指数比特e为255 )

可以取得其间的近似数据。

注意:根据指数位和尾数位的取法不同,NAN有正无限、负无限,但平时很少使用,所以在这里不深

入;同时由于是近似值,因此无法表示金额,表示金额建议使用BigDecimal

double

double属于Java中的浮点型,也叫双精度浮点型,长度为8字节64bit,变量初始化默认值0.0d,包装类Double

1. double结构

包含三部分:符号位、指数位、尾数位

符号位(S)指数位(E)尾数位(M)长度1bit11bit52bit说明0表示正数,1表示负数格式为,E值范围:(0,2047),指数位取值:(,)形式为1.M或0.M。其中当E=0时,取1.M,称为正规形式,当E!= 0时,取0.M,称为非正规形式2. double取值

正规形式:

非正规形式:

根据上面公式很容易计算出double的取值范围为:


(最小值,当符号位S取1,指数位E取2047)


(最大值,当符号位S取0,指数位E取2047)

能取到其间的近似数据。

注意:根据指数位和尾数位的取值不同,还有很多特殊情况,如NAN,正无穷,负无穷,但平时基本不会用到,这里不再深入;同时由于是近似值,因此无法表示金额,表示金额建议使用BigDecimal

三. 字符型 char

char属于java中的字符型,占2字节16bit,可以赋值单字符以及整型数值, 变量初始化无默认值,包装类Character。

如:

char a = ‘a’;

char a = ‘中’;

char a = 12; // 取值范围0~65536,因为char类型在ASCII字符编码中,有对应的数值,可直接做运算,输出字符表中对应的字符

@Testpublic void testChar() { //任意单个字符,加单引号。 char a1 = 'a'; //任意单个中文字,加单引号。 char a2 = '你'; //整数。0~65535。十进制、八进制、十六进制均可。输出字符编码表中对应的字符。 char a3 = 114; System.out.println(a3);}

还有一点就是char 类型支持数学运算,背后的原理就是char 可以转化成对应的数字,然后数字计算之后,又可以对应到字符表中的字符,所以运算结果就是新的字符,下面给了一个截图,给大家看一下char 类型的运算结果是什么

可以看出运算的结果是int 类型,只不过这个int 类型要想赋值给char ,还有一个范围的要求0~65536

还有一点就是,我们经常习惯在做字符串拼接的时候使用+ 所以xsdyx想拼接两个字符的时候,不能直接使用+ 拼接,因为那是加法运算对于char 类型,所以你基本上可以把char 类型看成数值类型

@Testpublic void testCharOperation() { char a1 = 'a' + 'b'; System.out.println(a1); String a2 = "a" + "b"; System.out.println(a2);}// 输出结果Ãab

所以当我们得到可以基本上将char 看做数值类型的时候,我们就可以尝试将char 类型和数值类型进行计算,快去试试吧,还是我先试试

@Testpublic void testCharOperation() { char a1 = 'a' + 1; System.out.println(a1);}//输出结果b 四. 布尔型

boolean 仅有两个值true, false,变量初始化默认值false

boolean 到底占几个字节

为什么要问这个问题,首先在Java中定义的八种基本数据类型中,除了其它七种类型都有明确的内存占用字节数外,就boolean类型没有给出具体的占用字节数,因为对虚拟机来说根本就不存在 boolean 这个类型,boolean类型在编译后会使用其他数据类型来表示,那boolean类型究竟占用多少个字节?当然这个时候你就会听到很多种答案

首先我们看一下如何查看其它基本数据类型锁占用的字节大小,因为你经常看到一张图或者表格关于基本类型所占字节的大小,但是你又记不住,哈哈,只要你知道有下面这个方法,下次就有可以不用百度了,自己动手就可以了

System.out.println(Byte.SIZE);// 8System.out.println(Short.SIZE);// 16System.out.println(Integer.SIZE); //32System.out.println(Long.SIZE); //64System.out.println(Character.SIZE); //16System.out.println(Float.SIZE); //64System.out.println(Double.SIZE); //64//System.out.println(Boolean.SIZE); //32

输出结果,但是需要注意的实boolean 的包装类Boolean却没有提供这样的属性

8163264163264

1 bit

理由是boolean类型的值只有true和false两种逻辑值,在编译后会使用1和0来表示,这两个数在内存中只需要1位(bit)即可存储,位是计算机最小的存储单位。

1 byte

理由是虽然编译后1和0只需占用1位空间,但计算机处理数据的最小单位是1个字节,1个字节等于8位,实际存储的空间是:用1个字节的最低位存储,其他7位用0填补,如果值是true的话则存储的二进制为:0000 0001,如果是false的话则存储的二进制为:0000 0000。

4 byte

理由来源是《Java虚拟机规范》一书中的描述:“虽然定义了boolean这种数据类型,但是只对它提供了非常有限的支持。在Java虚拟机中没有任何供boolean值专用的字节码指令,Java语言表达式所操作的boolean值,在编译之后都使用Java虚拟机中的int数据类型来代替,而boolean数组将会被编码成Java虚拟机的byte数组,每个元素boolean元素占8位”。这样我们可以得出boolean类型占了单独使用是4个字节,在数组中又是1个字节。

那虚拟机为什么要用int来代替boolean呢?为什么不用byte或short,这样不是更节省内存空间吗。经过查阅资料发现,使用int的原因是,对于当下32位的处理器(CPU)来说,一次处理数据是32位(这里不是指的是32/64位系统,而是指CPU硬件层面),具有高效存取的特点

Although the java virtual machine defines a boolean type,it only provides very limited support for it.There are no java virtual machine instructions solely dedicated to operations on boolean values. Instead, expressions in the java programming language that operate on boolean values are compiled to use values of the java virtual machine int data type.The java virtual machine does directly support boolean arrays. Its newarray instruction enables creation of boolean arrays. Arrays of type boolean are accessed and modified using the byte array instruction baload and bastore .In Oracle java virtual machine implementation, boolean arrays in the java programming language are encoded as java virtual machine byte arrays, using 8 bits per boolean element .The java virtual machine encodes boolean array components using 1 to represent true and 0 to represent false . Where java programming language boolean values are mapped by compilers to values of java virtual machine type int , the compilers must use the same encoding

其实可以看出这也是Java 在为了高性能上做的付出。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。