Chinaunix

标题: 第一次看java实际程序就懵了,请教一下。 [打印本页]

作者: likec    时间: 2003-06-17 10:50
标题: 第一次看java实际程序就懵了,请教一下。
public class NetManager
{
        static private NetManager nmServer;
        
        
   ......
        ......
}
请问在类的声明中就可以实例化一个本身的变量么?记得在c语言的结构体定义时是可以包含一个自己的指针,难道这里nmServer是一个类似于指针的东西?
作者: likec    时间: 2003-06-17 10:52
标题: 第一次看java实际程序就懵了,请教一下。
不好意思,网络较慢,心急按了两下,版主帮忙删一个。
作者: cinc    时间: 2003-06-17 11:12
标题: 第一次看java实际程序就懵了,请教一下。
对,可以这么理解。

但 java 里没有指针

java 有两种数据类型:
原始数据类型: int, float, long...
对象: String, Hashtable

处理方式不同:
  处理 原始数据类型 是 传值的,不能传内存中的地址
处理 对象 是 传引用(你可以把它理解为 c 里的指针)
作者: likec    时间: 2003-06-17 12:33
标题: 第一次看java实际程序就懵了,请教一下。
原帖由 "cinc" 发表:
对,可以这么理解。

但 java 里没有指针

java 有两种数据类型:
原始数据类型: int, float, long...
对象: String, Hashtable

处理方式不同:
  处理 原始数据类型 是 传值的,不能传内存中的地址
..........
   

谢谢斑竹!
作者: rollingpig    时间: 2003-06-17 14:22
标题: 第一次看java实际程序就懵了,请教一下。
Strin是例外

它是对象
但是
传值的
作者: cinc    时间: 2003-06-17 15:29
标题: 第一次看java实际程序就懵了,请教一下。
好像不是的,看看下面的程序:


  1.     public void testString(){
  2.         String out = "aaa";
  3.         System.out.println ("out's hashcode is " + out.hashCode());
  4.         testStringIn(out);
  5.     }
  6.     public void testStringIn(String in){
  7.         System.out.println ("in's hashcode is " + in.hashCode());
  8.     }
复制代码


输出如下:
D:\Temp>;java Main
out's hashcode is 96321
in's hashcode is 96321

所以 String 传递的还是 对象的引用

:)
作者: likec    时间: 2003-06-17 16:10
标题: 第一次看java实际程序就懵了,请教一下。
原帖由 "cinc" 发表:
对,可以这么理解。

但 java 里没有指针

java 有两种数据类型:
原始数据类型: int, float, long...
对象: String, Hashtable

处理方式不同:
  处理 原始数据类型 是 传值的,不能传内存中的地址
..........
   

在我的记忆里,好像结构体里的指向自身的指针唯一的用途就是构成链表,除此之外就是无意义的,不知道正确否?
作者: sakulagi    时间: 2003-06-18 08:46
标题: 第一次看java实际程序就懵了,请教一下。
不一定,singleton也是需要这种声明的。
作者: rollingpig    时间: 2003-06-18 10:29
标题: 第一次看java实际程序就懵了,请教一下。
原帖由 "cinc" 发表:

输出如下:
D:\Temp>;java Main
out's hashcode is 96321
in's hashcode is 96321

所以 String 传递的还是 对象的引用

:)
   

hehe


you'd beeter try this!!


传值试验

public class test{
String s="aaa";
void changeString(String a){
a="bbb";
}
void changeObject(test a){
    a.s="bbb";
}
public static void main(String[] args){
test t=new test();
String c="aaa";
System.out.println(c);
t.changeString(c);
System.out.println(c);
System.out.println(t.s);
t.changeObject(t);
System.out.println(t.s);
}
}
}




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2