java——类与对象

Class1:

类和对象:
JAVA信息首先进入的是方法区,所有的类信息会存入JVM中的方法区内,程序的执行顺序是由栈控制的
线程就是从主方法开始入栈到出栈结束的过程,线程的本质是一个栈
方法执行顺序实例:

public class Test{
	public static void main(String[] args){
		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结束");
	}

	public static void m3(){
		System.out.println("m3开始");
		m4();
		System.out.println("m3结束");
	}

	public static void m4(){
		System.out.println("m4开始");
		m5();
		System.out.println("m4结束");
	}

	public static void m5(){
		System.out.println("m5开始");

		System.out.println("m5结束");
	}

	public static void m6(){

	}
}

出入栈顺序图:
在这里插入图片描述

实例2:

public class Person(){
	public int age;
	public int height;
	public String name;
	public static int flag;
	public static void m1(){}
	public void m2(){}
}

public class PersonTest{
	public static void main(String[] args){
		Person.age = 10;	     //非静态变量,不直接赋予空间,报错
    	Person.flag = 10;		//静态变量,创建时会赋予空间,不报错
		Person.m1();		//静态方法,不报错
		Person.m2();		//非静态方法,报错

	}
}

一个类中的静态方法与变量会提前开辟一个空间,可以直接调用,而非静态方法与变量不会
方法栈图:
在这里插入图片描述

为此新建两个对象person1、person2:

public class PersonTest{
	public static void main(String[] args){
		Person person1 = new Person();
		Person person2 = new Person();
	}
}

此时堆栈图如下:
在这里插入图片描述

整个JVM图如下:
在这里插入图片描述

在方法中声明的变量没有默认值,而在对象中的成员都有默认值,数值类型—0,布尔类型—false,引用类型—null
此时堆内存图实际如下:
在这里插入图片描述

通过下列代码为对象person1、person2赋值:

	person1.age = 21;
			person1.height = 180;
			person1.name = "李明";
			person2.age = 20;
			person2.height = 164;
			person2.name = "李华";

此时堆内存图实际如下:
在这里插入图片描述

类与对象的关系:
类是对象的模板,对象是类的实例。在方法区建立的称为类,栈中储存整个程序的过程以及变量句柄,堆中存放以方法区中类为模板创建的实例对象。而类中的静态变量以及静态方法并不参与实例对象的构造,它是可以被直接调用的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值