美文网首页
Java中的基本型别

Java中的基本型别

作者: 刚子来简书啦 | 来源:发表于2020-09-22 10:48 被阅读0次

在Java的世界里,万事万物皆对象,reference是操控对象的钥匙。堆(Heap)用来放置所有的Java对象。

基本型别

在“对象型别”之外,有一种型别应该被特别对待,那就是“基本型别”。之所以应该被特别对待,因为如果通过new来产生这一类极小、极简单的变量,会因“new将对象置于heap之上”而效率不彰。因此对于此类变量,Java采用C/C++的方式,也就是不以new分配其空间,而是产生一种所谓的“automatic”变量(不再是reference),来解决效率问题。此类变量直接存放数据值,并置于stack,因此在空间的分配和释放上,效率好很多。

每一种基本型别所占的空间大小,在Java里头是确切不变的。它们的大小不会“随着机器的硬件架构而改变”。这是Java程序具备高度可携性的原因之一。

基本类型 大小 最小值 最大值 外覆类型
boolean
char
byte
short
int
long
float
double
void

高精度计算

Java提供了两个用来进行高精度计算的class:BigInteger和BigDecimal。虽然它们勉强可以视为外覆类,但两者都没有对应的基本类型。不过,这两个class所提供的操作方法,和基本型别所能执行的十分相像。所有可在int或float身上做的事情,都可实行欲BigInteger和BigDecimal身上。

BigInteger所提供的整数支持任意精度。BigDecimal提供任意精度的定点数(fixed-point numbers)。所谓定点数,是指小数点位置固定,或称小数位数固定数。对应的是所谓的浮点数(floating-point numbers)。

Java中的数组

Java的主要目标之一是安全。Java保证数组一定会被初始化,而且程序员对数组的访问,无法逾越范围。这种“对访问范围的检查”所付出的代价便是:每个数组得额外多出一点空间,并且得在执行时期对数组索引值进行检查。Java认为,这么做所带来的安全性和生产力提升是值得的。

当产生某个存储对象的数组时,真正产生的其实是个存储references的数组。此一数组建立之后,其中的每一个reference皆会被自动设置为某个特殊值。该值以关键字null表示。当Java看到null值,便将这个reference视为“不指向任何对象”。使用任何reference之前,必须先将某个对象指派给它。如果使用了某个reference而其值为null,便会在执行期发生错误。

也可以产生一个数据,用来存储基本型别。编译器一样保证初始化动作的必然进行:这一次它会将数组所占的内存全部清为零,而不再作为reference去指定null。

关键字static

一般而言,当设计某个class时,其实就是在描述其对象的外观长相及行为举措。除非以new关键字来产生对象,否则并不存在任何实质的对象。产生对象之际,存储空间才会分配出来,其函数才能供外界使用。

但是有两种情况,是上述方式所无法解决的。第一种是,希望不论产生了多少个对象,或不存在任何对象的情形下,那些特定数据的存储空间都只有一份。第二种情况是,希望某个函数不要和class object绑在一起。通过关键字static,便可以处理这两种情况。

当把某个数据成员或函数声明为static,它就不再被局限于所属的class object上。所以,即使没有产生任何class object,外界还是可以调用其static函数,或是取用其static data。一般情形下,你得产生某个对象,再通过该对象取用其数据和函数。所以,non-static数据/函数必须知道它们隶属于哪一个对象,才有办法运作。由于使用static函数前并不需要先产生任何对象,所以在static函数中不能“直接”取用non-static数据/函数。如果只是单纯地直接调用non-static函数,而没有指定某个对象,是行不通的,原因是non-static数据/函数总是得和特定的对象捆绑在一起。

相关文章

  • Java中的基本型别

    在Java的世界里,万事万物皆对象,reference是操控对象的钥匙。堆(Heap)用来放置所有的Java对象。...

  • V语言学习笔记-16类型别名

    type alias 类型别名 可以在某一个类型的基础上,定义类型别名 基于基本类型-定义类型别名 基于结构体类型...

  • mybatis 02 别名与工具类

    基本数据类型别名 自定义别名: 在 “myBatis-config.xml” 中添加标签...

  • Kotlin学习(十四): 类型别名(Type aliases)

    接下来学习Kotlin中的注解(Annotations)和类型别名(Type aliases)。 类型别名(Typ...

  • Java中必须了解的常用类

    学习了解# Java中的包装类 Java中基本类型和包装类型之间的转换 Java中基本类型和字符串之间的转换 使用...

  • Typescript进阶

    类型别名 类型别名用来给一个类型起个新名字。 上例中,我们使用 type 创建类型别名。 字符串字面量类型 字符串...

  • int 和Integer的区别

    int是java的8中基本类型中的整型,java为基本类型都提供了封装类,Integer就是java为int提供的...

  • Java中的基本语法

  • java中的基本算法

    整理一下常用的又基础的算法。由于平时的项目比较简单,很少用到算法,但工作不只是眼前的苟且,还有诗和远方。 1.链表...

  • Java基础知识大全

    1. JAVA基础 1.1 Java基本类型有哪些?它们分别占用多少字节? Java中的基本类型包括: byte(...

网友评论

      本文标题:Java中的基本型别

      本文链接:https://www.haomeiwen.com/subject/qodephtx.html