日期:2014-05-20  浏览次数:20813 次

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 i) { y = i; }
}

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 args[]) {
  Circle c1 = new Circle(new Point(1.0,2.0), 2.0);
  Circle c2 = new Circle(5.0);
  System.out.println("c1:("+c1.getO().getX()+","
  +c1.getO().getY()+"),"+c1.getRadius());
  System.out.println("c2:("+c2.getO().getX()
  +","+c2.getO().getY()+"),"+c2.getRadius());
  System.out.println("c1 area = "+c1.area());
  System.out.println("c1 area = "+c2.area());
  c1.setO(5,6);
  c2.setRadius(9.0);
  System.out.println("c1:("+c1.getO().getX()+","
  +c1.getO().getY()+"),"+c1.getRadius());
  System.out.println("c2:("+c2.getO().getX()+","
  +c2.getO().getY()+"),"+c2.getRadius());
  System.out.println("c1 area = "+c1.area());
  System.out.println("c1 area = "+c2.area());
   
  Point p1 = new Point(5.2, 6.3);
  System.out.println(c1.contains(p1));
  System.out.println(c1.contains(new Point(10.0,9.0)));
   
  }
}


------解决方案--------------------

------解决方案--------------------
这个好像尚学堂的视频里有讲啊 有内存分析的啊
------解决方案--------------------
看来都是看尚学堂长大的,我告诉你,简单内存分析会了就行了,
别再心里留下阴影就行了。既然这个问题你遇到了就搞定他,以后别再
分析了,关键是能理解面向对象就行了,OK?