java第四章

java初学者笔记——类与对象

一.多种方法调用如何调用栈

1.Java进入方法区,所有方法都存储在JVM内
Test
{
//有个main函数
main
}

Person {
age,
height,
name
}

调用子程序———栈————控制程序执行顺序
多线程就是多个栈

Example1:

public class Test{
	public static void main(String[] aaa){
		System.out.println("main开始");
		m1();
		m2();
		System.out.println("main结束");
	}
	public static void m1(){
		System.out.println("m1开始");
		m3();
		m4();
		System.out.println("m1结束");
	}
	public static void m2(){
		System.out.println("m2开始");
		m4();
		System.out.println("m2_END");
	}
	public static void m3(){
		System.out.println("m3开始");
		m4();
		System.out.println("m3_END");
	}public static void m4(){
		System.out.println("m4开始");
		m5();
		System.out.println("m4_END");
	}public static void m5(){
		System.out.println("m5开始");
		System.out.println("m5_END");
	}public static void m6(){
	}
}
结果:

在这里插入图片描述

首先,第一个main方法压入栈,当没有新的方法调用时,顺序执行,执行完就出栈;当发生方法调用时,将其压入栈进入调用的函数,直到完成main方法。

	public class Test{
	public static void main(String[] aaa){
		int a=9;
		int b=7;
	//main方法中a,b
		if(a>b)   
		{
		   int k1=m1(); //调用m1,a=10,b=6入栈,a改成4 压k=3 结束了 撤销
		}
		for(int i=0;i<2;i++){ //i=0,s=8进入,s出栈,i更改为1,f=8入栈 最后i也出栈
			int s=8;
			if(i==1){
				int f=8;
			}
		}
	}
	
	public static int m1(){
		int a=10;
		int b=6;
		if(a>b){
			a=4;   //在外面声明了a 所以改变了a的值
			int k=3; //消除了k,因为外部没有声明
		}
		else{
		int h=8; //没有用到h
		}
		return a+b;//(a=4)+(b=6)=10
		}
	}
为什么静态可以直接调用,而非静态的方法和成员不可以调用?

因为一个在内存中创建了空间,另一个没有给开辟空间,使用的是空心的。
在这里插入图片描述

二.探寻非静态

非静态处于堆中
类->对象 :抽象,
对象->类:具体实例
类:抽象的 (不占用内存)
对象:具体的 (占用内存)

Person是类,栈中的是句柄 而堆中的是对象
//方法区内一个程序方法整体(例如Public class Person创建的Person,里面包含age、height等方法)是类,以类为模板在堆里创建的个体就是对象。栈中的是引用句柄。

	Person a = new Person();
	Person b = new Person();//声明的对象里面有默认值
	
	int x;
	String y; /没有默认值

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值