该代码程序main方法最先被调用最后结束
ma1方法最后调用最先结束
代码是遵循自上而下依次执行上一行代码必须上一行代码执行完毕后才会执行下一行
关于return
返回值类型不是void 的时候
要求方法必须保证百分之百执行return 值;"这样的语句来完成值得返回."
没有这个语句编译报错
带有return关键字的Jana语句只要执行,所在的方法执行结束
在同一个作用域中,return语句下面并不能编写任何代码,
因为这些代码永远都执行不到所以报错
在返回类型是void的方法当中主要是为了用来结束当前方法.
方法在执行过程当中,在jvm中的内存是如何分配的,内存是如何变化的?
1.方法只定义不调用是不会执行的,并且在jvm中也不会给该方法分配
"运行所属"的内存空间.只有在调用这个方法的时候才会动态的给这个
方法分配所属的空间.
2在jvm内存划分上有这样三块主要的内存空间(除了这三块空间还有其他的内存空间)
方法区内存
堆内存
栈内存
3.关于栈数据结构
1.栈:stack,是一种数据结构
2.数据结构反应的是数据的存储形态
3.数据结构是独立的科学,不属于任何编程语言的范畴,
在大多数编程语言当中要使用数据结构.
4.常见的数据结构(数组,队列,栈,链表,二叉树,哈希表)
5.方法代码片段存在哪里?方法执行的时候执行过程的内存在那里分配
方法片段属于.class字节码文件的一部分,字节码文件在类加载的时候将其放到
代码区域当中.所以jvm中的三块主要的内存空间中的方法区内存最先有数据,存放代码片段
代码片段虽然在方法区内存当中只有一份,但是可以被重复调用,每次调用这个方法的时候,需要个该方法
分配独立的活动场所,在栈内存分配中
6.方法在调用的瞬间,会给该方法分配内存空间,会在栈中发生压栈动作,方法执行结束后,给该方法,分配的内存空间
全部被释放,此时发生弹栈动作.
压栈:给该方法分配内存
弹栈:释放该方法的内存空间
7局部变量发生在方法体中声明,局部变量运行阶段内存在栈中分配
package javabao;
public class Methods3 {
public static void main(String[] agrs){
System.out.println("拒绝迪丽热巴76次");
ma();
System.out.println("癞格齙抱青蛙,长得丑玩得花");
/*boolean c=take(10,8);int无法转换为boolean
System.out.println(c);*/
long c=take(20,8);//可以byte,shot,long会自动转换为int类型
System.out.println("c");
System.out.println(take(10,8));//80
System.out.println(ma3());
ma4();
/*
*依次执行输出顺序
* 拒绝迪丽热巴76次
* 你是个什么舔狗吗
* 打败李小龙二十次
* 和拜登单挑46次
* 沸羊羊
* 癞格齙抱青蛙,长得丑玩得花
*/
}
public static void ma(){
System.out.println("你是个什么舔狗吗");
ma1();
System.out.println("沸羊羊");
}
public static void ma1(){
System.out.println("打败李小龙二十次");
System.out.println("和拜登单挑46次");
}
public static int take(int a,int b){
//return;不兼容的类型: 缺少返回值
//return true;不兼容的类型: boolean无法转换为int
//不写return java: 缺少返回语句
return a*b;
}
public static int ma3(){
/*报错缺少java: 缺少返回语句if是一个控制语句
*判断exg是否大于6,大于6才有返回值小于6就没有
* 返回值所以需要在{}外面加一个return,
* int exg = 9;
* if(exg>6){
* return 1;
* }
* */
int exg = 9;
if (exg > 6){
return 1;
}
return 10;
}
/*
java: 不兼容的类型: 意外的返回值
public static void ma4(){
return 10;
}*/
public static void ma4(){
return ;//出现在void方法中主要是为了终止方法的执行
}
public static void ma5(){
for (int i=1;i<10;i++){
if(i==5){
return;//终止的是ma5方法
//break;//终止的是for循环
}
System.out.println("i的值"+i);
}
System.out.println("空空思密达");
}
}
package javabao;
public class Methods4 {
public static void main(String[] agrs){
int a=10;
int b=20;
sum(a,b);
System.out.println(sum(a,b));
}
public static int sum(int i,int j){
int c=i+j;
int num=5;
a(c,num);
return a(c,num);
}
public static int a(int x,int y){
int consult=x/y;
return consult;
}
}
方法内存分析图