主题:【调查】大家都主要用什么写程序? -- 还是不懂
共:💬139 🌺25
这个例子要说明的,当然不是swap函数能否实现这么简单。俺试图说明的是呢,Java里面也可以搞指针游戏的。原理就是利用Java的原子类型以外的Object,实际上也都是指针参照的原理。所以呢,只要绕过最外层的值参照,就可以恢复到C++时代的地址参照去咯。
数组就是这样的一个利用方法――数组里面存的,都是地址。所以在这个层面上交换,对外面就会有影响了;
其实,明白了这层道理,做出自定义的Class就可以在Java中同样轻易地实现地址参照或是多返回值函数的功能。比如下面这个程序,展示的就是任意类型的交换、同样利用的是地址参照的原理......
class type_a { Object type_a_value = null; public type_a(Object init) { this.set(init); } public void set(Object input) { this.type_a_value = input; } public Object get() { return this.type_a_value; } public String toString() { return this.type_a_value.toString(); } } public class swap { public swap (type_a A, type_a B) { type_a C = new type_a(A.get()); A.set(B.get()); B.set(C.get()); } static public void main(String[] argv) { type_a A1 = new type_a("String A"); type_a A2 = new type_a("String B"); System.out.println("A1="+A1); System.out.println("A2="+A2); swap SWAP = new swap(A1, A2); System.out.println("A1="+A1); System.out.println("A2="+A2); } }
- 相关回复 上下关系8
【原创】俺来挺一下C++ 1 无斋主人 字2814 2005-05-27 14:40:21
Java里面也不是不能进行Reference或者返回多个值的 你克我服 字553 2005-05-29 21:45:40
服兄是改变了题目的原意了 无斋主人 字664 2005-05-31 07:33:58
呜呜呜,老兄误会俺了
有些不同意见,Java(5.0) 现在支持Generics。 Highway 字493 2005-05-27 15:50:08
C#(.NET)看到了Java这个问题 无斋主人 字220 2005-05-27 20:08:12
Sorry for the later reply. Here you go, Java Generics Tutorial. Highway 字84 2005-05-31 13:31:51
好文,请继续 电子狼 字254 2005-05-27 14:54:24