程序中的的内存分析

学习了编程语言也有几年的时间了,但是对于编程语言中的语法在电脑内存中的一些调用关系却一直不清楚,直到最近,在学习Java的时候才有所了解。故在此总结。

 

首先先看一段代码:

class Point{
		private double x;
		private double y;
		
		Point(double x1,double y1){
				x=x1;
				y=y1;
			}
			
			public double getX(){return x;}
			public double getY(){return y;}
			public void setX(double i){x=i;}
			public void setY(double j){y=j;}
	}
	
	class Circle{
		private Point o;
		private double radius;
		Circle(Point p,double r){
			o=p;
			radius=r;
			}
			
			Circle(double r){
				o=new Point(0.0,0.0);
				radius=r;
			}
			
			boolean contains(Point p){
					double x = p.getX() - o.getX();
					double y = p.getY() - o.getY();
					if(x*x+y*y> radius + radius )return false;
					else return true;
				}
				
			public void setO(double x, double y){
				o.setX(x);
				o.setY(y);		
				}
				
			public Point getO() {return o;}
			public double getRadius(){return radius;}
			public void setRadius(double r){radius=r;}
			public double area(){
				return 3.14 * radius * radius;
				
				}
		}
		
public class TestCircle{
			public static void main (String arg[]){
				Circle c1=new Circle(new Point(1.0,2.0),2.0);
				Circle c2 =new Circle(5.0);
//略			***********************	
				}
			
				
				
}
当程序执行到“ Circle c1=new Circle(new Point(1.0,2.0),2.0); ”这句话时,程序从内向外逐个解析。

具体在内存中的占用情况如下:

下图中,左边的大的方框表示内存中的栈,而右边代表内存中的堆。

当程序New一个对象的时候,总是先调用该对象的一个构造方法,以此来实现对对象的参数赋值。



图中,左边的大的方框表示内存中的栈,而右边代表内存中的堆,以下各图亦是如此。








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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值