public class GlobalVar2
{
int a = 10;//定义成员变量
double b = 20;//定义成员变量
public static void main(String[] args)//入口方法
{
GlobalVar2 globalVar = new GlobalVar2();//实例化一个对象
System.out.println("the value a = " + globalVar.a);//静态方法里必须用对象来调用
globalVar.print();//对象调用方法
System.out.println("after changed the value a = " + globalVar.a);//输出打印
}
public void print()
{
System.out.println("the global variable a = " + a + ", b = " + b);
a=22;//给a赋值
System.out.println("the global variable a = " + a + ", b = " + b);
}
}
就是上面的一段程序 我不懂的问题有:
1.打印输出后 最后一个输出的是: after changed the value a =22 为什么啊 a=22不是在块中吗 调用的不是成员变量a=10吗?//globalVar.print()对象调用方法不是说的很明白了吗,调用print方法,下面就有啊
2.在块中也就是 a=22;的前面如果加上类型修饰符 int 后 最后一条输出语句所显示的是成员变量a=10;为什么啊//一个变量在一个类中仅仅可以定义一次 上面不是在属性里定义了a=10了吗?再定义a就是没有意义的了 如果a=22没有int 那么显然就是付值语句 a当然就是22了
另外 还有不是有不能在类中的块中重新定义吗//属性不能,但方法是可以的
3.句柄和实例化对象有什么区别?
4.传值和传址有什么区别 能用程序说明下吗?
我是才学 有些问题总是很混淆呢 希望各位多多指教!
//比如int a[]
那么a就是数组的引用,也就是地址,是在内存中的空间
int a[] = new int[8];
a[0]=4;
那么a[0]在引用的时候就是值了
一般来说,没有new 生成对象的就都指的是引用(也就是地址)