java能不能获取变量的内存地址

NK_yu 2014-07-11 04:08:32
现在要把delphi函数改写成java,需要用到基本变量的内存地址,但是不知道怎么获得
...全文
1119 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovecx24 2014-07-22
  • 打赏
  • 举报
回复
为什么要获取内存地址?Java只有引用 没有指针的 而且还有GC的
sunbo624 2014-07-21
  • 打赏
  • 举报
回复
引用 16 楼 u014312225 的回复:
[quote=引用 15 楼 sunbo624 的回复:] java的数组传给C C在运算完成之后写回这个数组 java再用这个数组 就是已经改变后的值了
我的那么多参数的类型都不同,怎么放到一个数组里传给C啊,那还使用指针吗?我c中调用dll的函数的形参全都是void*类型的,如果改成传数组的话岂不是都得重新改了?而且这样的话还得改写C的程序重新编译DLL吗?[/quote 那你查一下unsafe这个关键字吧 获取地址 但是根据操作系统和虚拟机的不同 方法也不同
NK_yu 2014-07-21
  • 打赏
  • 举报
回复
引用 17 楼 wqc5461 的回复:
使用 java Main args 传字符,读取java输出流解析返回。 走内存危机,你会有危机的时候。
我这个是javaweb网站中的action中写的函数,根本就没有args,所以没办法用这个传递参数
wqc5461 2014-07-21
  • 打赏
  • 举报
回复
使用 java Main args 传字符,读取java输出流解析返回。 走内存危机,你会有危机的时候。
NK_yu 2014-07-21
  • 打赏
  • 举报
回复
引用 15 楼 sunbo624 的回复:
java的数组传给C C在运算完成之后写回这个数组 java再用这个数组 就是已经改变后的值了
我的那么多参数的类型都不同,怎么放到一个数组里传给C啊,那还使用指针吗?我c中调用dll的函数的形参全都是void*类型的,如果改成传数组的话岂不是都得重新改了?而且这样的话还得改写C的程序重新编译DLL吗?
sunbo624 2014-07-21
  • 打赏
  • 举报
回复
引用 14 楼 u014312225 的回复:
[quote=引用 13 楼 sunbo624 的回复:] 这个根本用不着获取指针吧 用数组就能解决
这个怎么说呢,我的delphi程序的一部分是这样的 g_LArg4 := g_SourceElimFlag; g_PArg8 := @g_LArg4;(指针指向变量) g_PArg9 := @g_ChiSquare;(指针指向变量) g_PArg10 := @g_RSquare;(指针指向变量) g_PArg11 := @g_PCMass;(指针指向变量) g_PArg12 := @g_sumSCEs; (指针指向变量) CMB82error := CallCMB82dll;(调用c的dll) 调用完c的dll后,指针所指向的变量有返回值,我需要使用这些返回值,如果用java数组的话要怎么操作啊???[/quote] java的数组传给C C在运算完成之后写回这个数组 java再用这个数组 就是已经改变后的值了
NK_yu 2014-07-21
  • 打赏
  • 举报
回复
引用 13 楼 sunbo624 的回复:
这个根本用不着获取指针吧 用数组就能解决
这个怎么说呢,我的delphi程序的一部分是这样的 g_LArg4 := g_SourceElimFlag; g_PArg8 := @g_LArg4;(指针指向变量) g_PArg9 := @g_ChiSquare;(指针指向变量) g_PArg10 := @g_RSquare;(指针指向变量) g_PArg11 := @g_PCMass;(指针指向变量) g_PArg12 := @g_sumSCEs; (指针指向变量) CMB82error := CallCMB82dll;(调用c的dll) 调用完c的dll后,指针所指向的变量有返回值,我需要使用这些返回值,如果用java数组的话要怎么操作啊???
sunbo624 2014-07-21
  • 打赏
  • 举报
回复
引用 10 楼 u014312225 的回复:
[quote=引用 2 楼 u014312225 的回复:] 我需要的是指针指向某个变量,那这个可以实现吗?当然java里面没有指针,我使用了jnative中的指针
引用 3 楼 sunbo624 的回复:
当然能了 但是不同的虚拟机和操作系统 地址是不同的
具体要怎么实现啊,我现在需要指针指向某个变量,然后调用c写好的dll,调用完成后指针所指向的变量会有一个返回值,我需要使用这个返回值[/quote] 这个根本用不着获取指针吧 用数组就能解决
NK_yu 2014-07-21
  • 打赏
  • 举报
回复
引用 7 楼 stubble 的回复:
引用地址 似乎并不是 内存的真实地址
我也尝试了引用,jnative中有一个关于指针的操作,setIntAt()函数,但是不管是普通变量还是引用好像都只是设置值,没有指向那个变量
rumlee 2014-07-21
  • 打赏
  • 举报
回复
引用 5 楼 shine333 的回复:
When in rome do as the romans do 学习语言,无论是人类语言还是编程语言,切忌将自己原来的语言习惯,生搬硬套代入新的环境。 中文里面,爷爷奶奶叔叔舅舅分的很清楚,西方语言从不分那么清楚。但是,这影响他们日常生活了吗?至少,他们长辈、晚辈之间的关系,看上去比我们融洽。 同样,近二十年来,Java一直不能实现你这个具体的技术要求。但是,数以千万甚至亿计的Java程序/设备还是活的好好的,功能只比delphi的多,新的android应用还是不断推陈出新。你现在学新的语言/平台,就按照这个新的语言/平台的习惯去思考吧。
NK_yu 2014-07-21
  • 打赏
  • 举报
回复
引用 2 楼 u014312225 的回复:
我需要的是指针指向某个变量,那这个可以实现吗?当然java里面没有指针,我使用了jnative中的指针
引用 3 楼 sunbo624 的回复:
当然能了 但是不同的虚拟机和操作系统 地址是不同的
具体要怎么实现啊,我现在需要指针指向某个变量,然后调用c写好的dll,调用完成后指针所指向的变量会有一个返回值,我需要使用这个返回值
NK_yu 2014-07-21
  • 打赏
  • 举报
回复
To vnvlyp 我有一个应用程序是用delphi调用c的dll实现的,现在需要使用java将该应用程序改写成网络版的,我需要的就是把delphi程序改写成java网络程序,java调用c的dll!在delphi中使用到了指针指向变量来调用dll,不知道在java里面如何实现
wqc5461 2014-07-21
  • 打赏
  • 举报
回复
java语法有这样的么? 没见过
vnvlyp 2014-07-14
  • 打赏
  • 举报
回复
Java获取不了变量地址 就算获取到了你在Java里拿着地址也做不了什么事 一定要地址才能实现那个函数的话(但目测99.99%的情况是不需要地址也可以的),只能采用其他语言编译DLL SO等库然后再让Java调用。
shine333 2014-07-14
  • 打赏
  • 举报
回复
When in rome do as the romans do 学习语言,无论是人类语言还是编程语言,切忌将自己原来的语言习惯,生搬硬套代入新的环境。 中文里面,爷爷奶奶叔叔舅舅分的很清楚,西方语言从不分那么清楚。但是,这影响他们日常生活了吗?至少,他们长辈、晚辈之间的关系,看上去比我们融洽。 同样,近二十年来,Java一直不能实现你这个具体的技术要求。但是,数以千万甚至亿计的Java程序/设备还是活的好好的,功能只比delphi的多,新的android应用还是不断推陈出新。你现在学新的语言/平台,就按照这个新的语言/平台的习惯去思考吧。
S117 2014-07-14
  • 打赏
  • 举报
回复
java中是不让你访问内存地址的吧!
sunbo624 2014-07-14
  • 打赏
  • 举报
回复
当然能了 但是不同的虚拟机和操作系统 地址是不同的
NK_yu 2014-07-14
  • 打赏
  • 举报
回复
我需要的是指针指向某个变量,那这个可以实现吗?当然java里面没有指针,我使用了jnative中的指针
shine333 2014-07-14
  • 打赏
  • 举报
回复
根本就不用想获取,话说,C++们没GC,Java还有提升 伊甸园中幸存,最后跑到老年代。你留地址??去访问的时候,会告诉你,此地已经拆迁。
异常异长 2014-07-14
  • 打赏
  • 举报
回复
引用地址 似乎并不是 内存的真实地址
加载更多回复(1)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧