大家新年快乐,小弟刚学JAVA。关于JAVA的传值还是传参问题不太懂,希望各位帮下忙,万谢!//Employee classimport java.util.Date;
import java.util.GregorianCalendar;class Employee {
   public Employee(String n,double s,int year,int month,int day)
   {
   name=n;
   salary=s;
   GregorianCalendar calendar=new GregorianCalendar(year ,month - 1,day);
   hireDay=calendar.getTime();
   }
   public String getName()
   {
   return name;
   }
   
   public Double getSalary()
   {
   return salary;
   }
   
   public static void tripleValue(Employee x)
   {
   x.RaiseSalary(300);
   }
   
   public Date getHireDay()
   {
   return hireDay;
   }  
   
   public void RaiseSalary(double byPercent)
   {
   salary = salary+salary * byPercent/100;
   }
   
   public int getID()
   {
   return ID;
   }
   
   public void setID()
   {
ID=nextID;
nextID++;
   }
   
   private int ID;
   private String name;
   private double salary;
   private Date hireDay;
   private static int nextID=1;
}//ManagerTest classimport java.util.*;
public class ManagerTest{
   public static void main(String[] args)
   {
   Manager apple=new Manager("Rober",10000,1983,4,29);
   apple.SetSalary(500);
   System.out.println(apple.getSalary());
   }}
   
    class Manager extends Employee
    {
     public Manager(String n,double s,int year,int month,int day)
     {
     super(n,s,year,month,day);
     }
      
    
     public double SetSalary(double Bonus)
     {
    this.baseSalary=super.getSalary()+Bonus;
    System.out.println(this.baseSalary);
     return this.baseSalary;
     }
     double baseSalary;
     public double GetSalary()
     {
     return this.baseSalary;
     }
    }运行ManagerTest,得出的结果是
10500.0
10000.0请问什么SetSalary方法没有设置baseSalary?
网上关于JAVA堆栈方面的文章比较多,争议也很大,有哪些是比较好一点的呢?我真的想弄懂JAVA是怎样使用内存的,谢谢各位帮忙!

解决方案 »

  1.   

    Manager apple=new Manager("Rober",10000,1983,4,29); 
    这不是给初始化了嘛内存嘛,不就是分堆栈,栈放引用,堆放对象
      

  2.   

    呵呵,太粗心了,打印的是
    父类的getSalary()方法,不是子类的GetSalary()方法,开始还以为SetSalary()没有起作用呢.
    请问有没有哪本关于JAVA堆栈介绍的书比较好呢?网上太多了,还有一些有争议的地方。
      

  3.   

    呵呵,太粗心了,打印的是
    父类的getSalary()方法,不是子类的GetSalary()方法,开始还以为SetSalary()没有起作用呢.
    请问有没有哪本关于JAVA堆栈介绍的书比较好呢?网上太多了,还有一些有争议的地方。
      

  4.   

    传值
    这样测试下:
    class test
    {
      int i=0;
      void seti(int i)
      {
        i=i+10;              //改变i
        System.out.println("更改了i:"+i);
      }
      
      public static void main(String[] args)
      {
        test t=new test();
        t.seti(i);      //传入全局变量i
        System.out.println("全局变量i:"+i);
      }
    }
      

  5.   

    传值
    这样测试下:
    class test
    {
      int i=0;
      void seti(int i)
      {
        i=i+10;              //改变i
        System.out.println("更改了i:"+i);
      }
      
      public static void main(String[] args)
      {
        test t=new test();
        t.seti(i);      //传入全局变量i
        System.out.println("全局变量i:"+i);
      }
    }
      

  6.   

    传值 
    这样测试下:(上面那个我忘了i不能被静态函数main调用。不好意思)
    class test
    {
      void seti(int i)
      {
        i=i+10;              //改变i
        System.out.println("更改了i:"+i);
      }
      
      public static void main(String[] args)
      { 
        int i=0;
        test t=new test();
        t.seti(i);      //传入全局变量i
        System.out.println("全局变量i:"+i);
      }
    }
      

  7.   


    深入JVM(Inside JVM)和Programming for the Java™ Virtual Machine都不错,csdn有下载的