写在前面,在写这边博客前查了很多资料,只是站在巨人的肩膀上,自己总结了一些自己常用的知识,想给自己和他人一个正确的参考,本人能力有限,有错误的地方请批评指正,不吝赐教。

一、Java 的 8 大基本类型

  • bit: Binary digit(二进制数位)的缩写,意为“位”或“比特”,是计算机运算的基础,计算机中最小的存储单元,不能够单独寻址 ;一般用0和1表示 。
  • byte: 字节,是计算机文件大小的基本计算单位,最小的可寻址存储单元;

SECONDS java 得单位 java最基本的单位_SECONDS java 得单位

类型

占用存储空间

数值范围

备注

byte

1字节

-128~127

所有基本数据类型使用前必须初始化

short

2字节

-215~215-1

int

4字节

-231~231-1

long

8字节

-263~263-1

float

4字节

-3.403E38~3.403E38

double

8字节

-1.798E308~1.798E308

char

2字节

0~216-1

boolean

true或者false

二、JVM 变量存放的地址

SECONDS java 得单位 java最基本的单位_SECONDS java 得单位_02


在方法中声明的变量,即局部变量,每当程序启动时,JVM 会为该程序 main() 方法在虚拟机栈中申请一块内存建立一个方法栈,其方法中声明的变量就放在该栈中,不论是基本数据类型还是引用类型,他们都会先在栈中分配一块内存;对于基本类型来说,这块区域包含的是基本类型的内容;而对于引用类型来说,这块区域包含的是指向真正内容的指针,真正的内容被分配在堆上。当方法执行结束 JVM 会释放方法栈,其对应在该方法中声明的变量随着栈的销毁而结束。

在类中声明的变量,即成员变量,当声明的是基本数据类型时,变量及其变量名存放在堆中;引用类型时,其声明的变量存放一个内存地址,该地址指向所引用的对象,引用的变量名和对应的对象仍然放在相应的堆中;成员变量可细分为静态成员变量和普通成员变量,静态成员变量类属于类,类可以直接访问,存储在方法区中;普通成员变量属于类对象,必须声明对象之后,通过对象才能访问,存储在堆中。

三、== 与 equals

==:关系操作符,计算两个操作数之间的关系,返回一个boolean类型的结果。

equals:Object 类的一个方法,用来比较两个对象之间的关系,返回一个boolean类型的结果。

== 比较的是内存地址,equals() 在未重写前和 == 作用一样,在重写后一般判断内存地址指向的对象的内容是否相同。在 Object 类中的 equals() 也是返回 == 进行比较的,所有很多情况下需要类对象重写 equals() 方法。

对于基本类型来说,== 比较的是值是否相等;对于引用类型来说,== 比较的是两个引用是否指向同⼀个对象地址(两者在堆内存地址是否指向同⼀个地方)。

String 类型往往被认为是基本数据类型,开发中使用频率超高,在刚学 Java 时,我以为它也是 Java 的八大数据类型之一,有一次还室友理论了一番,铁定它就是基本数据类型,现在想想,哈哈,可笑。String 类重写了 equals(),逐个比较两个 String 对象的每个字符是否相同。String 类型是特殊的,有个字符串常量池的概念。