首页 java中的指针[精华]

java中的指针[精华]

举报
开通vip

java中的指针[精华]java中的指针[精华] java中的指针学习心得 在java中,object就是一个指针,它指向了一片内存地址,里面存储了object中的变量。 所以我们也可以使用这一技巧来处理指针。 下举一C中的指针例子,我们接下来把它改写成java, 首先是c版本 1 void main() { 2 int* x; // 建立指针x,y 3 int* y; // (但是还没有指向任何目的地) 4 5 x = malloc(sizeof(int)); // 分配一块可以存储int的内存区域 6 // 让x存储这...

java中的指针[精华]
java中的指针[精华] java中的指针学习心得 在java中,object就是一个指针,它指向了一片内存地址,里面存储了object中的变量。 所以我们也可以使用这一技巧来处理指针。 下举一C中的指针例子,我们接下来把它改写成java, 首先是c版本 1 void main() { 2 int* x; // 建立指针x,y 3 int* y; // (但是还没有指向任何目的地) 4 5 x = malloc(sizeof(int)); // 分配一块可以存储int的内存区域 6 // 让x存储这块内存的地址 7 8 *x = 42; // 将42存储到这个目的地 9 10 *y = 13; // 错误,y没有指向任何区域,所以这里会报错 11 12 y = x; // 让y指向x所指向的目的地 13 14 *y = 13; // 将13存储到y所指向的目的地,其实和x所指向的目的地是一个地方 15 } 16 java版本 1 class IntObj { 2 public int value; 3 } 4 5 public class Binky() { 6 public static void main(String[] args) { 7 IntObj x; //建立指针x,y 8 IntObj y; // (都还没有指向任何目的地) 9 10 x = new IntObj(); // 分配一块内存区域 11 // 让x指向这块内存区域,就是x存储这块内存的地址 12 13 x.value = 42; // 将42存储进内存区域 14 15 y.value = 13; //错误,y没有指向任何内存区域,用java的话说就是没有初始化 16 17 y = x; // 让y指向x所指向的内存区域,那么即使y不初始化,也可以开始使用 18 19 y.value = 13; // 将13存储到y所指向的内存区域,就是x所指向的内存区域 20 } 21 } 22 这样一来,java里面也就实现了c的指针操作。从这个例子我们可以看出,java的类、实例其实就是指针, 下面的例子更清楚的表达了这一点。 再看一个例子,就是一个linklist的例子,它的结构如图 还是先看C代码,再看Java代码,我折叠了一下,免得太长碍眼。 1 struct Node { 2 int value; 3 struct Node* next; 4 }; 5 6 7 { 8 // 建立指针 9 struct Node* x; 10 struct Node* y; 11 struct Node* z; 12 13 // 分配内存 14 x = malloc(sizeof(Node)); 15 y = malloc(sizeof(Node)); 16 z = malloc(sizeof(Node)); 17 18 // 赋值 19 x->value = 1; 20 y->value = 2; 21 z->value = 3; 22 23 // 给指针变量赋值,值当然也是指针类型 24 x->next = y; 25 y->next = z; 26 z->next = x; 27 } 28 1 class Node { 2 public int value; 3 public Node next; 4 }; 5 6 { 7 // 建立指针,就是实例化类 8 Node x; 9 Node y; 10 Node z; 11 12 // 初始化,也就是让指针指向某个内存区域 13 x = new Node(); 14 y = new Node(); 15 z = new Node(); 16 17 // 给其中的变量值赋值 18 x.value = 1; 19 y.value = 2; 20 z.value = 3; 21 22 // 给其中的指针值赋值,赋的值当然也是指针类型 23 x.next = y; 24 y.next = z; 25 z.next = x; 26 } 27 我们可以看到在java linklist的最后部分x.next=y;由于next是一个指针类型,那么给它赋的值必然也是指 针类型, 那么y必然也是指针类型,又因为y为node class的一个instance,所以可见所有的instance的名字其实就是 一个指针 所以这里才这样来实现linklist,以前我对于java的linklist一直觉得很神奇,怎么能够在自己的作用域中间 还包含了自己的类,学习了指针的概念以后就明白了,其实instance自己就是一个指针,不过是在instance里 面包含另外一个指针而已。
本文档为【java中的指针[精华]】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_180829
暂无简介~
格式:doc
大小:27KB
软件:Word
页数:0
分类:
上传时间:2018-05-21
浏览量:13