java运行时内存分配
JVM将内存区域划分为五个
-
寄存器: 跟cpu打交道
-
本地方法栈: 使用windows的功能
-
方法区:存储方法 class文件
-
栈: 运行方法的,变量...循环
-
堆: new 对象
栈与堆的区别
-
存储区别: 栈运行方法 堆存储实体(对象)
-
默认值: 栈内存没有默认值,使用变量手动赋值
堆内存有默认值 -
生命周期: 栈内存使用完毕后,立即释放,生命周期相对较短
堆内存使用完毕后,等待JVM收取垃圾,生命周期相对较长
运行时如何划分
-
常量池存放与堆中
-
new出来的对象也存放与堆中,栈中存放的是指向这个对象的地址
-
创建基本类型时,直接在栈中存放
java基本类型
public class HelloWorld {
// 全局变量,静态变量
static char hobby = '女';
// 实例变量,成员变量,对象变量
private int age;
private double weight;
private double height;
public static void main(String[] args) {
//基本数据类型
//长整短整照常整,单精双精不够精,布尔byte单字符,一二四八对对出
// 一个字节
byte a = 0;// 局部变量,使用需初始化
boolean b;
// 两个字节
short c;
char d;
// 四个字节
int f;
float e=1.35f;
// 八个字节
double g=1.0;
long h;
}
}
对于单双精度浮点数相加问题会出现不精确的情况,判断
//单双精度相加不精确
float e=1.35f;
double g=1.0;
//是否为精确:数字(n*2)*2..*2最终结果为整数就可以精确
System.out.println(e+g);