一.类的属性:
1.属性(field),或者叫成员变量
2.属性用于定义该类或该类对象包含的数据或者说静态属性 3.属性的作用范围是整个类体 4.**在定义成员变量时,可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化: 数值:0、0.0 字符:\u0000(Unicode编码中对应的0) boolean:false 所有引用类型:null** 5.属性定义格式:[修饰符] 属性类型 属性名 = [默认值];
二.程序执行过程的内存分析
import java.util.Scanner; public class Test { public static void main(String[] args) { int [] a = new int [11]; int n; Scanner in = new Scanner(System.in); System.out.println("请输入10个数据"); for (int i = 1 ; i <= 10 ; i ++) { a [i] = in.nextInt(); } System.out.println("原始排序"); for (int i = 1 ; i < 11 ; i ++) { System.out.print(a[i]+" "); } System.out.println(); Insort sort = new Insort(a , 10); a = sort.insort(); System.out.println("排列后的顺序:"); for (int i = 1 ; i < 11 ; i ++) { System.out.print(a[i]+" "); } } } class Insort //自定义类Insort { int a[]; int n; Insort(int _a[], int _n) //将数组和排列的数个数传入Insort中 { a = _a; n = _n; } int[] insort() { int j; for (int i = 2; i <= n; i++) //数值下标从2开始,a[0]监视哨 { a[0] = a[i];//给监视哨赋值 j = i - 1;//确认要比较的元素最右边的位置 while (a[0] < a[j]) { a[j + 1] = a[j];//数据右移 j--;//移向左边一个未比较的数 } a[j + 1] = a[0];//在确定位置插入a[i] } return a; } } 假设 输入的数是:9 8 2 1 3 4 5 6 7 10 3
当程序执行到
Insort sort = new Insort(a , 10);内存分析示意图:
为了更方便理解 用下面这个代码
class Point { double x ,y ,z; Point(double _x, double _y, double _z){ x = _x; y = _y; z = _z; } void setX(double _x){ x = _x; } void setY(double _y){ y = _y; } void setZ(double _z){ z = _z; } double getDistanace(Point p){ return (x - p.x)*(x - p.x) + (y - p.y) *( y - p.y) + (z - p.z) * (z - p.z); } } public class Test{ public static void main(String[] args) { Point p1 = new Point(1.0,2.0,3.0); Point p2 = new Point(0.0,0.0,0.0); System.out.println(p.getDistanace(p2)); p1.setX(5.0); p1.setY(3.0); p1.setZ(2.0); System.out.println(p.getDistanace(new Point(1.0,1.0,1.0))); System.out.println(p1.x); p.x = 300.0; System.out.println(p1.x); } }当执行到
System.out.println(p.getDistanace(p2));
p这个临时变量作为传入到getDistance。p中的值是传入getDistance这个方法的P2
方法执行后返回一个14.0 到stack内存中,在系统接受后,两个临时变量被回收
p1.setX(5.0); p1.setY(3.0); p1.setZ(2.0);