JavaSE基础补充

23 篇文章 0 订阅


这章是对前面4天的查漏补缺。

break语句的补充

break语句只能用在switch和loop(循环)中:
我们演示一个错误示范:

public class A{
	public static void main(String[] args){
		int a = 10;
		int b = 5 ;
		sum(a,b);
	}
	
	public static void sum(int a, int b){
		int c = a + b;
		break;
	}
}

会发生什么呢?
在这里插入图片描述看了报错信息应该明白了吧。break语句只能用咋子switch或loop中。

java中方法执行过程中内存的变化

在分析之前,我们首先需要知道一个东西——栈!!!
栈是什么?栈是一种数据结构。这种数据结构的特点是:先进后出 或者说是 后进先出。
话不多说直接上图:
在这里插入图片描述往栈中插入元素叫做:压栈/入栈/进栈,英文叫push。此时栈帧指向元素1。在栈中,栈的顶端元素叫栈顶,底端元素叫栈底。注意,栈帧永远指向栈的顶端元素。此时栈中只用一个元素,所以元素1即是栈顶又是栈底。
我们继续压栈。
在这里插入图片描述此时元素2压栈,栈顶元素就变成了元素2并且栈帧也指向了元素2。而元素1则编程了栈底元素。
这里补充一下,只用栈帧指向的元素才具有活动权。即栈帧指向谁,谁就可以活动,其余元素都处于静止状态。
那么假设,现在元素2完成了它的使命。我们这时候不需要它了,我们就要删除它,这个操作叫做:弹栈/出栈,英文叫pop

在这里插入图片描述
此时栈帧就又回到了元素1。元素1也完成使命,那么我们也需要删除它。整个栈的运行就是如此。

现在回到我们的java中方法执行过程中内存的变化。
看图。这是一个简易的JVM内存结构。当然真正的JVM内存结构不止有这三个区域,还有其它的区域。目前我们就研究这三个区域。分别是方法区、堆区和栈。堆区暂时不涉及,后面实例对象才会涉及到。

在这里插入图片描述
方法区中会存储我们的main方法、静态变量、和其它代码片段等。
方法只定义不去调用的话只会存储在方法区当中。只有在调用的瞬间java 虚拟机才会在栈内存当中给该方法分配活动空间。

当我们执行代码的时候。我们首先肯定是从main方法开始。因为main方法是我们整个代码的入口方法。那么此时main方法则会进入栈结构中,即压栈。在这里插入图片描述
此时,假设我们在main方法中调用m1()方法。那么对m1()方法也进行压栈操作。
在这里插入图片描述同理,若是m1中调用了m2()方法,那么m2方法也会压栈。

在这里插入图片描述
按照我们上面所说,栈帧指向的元素才具有活动权,而栈帧永远指向栈顶元素。所以此时只有m2是可以活动的。而当m2方法执行完,则会弹栈,然后栈帧指向m1方法,当m1执行完再到main方法。
在这里插入图片描述
以上就是整个java中方法执行过程中内存的变化。(目前还不涉及堆区)
各位有什么补充的可以下方评论,我会添加上去的!!!
一起努力!!!在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值