zl程序教程

您现在的位置是:首页 >  工具

当前栏目

javz笔记之:有趣的静态方法的使用

笔记 使用 有趣 静态方法
2023-06-13 09:14:51 时间

复制代码代码如下:


importjava.util.*;

publicclasswelcome{

   publicstaticvoidmain(String[]args)
      {
         /*
          *Test1:Methodscan"tmodifynumericparameters
          */
         System.out.println("TestingtripleValue:");
         doublepercent=10;
         System.out.println("Before:percent="+percent);
         percent=tripleValue(percent);
         System.out.println("After:percent="+percent); //这里输出为30了!正常的结果

         /*
          *Test2:Methodscanchangethestateofobjectparameters
          */
         System.out.println("\nTestingtripleSalary:");
         Employeeharry=newEmployee("Harry",50000);
         System.out.println("Before:salary="+harry.getSalary());
         tripleSalary(harry);
         System.out.println("After:salary="+harry.getSalary());

         /*
          *Test3:Methodscan"tattachnewobjectstoobjectparameters
          */
         System.out.println("\nTestingswap:");
         Employeea=newEmployee("Alice",70000);
         Employeeb=newEmployee("Bob",60000);
         System.out.println("Before:a ="+a.getName());
         System.out.println("Before:b ="+b.getName());
         swap(a,b);
         System.out.println("After:a="+a.getName());
         System.out.println("After:b="+b.getName());
      }

      publicstaticdoubletripleValue(doublex)//doesn"twork
      {
         returnx=3*x;
         //System.out.println("Endofmethod:x="+x);
      }

      publicstaticvoidtripleSalary(Employeex)//works
      {
         x.raiseSalary(200);
         System.out.println("Endofmethod:salary="+x.getSalary());
      }

      publicstaticvoidswap(Employeex,Employeey)
      {
         Employeetemp=x;
         x=y;
         y=temp;
         System.out.println("Endofmethod:x="+x.getName());
         System.out.println("Endofmethod:y="+y.getName());
      }
   }

   classEmployee//simplifiedEmployeeclass
   {
      publicEmployee(Stringn,doubles)
      {
         name=n;
         salary=s;
      }

      publicStringgetName()
      {
         returnname;
      }

      publicdoublegetSalary()
      {
         returnsalary;
      }

      publicvoidraiseSalary(doublebyPercent)
      {
         doubleraise=salary*byPercent/100;
         salary+=raise;
      }

      privateStringname;
      privatedoublesalary;
   }


如果是以下代码:System.out.println("After:percent="+percent); //这里输出为10了!因为静态方法达不成你要的效果

这是因为静态方法不能对对象产生效果,和静态域一样,它属于类,不属于任何对象

复制代码代码如下:

/**
 *ThisprogramdemonstratesparameterpassinginJava.
 *@version1.002000-01-27
 *@authorCayHorstmann
 */
publicclassParamTest
{
  publicstaticvoidmain(String[]args)
  {
     /*
      *Test1:Methodscan"tmodifynumericparameters
      */
     System.out.println("TestingtripleValue:");
     doublepercent=10;
     System.out.println("Before:percent="+percent);
     tripleValue(percent);
     System.out.println("After:percent="+percent);

     /*
      *Test2:Methodscanchangethestateofobjectparameters
      */
     System.out.println("\nTestingtripleSalary:");
     Employeeharry=newEmployee("Harry",50000);
     System.out.println("Before:salary="+harry.getSalary());
     tripleSalary(harry);
     System.out.println("After:salary="+harry.getSalary());

     /*
      *Test3:Methodscan"tattachnewobjectstoobjectparameters
      */
     System.out.println("\nTestingswap:");
     Employeea=newEmployee("Alice",70000);
     Employeeb=newEmployee("Bob",60000);
     System.out.println("Before:a="+a.getName());
     System.out.println("Before:b="+b.getName());
     swap(a,b);
     System.out.println("After:a="+a.getName());
     System.out.println("After:b="+b.getName());
  }

  publicstaticvoidtripleValue(doublex)//doesn"twork
  {
     x=3*x;
     System.out.println("Endofmethod:x="+x);
  }

  publicstaticvoidtripleSalary(Employeex)//works
  {
     x.raiseSalary(200);
     System.out.println("Endofmethod:salary="+x.getSalary());
  }

  publicstaticvoidswap(Employeex,Employeey)
  {
     Employeetemp=x;
     x=y;
     y=temp;
     System.out.println("Endofmethod:x="+x.getName());
     System.out.println("Endofmethod:y="+y.getName());
  }
}

classEmployee//simplifiedEmployeeclass
{
  publicEmployee(Stringn,doubles)
  {
     name=n;
     salary=s;
  }

  publicStringgetName()
  {
     returnname;
  }

  publicdoublegetSalary()
  {
     returnsalary;
  }

  publicvoidraiseSalary(doublebyPercent)
  {
     doubleraise=salary*byPercent/100;
     salary+=raise;
  }

  privateStringname;
  privatedoublesalary;
}