我刚入门,不知道那么多!只知道
JMyObject myo1=new JMyObject();
JMyObjecdt myo2=myo1
是传地址,跟指针效果一样,java不是没有指针,只不过换了一个叫法,叫引用
(reference),其实骨子里就是指针。
JMyObject myo1=new JMyObject();
JMyObjecdt myo2=myo1
是传地址,跟指针效果一样,java不是没有指针,只不过换了一个叫法,叫引用
(reference),其实骨子里就是指针。
http://saloon.javaranch.com/cgi-bin/ubb/ultimatebb.cgiChinaJavaWorld:我认为这是国内最好的java论坛
http://www.chinajavaworld.net/forum/leoboard.cgi
对于对象稍微有点特殊:
因为对象保存的是地址,所以这时的传值就变成了地址的拷贝,但是你不可能改变拷贝前的地址,这根C++的传地址是有本质区别的。请参考我已经回复过的问题:
http://www.chinajavaworld.net/forum/topic.cgi?forum=21&topic=7815
java无法像c++那样对底层进行复杂的操作,那不是它的强项,
一般用在网络编程中,如web,企业级开发,
Java不允许直接对地址进行操作。
Java的类型检查非常严格,不能象C++中那样可以任意对内存中的数据进行类型转换,所以这个问题我感觉象问题1的性质:
你要使用Java,就要转变你以前的C++的思路,而改用Java的完全面向对象和类型安全的思想。
高手不敢称,但事实是Java中没有指针,没有直接操作内存的方法,所以你要改用面向对象来解决问题。
但是你如果缓冲区是用在流上的话
那么java提供了readXXX之类的方法
如果是自己的缓冲区,那写个类封装一下比较好
把这些转换放到底层去做double *s=(double)&a[4];这种代码是Java所要抛弃的
因为非常容易造成数组越界
java摒弃了c++中的一些东西,指针就是其中之一。如果象在java里用指针
是有点困难。但也是有办法的: 先把byte[]转换成输入流DataInputStream
该类有读float的方法。看看aip就明白
不过兄弟如果对c++里的指针念念不忘,还不如在c++方面发展吧。
有其相似之处
Java之所以不允许操作内存,是因为它是需要JVM解释运行的语言,如果越过JVM,那Java的跨平台性也就不复存在了。