Java自学笔记系列六:封装(二) 函数 及 不定长度自变量


  函数,在Java世界中又被称为方法(methods),是用来操作类的成员--属性(attributes)的,若是没有方法的存在,我想属性只是一堆无聊的垃圾数据,所以说操作的存在才使得这些属性有了存在的意义。二者正如“称不离砣,砣不离称”那样亲密无间。

格式:

 修饰符  返回值类型  函数名参数类型 形式参数1, 参数类型 形式参数2, ...){    
    执行语句;
    return 返回值

 如一段代码示例:

  
  
  
  
  1. public int getSum(int x, int y){     
  2.    return x+y*8

  本文只简单提下函数的格式,当然函数的重载,覆盖,以及构造函数,静态函数等等重点的概念会在以后慢慢补充完整。函数的其他一些知识点可以参考下面这篇文章:《Java函数的基本知识》。

 在调用方法的时候,若方法的自变量个数先无法决定该如何处理,即是“多个形式参数”的情况,若客户端一下子需要100个同类型的形式参数,不能写100个吧!在JDK4之前,可以用数组来解决自变量个数无法确认的方法调用。

 JDK5可以说是一个实现了java多种性能跨越的一个版本。这又是一个编译程序蜜糖的例子。

 看下面的代码。

  
  
  
  
  1. package com.ivantian.CoreFengZhuang; 
  2.  
  3. public class Variable { 
  4.      
  5.     public static int sum(int... numbers){ 
  6.         int sum = 0
  7.         for(int num :numbers){ 
  8.             sum += num; 
  9.         } 
  10.         return sum; 
  11.     } 
  12.  
  13.     public static void main(String[] args) { 
  14.         System.out.println(Variable.sum(1,2)); 
  15.         System.out.println(Variable.sum(1,2,3,4)); 
  16.         System.out.println(Variable.sum(1,2,3,4,5,6)); 
  17.     } 
  18. /* 执行结果如下所示
  19.  3 
  20. 10 
  21. 21 
  22. */ 

  在主函数中的三个输出语句就可以看出来优势之所在。

  从反编译的角度来看这段程序编译蜜糖所带来的效果:

  
  
  
  
  1. public static transient int sum(int ai[]){ 
  2.  
  3.   int i = 0
  4.   int ai1[] = ai; 
  5.   int j = ai1.length; 
  6.  
  7.   for(int k=0;k<j;k++){ 
  8.    int l = ail[k]; 
  9.    i+=l; 
  10.  } 
  11.  return i; 

  而在上面三个输出语句中,对调用不定长度自变量的客户端而言,展开后也是一个数组,如代码所示:

  
  
  
  
  1. System.out.println(sum(new int[]{1,2,3})); 

 若函数定义过程中遇到需要定义不定长度的形式参数的时候,需要遵循以下规则定义,否则编译不过去。

  不定长度形式参数若有必须只能有一个。方法声明中的不定长形式参数必须放在参数列表中的最后一个,如下面的定义。

 若形式参数是对象也遵循上面的原则。

如代码:

  
  
  
  
  1. public  void some(int arg1,String args2,int... args){ 
  2.  //method blocks 
  3. }
  
  
  
  
  1. public void some(Wife... SanQiSiQie){ 
  2.  //声明不定个数的老婆  

  至此,不定长度变量(形式参数)结束,望指正。

你可能感兴趣的:(java,函数,不定长度变量,程序编译蜜糖)