int z=40;//问题一:这就是类变量吗? 不是my.y = 200; //问题二:这就是实例变量吗? 是的
http://www.cn-java.com/target/news.php?news_id=1849可以通过两种方法在类中存储数据───作为实例变量和类变量.实例变量是特定于对象的,如果你有两个对 象(即一个类的两个实例),每一个对象中的实例变量独立于另一个对象中的实例变量的;另一方面,两个对象的 类变量均指向相同的数据,并因此面保存相同的值,换句话说,类变量被类中的所有对象共享.差点忘了,它们在 形式上的区别,类变量在声明时比实例变量多一个static. eg: class data { public int intdata=0;//显然,intdata在这儿是实例变量 } public class exam { public static void main(String[] args) { data a,b; a=new data(); b=new data(); a.intdata=1; System.out.println("b.indata="+b.intdata); } } 运行结果: b.intdata=0 结果分析: 可以看出,a.intdata的值虽然变了,但并没有影响b.intdata.但是如果在data类中声明intdata时,在其前 面加上static就变成类变量了(即:public static int intdata=0;),则此时运行结果会变为: b.intdata=1 这次a.intdata值的改变可把b.intdata影响了,事实上,对象a和b的类变量均指向相同的数据,所有值一 样,这就是类变量的作用.
class point{ int x; int y; int z=40;//问题一:这就是类变量吗? 答:z是类point的成员变量 void show() { System.out.println("X坐标点的位置在:" + x); System.out.println("Y坐标点的位置在:" + y); System.out.println("Z坐标点的位置在:" + z); } public static void main(String[] arguments){ point my = new point(); //这里my.z 是 40 my.x = 150; my.y = 200; //问题二:这就是实例变量吗?答:my是point类的一个实例 // y是my一个属性 my.z = 60;//z发生了变化 my.show(); } }//问题三:为什么此程序最终结果显示为“Z坐标点的位置在:60”呢?类变量的值不是可以不变的吗? 答:因为你调用的是my的show方法之前,z已经变成了60,而不是原来的40了
这个谁告诉你的定义......误人子弟嘛不要理解中文意思,你只要搞懂public、private、protected、static、final、friendly默认类型
等关键字的意义再说
第二,那是实例的变量。
第三,你所说的不能改变的是final类型的变量,不是上面的60。
不知道清楚否。
class point{
int x;//2
int y;//3
int z=40;//问题一:这就是类变量吗?//4 void show() {
System.out.println("X坐标点的位置在:" + x);//9
System.out.println("Y坐标点的位置在:" + y);//10
System.out.println("Z坐标点的位置在:" + z);//11
} public static void main(String[] arguments){
point my = new point();//1
my.x = 150;//5
my.y = 200; //问题二:这就是实例变量吗?//6
my.z = 60;//7 my.show();//8
}
由于point的对象都为friendly形故能直接修改,所以my中的变量值都一一变动。
不是my.y = 200; //问题二:这就是实例变量吗?
是的
象(即一个类的两个实例),每一个对象中的实例变量独立于另一个对象中的实例变量的;另一方面,两个对象的
类变量均指向相同的数据,并因此面保存相同的值,换句话说,类变量被类中的所有对象共享.差点忘了,它们在
形式上的区别,类变量在声明时比实例变量多一个static.
eg:
class data
{
public int intdata=0;//显然,intdata在这儿是实例变量
}
public class exam
{
public static void main(String[] args)
{
data a,b;
a=new data();
b=new data();
a.intdata=1;
System.out.println("b.indata="+b.intdata);
}
}
运行结果:
b.intdata=0
结果分析:
可以看出,a.intdata的值虽然变了,但并没有影响b.intdata.但是如果在data类中声明intdata时,在其前
面加上static就变成类变量了(即:public static int intdata=0;),则此时运行结果会变为:
b.intdata=1
这次a.intdata值的改变可把b.intdata影响了,事实上,对象a和b的类变量均指向相同的数据,所有值一
样,这就是类变量的作用.
int x;
int y;
int z=40;//问题一:这就是类变量吗? 答:z是类point的成员变量 void show() {
System.out.println("X坐标点的位置在:" + x);
System.out.println("Y坐标点的位置在:" + y);
System.out.println("Z坐标点的位置在:" + z);
} public static void main(String[] arguments){
point my = new point();
//这里my.z 是 40
my.x = 150;
my.y = 200; //问题二:这就是实例变量吗?答:my是point类的一个实例
// y是my一个属性
my.z = 60;//z发生了变化 my.show();
}
}//问题三:为什么此程序最终结果显示为“Z坐标点的位置在:60”呢?类变量的值不是可以不变的吗? 答:因为你调用的是my的show方法之前,z已经变成了60,而不是原来的40了