首页 / JAVA / Java中数据类型的分类
Java中数据类型的分类
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java中数据类型的分类,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3570字,纯文字阅读大概需要6分钟。
内容图文
![Java中数据类型的分类](/upload/InfoBanner/zyjiaocheng/669/52accf3bb02142259865b2828ff753cb.jpg)
我们知道Java是强类型语言,那么肯定对应的也就有弱类型语言,以下介绍强类型语言与弱类型语言的区别:
强类型语言:
强类型语言也就是强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过转换,那么该变量就永远是此数据类型了。(如:定义一个整型变量叫“a”,程序也只会认为“a”这个变量是整型,并且不可能把它来当作字符来处理。)强类型语言也是类型安全的语言。
弱类型语言:
弱类型语言也就是同强类型语言相对的语言,也就是说它的数据类型是可以被忽略的语言。它与强类型语言定义的语言完全是相反的,它的一个变量可以被定义为多种数据类型,而且不用进行转换。(如:定义一个变量“a”,这个“a”可以被赋值整型,又可以被赋值字符型,还可以被赋值为其他类型。)弱类型语言对应的是类型不安全的语言。
强类型语言在速度上可能会稍逊色于弱类型语言,但是强类型语言带来的严谨性能够有效的避免许多错误的发生。(另外,判断一个语言是不是类型安全的与该语言是不是动态类型的没有关系。)
(如:Java是静态语言,是强类型语言(是类型安全的语言)。Python是动态语言,是强类型语言(是类型安全的语言)。JavaScript是动态语言,是弱类型语言(是类型不安全的语言)。)
Java中的数据类型:
Java中的数据类型分为两类:
基本数据类型(Primitive Type)
引用数据类型(Reference Type)
基本数据类型:
基本类型共有八种,其中包括六种数值型与两个非数值型。基本数据类型的信息如下:
数据类型 | 大小(单位:bit/位) | 所属包装类 | 最小范围 | 最大范围 |
byte | 8 | java.lang.Byte | -128 | +127 |
short | 2byte = 16 | java.langShort | -32768 | +32767 |
int | 4byte = 32 | java.lang.Integer | -2^31 | +2^31-1 |
long | 8byte = 64 | java.lang.Long | -2^63 | +2^63-1 |
float | 4buye = 32 | java.lang.Float | -3.4 * 10^38 | +3.4 * 10^38 |
double | 8byte = 64 | java.lang.Double | -1.7 * 10^308 | +1.7 * 10^308 |
char | 2byte = 16 | java.lang.Character | 0 | 65535 |
boolean | 所占大小不明确 | java.lang.Boolean | false | true |
(注解:内存的存储最小单位是“bit/位”,1byte/字节 = 8bit/位)
(注意:在Java中定义的八种基本数据类型中,除了其它七种类型都有明确的内存占用字节数外,boolean类型没有给出明确的占用字节数,因为对虚拟机来说根本就不存在 boolean 这个类型,在虚拟机中boolean类型的值:false/true是用0/1来表示的,所以不确定。原因如下:)
大小为1bit:
boolean类型的值只有true和false两种逻辑值,在编译后会使用1和0来表示,这两个数在内存中只需要1位(bit)即可存储,位是计算机最小的存储单位。
大小为1byte:
虽然编译后1和0只需占用1位空间,但计算机处理数据的最小单位是1个字节,1个字节等于8位,实际存储的空间是:用1个字节的最低位存储,其他7位用0填补,如果值是true的话则存储的二进制为:0000 0001,如果是false的话则存储的二进制为:0000 0000。
大小为4byte:
来源是《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硬件层面),具有高效存取的特点。所以boolean类型没有给出精确的定义,《Java虚拟机规范》给出了4个字节,和boolean数组1个字节的定义,具体还要看虚拟机实现是否按照规范来,所以1个字节、4个字节都是有可能的。
引用数据类型:
引用类型分别有“类”、“接口”、“数组”。
可能有的人会问了,那Java中就没有字符串类型吗,只有单字符类型?
答案:不是的,Java中也有字符串类型,而且与C/C++一样都是String,只不过在Java中String(字符串类型)是作为一个类来实现的,也就是说,Java中String类型是属于引用类型的。
可以这样理解:只要不是基本数据类型的八种,以外的都是属于引用数据类型的。
内容总结
以上是互联网集市为您收集整理的Java中数据类型的分类全部内容,希望文章能够帮你解决Java中数据类型的分类所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。