基础介绍
本文主要分析Java对象在内存中的分析占用情况,将从对象,Map,数组,字符串等全方面来阐述相关内容。 Java是面向对象语言,有着一切皆为对象之称,但是存储基础数据的类型,在设计之初并非对象,比如存储数字,字符,小数等,因此有了基本类型,融合到了Java,使得开发更为方便。
初学Java的时候,我们知道基础类型有以下几种
类型 | 描述 | 字节数 |
---|---|---|
short | 无符号整数,最大值2^15-1(32767),最小值-2^15(-32768) | 2字节 |
byte | 无符号整数,最大值2^7-1(127)最小值是-2^7(-128) | 1字节 |
int | 无符号整数,最大值2^31-1(2147483647)最小值是-2^31(-2147483648)Java声明整数默认为int | 4字节 |
long | 无符号整数,最大值2^63-1(9,223,372,036,854,775,807)最小值是-2^63(-9,223,372,036,854,775,808)声明必须加L(l) | 8字节 |
float | 单精度,在存储大浮点数组的时候节省空间,声明必须加F(f) | 4字节 |
double | 双精度,Java小数默认为double类型,声明可加D(d)或者 不加 | 8字节 |
boolean | 记录是否,只有true或者flase俩种情况。默认值为false。 | 1字节 |
char | 单一的Unicode字符,最小值为\u0000(0),最大值为\uffff(65535),可以存储任何字符 | 2字节 |
除了以上常用的基础类型以外,Java针对字符串,超级大整数也做了相关处理,提供了类来进行调用。
类型 | 描述 | 字节 |
---|---|---|
String | String用于存储字符串,不限制大小,但是因为String是不可变的,因此改变String的字符串其实为改变地址。 | 与字符串数目有关系 |
StringBuilder | 可变字符串,可以操作同一个字符串增加或者移除等操作,线程安全使用StringBuffer | 与字符串数目有关系 |
BigDecimal | 通过BigDecimal num1 = new BigDecimal(“1221”);赋值,计算加减乘除,加法add,减法substract,乘法multiply,除法divide,绝对值abs,计算时注意保留小数 |
对象存储
在Java中我们调用一个方法的时候,会有俩种途径,通过对象调用其所属方法,或者通过类调用其静态方法。其实,无论是对象,或者类都属于对象,也就是我们调用的时候,都需要找到对象,才能够调用对象所属方法。 那么,当我们创建一个对象的时候,Java做了哪些操作呢?存储了哪些内容呢? 我们知道,使用一个类的时候,该类是一定要先必加载字节码的,否则无法使用,这是第一步。 第二部,当我们在调用方法的时候,需要拿到调用方对象,也就是我们必须是创建