一.类的属性:
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);