简单介绍一下java的工作原理以及jvm的基础概念
JVM工作原理
一、Java运行原理
说到java首先我们会想到它是一种编程语言,实际上java 是一种编程技术,它包括了四个方面Java编程语言、Java类文件格式、Java虚拟机和Java应用程序接口(Java API)。它们的关系如下图
所示:
二、JVM的基础概念
JVM的中文名称叫Java虚拟机,它是由软件技术模拟出计算机运行的一个虚拟的计算机。
我们都知道Java的程序需要经过编译后,产生.Class文件,JVM才能识别并运行它,JVM针对每个操作系统开发其对应的解释器,所以只要其操作系统有对应版本的JVM,那么这份Java编译后的代码就能够运行起来,这就是Java能一次编译,到处运行的原因。
JVM的组成部分
JVM 由类加载器子系统、运行时数据区、执行引擎以及本地方法接口组成, 如图所示。
成员变量,局部变量,静态变量三者的区别
静态变量和成员变量的区别:
-
A:所属不同:
1,静态变量:属于类,类变量
2,成员变量:属于对象,对象变量,实例变量 -
B:内存位置不同
1,静态变量:方法区的静态区
2,成员变量:堆内存 -
C:生命周期不同
1,静态变量:静态变量是随着类的加载而加载,随着类的消失而消失
2,成员变量:成员变量是随着对象的创建而存在,随着对象的消失而消失 -
D:调用不同
1, 静态变量:可以通过对象名调用,也可以通过类名调用
2, 成员变量:只能通过对象名调用
关于静态变量代码如下:
//全局变量本身就是静态存储方式,所有的全局变量都是静态变量
function static_global(){
global $glo;
$glo++;
echo $glo.'<br>';
}
static_global(); //1
static_global(); //2
static_global(); //3
echo $glo . '<br>'; //3
关于成员变量的代码如下
public class Person {
String name;
String Sex;
int age;
double Height;
public static void main(String arges[])
{
Person p=new Person();
p.name="小黄";
p.Sex="男";
p.age=20;
p.Height=1.7;
System.out.println("姓名:"+p.name+",性别"+p.Sex+",年龄:"+p.age+",年龄:"+p.Height);
}
}
成员变量和局部变量的区别:
-
A:在类中的位置不同
1,成员变量:在类中方法外
2,局部变量:在方法定义中或者方法声明上 -
B:在内存中的位置不同
1,成员变量:在堆内存
2,局部变量:在栈内存 -
C:生命周期不同
1,成员变量:随着对象的创建而存在,随着对象的消失而消失
2,局部变量:随着方法的调用而存在,随着方法的调用完毕而消失 -
D:初始化值不同
1,成员变量:有默认初始化值
2,局部变量:没有默认初始化值,必须定义,赋值,然后才能使用。
public class Test {
static int i=1;
{
System.out .println(i);
i=9;
System.out .println(i);
}
public static void main(String[] args) {
new Test();
}
}
结果:1
9 i为全局变量
注意事项:
局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。