第一课 JAVA语言基础

一、Java程序的基本结构

一个Java程序的基本结构大体可以分为包、类、main()主方法、标识符、关键字、语句和注释等,如下图:

 二、标识符和关键字

标识符:一个名字,用来标识类名、变量名、方法名、数组名、文件名的有效字符序列。

关键字(保留字):Java语言中已经被赋予特定意义的一组单词,不可作为标识符使用

规则由字母、数字、下划线和美元符号组成,第一个字符不能为数字,并且区分大小写,不能为关键字或保留字。

三、Java在内存中运行详解

我们主要了解下 方法区、堆、 *栈、*这三个区域。

2.方法区:
方法区是一块所有线程共享的内存区域
保存系统的类信息,比如,类的字段,方法,常量池等等。

方法区的大小决定了系统可以保存多少个类,如果系统定义了太多的类,导致方法区溢出,虚拟机同样会抛出内存溢出的错误

3.堆:
用来存放动态产生的数据,比如new出来的对象。注意创建出来的对象只包含属于各自的成员变量,并不包括成员方法。因为同一个类的对象拥有各自的成员变量,存储在各自的堆中,但是他们共享该类的方法,并不是每创建一个对象就把成员方法复制一次。在堆中只会存储成员方法的地址,在调用的时候,根据地址去方法区中执行对应的成员方法。

4. 栈:(先进后出)
栈生命周期与线程相同。启动一个线程,程序调用函数,栈帧被压入栈中,函数调用结束,相应的是栈帧的出栈。

栈帧由局部变量表,操作数栈,帧数据区组成。

局部变量表:存放的是函数的入参,以及局部变量。

操作数栈:存放调用过程中的计算结果的临时存放区域。

帧数据区:存放的是异常处理表和函数的返回,访问常量池的指针。

5、一个程序在内存中执行的过程。

上图的执行流程

1.从 disk 中将 MainApp.class 加载到 jvm 的方法区中。

2.执行 main 方法,将该 main 方法中包含的变量和函数,压到栈中。

3.开始执行 main 方法中的指令,创建一个 animal 对象, 将 new 出来的 animal 对象存储到堆中,animal 引用指向堆中的 animal 对象,堆中的 animal 对象指向方法区中的 Animal 类。

4.继续执行 main 方法中的指令,调用 animal 对象中的 printName() 方法,这时 animal 应用调用 animal 对象, animal 对象找到方法区的 Animal 类中的 printName() 字节码信息,根据该描述信息,开始执行 printName方法。
————————————————
版权声明:本文为CSDN博主「不码不成才」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/g123ggf/article/details/103220928

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值