class Demo{
int temp = 30 ; // 此处为了方便,属性暂时不封装
};
public class test02{
public static void main(String args[]){
Demo d1 = new Demo() ; // 实例化Demo对象,实例化之后里面的temp=30 

fun(d1) ;
System.out.println("fun()方法调用之后:" + d1.temp) ;
}
public static void fun(Demo d2){ // 此处的方法由主方法直接调用
d2.temp = 1000; // 修改temp值
}
};问题:在这里面有个demon类,下面的方法又定义了public static void fun(Demo d2),到这就有点糊涂了,这里fun(Demo d2)形参一般不是声明类型么int String之类的,为什么这里用了个Demon d2,这个d2定义出来是什么东西呢?属于demon类的?

解决方案 »

  1.   

    类本身也是一种用户自定义类型,学过C语言就知道有个Struct类型,这里的Demo是一个类,使用户自定义的数据结构,在函数fun(Demo d2)中传递的是Demo类得地址,在函数里改变Demo的值会影响到最终结果。
      

  2.   

    d2就是Demo对象的引用,Demo也是一种类型啊,记住java是一种面向对象的语言
      

  3.   

    String不是也是类吗?有什么不可以的
      

  4.   

    万物皆对象,Demo也是个对象,也可以作为参数……
      

  5.   

    那这种形式d2.temp = 1000;说明d2也是个对象?如果是对象用不用实例化呢?
      

  6.   

    如果Demon类中有temp2=40 temp3=50...那么d2初始值应该是多少呢?
      

  7.   

    Demo d1 = new Demo() ; // 实例化Demo对象,实例化之后里面的temp=30  
    fun(d1) ;楼主仔细看 d1已经被初始化了 然后才传入fun()这个方法
    public static void fun(Demo d2){ // 此处的方法由主方法直接调用
    d2.temp = 1000; // 修改temp值
    }而fun这个方法是对传入的一个类型为Demo的对象里的temp属性进行赋值操作
    也就是说这个fun等于只是接受了传入的东西 对他进行一些处理 而不需要在里面进行d2的实例化