Java经典面试题 :什么是Java对象(一)

在java面试过程当中,面试官的第一个问题通常是“什么是Java对象”那么请大家思考一下怎么回答这个问题?

视频讲解

从Java虚拟机的内存结构去了解什么是对象

在这里我简单的给大家介绍一下常见的几个Java虚拟机的内存结构,以及他们的作用。因为很多同学并不具备深刻了解Java虚拟机的能力,所以这篇文章只是对Java虚拟机做初步的了解!
Java经典面试题 :什么是Java对象(一)_第1张图片

1.方法区(简单介绍)

我们在学习Java编程的时候,需要首先去实现一个叫做xxx.java的文件(也就是我们的源文件),里边写有我们将要运行的代码,之后我们通过使用Javac命令将其编译成二进制的xxx.class文件。
Java经典面试题 :什么是Java对象(一)_第2张图片
但是当前我们运行好的xxx.class文件(二进制代码)还是在磁盘上,要想运行程序,必须将其加载入内存,那么我们可以使用 java 命令将其加载到内存当中!
Java经典面试题 :什么是Java对象(一)_第3张图片
我们的数据不可能在内存当中随意乱放,最总这些数据将会被保持在 java虚拟机当中。
Java经典面试题 :什么是Java对象(一)_第4张图片
Java经典面试题 :什么是Java对象(一)_第5张图片

2.虚拟机栈(简单介绍)

当我们的二进制程序被加载入方法区后,我们的程序也将会被执行,假设我们的程序时这样的!
Java经典面试题 :什么是Java对象(一)_第6张图片
程序执行第一步:永远是 main 方法入栈
Java经典面试题 :什么是Java对象(一)_第7张图片
第二步:局部变量表达
Java经典面试题 :什么是Java对象(一)_第8张图片
第三步: 调用方法,方法入栈
Java经典面试题 :什么是Java对象(一)_第9张图片
第四步:局部遍历表达
Java经典面试题 :什么是Java对象(一)_第10张图片
第五步:调用println();方法进行输入
。。。。。。
总结以下:Java虚拟机栈中的每一个栈帧(就是我们的方法)的入栈和出栈的过程,就是我们方法从调用到执行完毕的过程!
Java经典面试题 :什么是Java对象(一)_第11张图片

3.堆内存(简单介绍)

在这里插入图片描述
在堆内存当中存储我们Java创建的对象和数组。(这里我们主要讲解对象实例)
Java当中有多种创建对象的方式,一般常用的是new,new是Java的一个关键字,其含义是:在堆内存当中开辟内存空间!
比如我们在创建对象和数据的时候都会用到new关键字!
Java经典面试题 :什么是Java对象(一)_第12张图片
假设现在有一个Student类,当我们创建对象的时候堆内存里边发生了什么?
Java经典面试题 :什么是Java对象(一)_第13张图片
那么我们就可以用new关键字来创建对象!

public static void main(String[] args){
	Student s = new Student();
}

那么我们来看一下内存的结构
第一步:main方法入栈,同时局部变量 s 进行表达,同学们注意:s 是Student类型的
Java经典面试题 :什么是Java对象(一)_第14张图片
Java经典面试题 :什么是Java对象(一)_第15张图片
第二步:new 关键字表达,在堆内存当中开辟内存空间!0xb0是该内存空间的地址
Java经典面试题 :什么是Java对象(一)_第16张图片
第三步: Student()构造函数表达!
Java经典面试题 :什么是Java对象(一)_第17张图片
Java经典面试题 :什么是Java对象(一)_第18张图片
第四步:=是赋值操作,将堆内存当中该对象的地址值赋给s局部变量.
Java经典面试题 :什么是Java对象(一)_第19张图片
那么说到现在我们应该能够理解什么是Java的对象即:
“Java对象是在堆内存当中的内存空间”

你可能感兴趣的:(java基础,面试,java,java,开发语言)