| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2410 人关注过本帖
标题:传值和传址有什么区别 还有...
只看楼主 加入收藏
狂放不羁
Rank: 4
等 级:贵宾
威 望:12
帖 子:925
专家分:0
注 册:2007-1-24
收藏
得分:0 
比如 a = new A();此时a就指向了一个句柄,而这个句柄就是两个指针,一个指向了a对象的方法表和A类,另一个指向了a对象的数据。这个仅仅是SUN公司的JAVA实现。
2007-04-06 12:02
大嘴先生2
Rank: 1
等 级:新手上路
威 望:2
帖 子:815
专家分:0
注 册:2006-4-17
收藏
得分:0 

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 生成对象的就都指的是引用(也就是地址)


骑白马的未必是王子,也可能是唐僧;有翅膀的未必是天使,也可能是鸟人。
2007-04-06 16:16
快速回复:传值和传址有什么区别 还有...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.036283 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved