JAVA_4

一、JAVA内存总体架构

  1. 多个线程里面有:程序计数器、虚拟机栈、本地方法栈
  2. 方法区:运行时常量池
  3. 堆:新生代和老生代,用于做对象的管理
  4. 直接内存和其他内存

二、栈的特点如下

  1. 栈描述的是方法执行的内存模型,每个方法被调用都会创建一个栈帧
  2. 先进后出,后进先出
  3. 栈系统自动会分配,速度快,是连续内存空间
  4. jvm为每个线程创建一个栈
  5. 栈为线程私有,不可共享

三、堆的特点如下

  1. 堆用于存储创建好的对象和数组(也是对象)
  2. 堆是一个不连续的内存空间,分配灵活,速度慢(需要查找)
  3. jvm只有一个堆,所有线程共享

四、方法区(又叫静态区,也是堆)特点如下

  1. 方法区是java虚拟机规范,可以有不同的实现,jdk8是元数据空间和堆结合起来
  2. 方法区也是堆,只是用于存储类、常量相关的信息
  3. 用来存放程序中永远不变或唯一的内容
  4. jvm只有一个方法区,所有线程共享

五、this的本质

  1. this的本质就是当前对象的地址,普通方法中指向调用该方法的对象,构造方法中指向初始化对象
  2. this可以调用重载的构造器!这种方法必须位于构造方法第一行,例如:之前方法已经定义this.id=id;this.name=name;再重载构造器中可以直接this(id,name)不用重复声明。
  3. 作为方法链式调用:通过在方法中返回"this",可以实现。这在建造者模式和流式API中很常见

六、static的本质

用static声明的变量为静态成员变量,也称为类变量。

  1. 它从属于类,只有一份,在类被载入时显示初始化。
  2. 一般用 类名.类属性/方法 来调用
  3. 在static方法中不可直接访问非static成员,因为非static成员属于对象

七、静态初始化块

  1. 构造方法用于对象的初始化!
  2. 静态初始化块,用于类的初始化操作!
  3. 可以初始化static属性
  4. 在静态初始化块中不能直接访问非static成员
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值