加载中...

什么是面向对象?内存分析是什么?

面向过程和面向对象

面向过程:怎么按步骤实现? //适合简单任务,不需要过多协作的情况下

面向对象:怎么去设计出来? //适合开发大型软件(2w行代码以上)

解决简单问题可以使用面向过程

解决复杂问题:宏观上使用面向对象把握,微观上仍然是面向过程

对象Object
相当于内存块,包含了很多数据

对象和类的概念

类Class可以看作对象的模板

类的写法和调用

public class SxtStu{
	//属性fields
	int id;
	String sname;
	int age;
	
	Computer comp;//计算机
	
	//方法
	void study(){
		System.out.println("study"+comp.brand);
	}
	
	void play(){
		System.out.println("play");
	}
	
	//构建方法。用于创建这类的对象。无参的构造方法可以由系统自动创建
	SxtStu(){
	
	}
	
	//程序执行的入口,必须要有
	public static void main(String[] args){
		SxtStu stu=new SxtStu(); //创建一个对象
		stu.id=1001;
		stu.sname="老王";
		stu.age=18;
		
		Computer c1=new Computer();
		c1.brand="联想";	//品牌
		 
		stu.comp=c1;
		
		stu.play();
		stu.study();
	}
}

内存分析(栈stack、堆heap、方法区method area)

栈stack的特点:

1.栈描述的是方法执行的内存模型,每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口)
2.JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数、局部变量)
3.栈属于线程私有,不能实现线程间的共享
4.栈的存储特性是"先进后出,后进先出"
5.栈是由系统自动分配,速度快!栈是一个连续的内存空间

堆heap的特点:

1.堆用于存储创建好的对象和数组(数组也是对象)
2.JVM只有一个堆,被所有线程共享
3.堆是一个不连续的内存空间,分配灵活,速度满!

方法区(又叫静态区)的特点:

1.JVM只有一个方法区,被所有线程共享!
2.方法区实际也是堆,只是用于存储类、常量相关的信息!
3.用于存放程序中永远是不变或唯一的内存(类信息【Class对象】、静态变量、字符串常量)

javac SxtStu.java , java SxtStu

posted @ 2021-08-10 05:59  nongeason  阅读(75)  评论(0)    收藏  举报