黑马程序员_14 枚举 , 静态导入 ,可变参数




----------------------ASP.Net+Android+IO开发S.Net培训、期待与您交流! ---------



                                        枚举 , 静态导入 ,可变参数



 
一枚举:
 public class TestEnum {
    最普通的枚举
    public enum ColorSelect {
        red, green, yellow, blue;    
    }


     枚举也可以象一般的类一样添加方法和属性,你可以为它添加静态和非静
     态的属性或方法,这一切都象你在一般的类中做的那样. 
    public enum Season {
         枚举列表必须写在最前面,否则编译出错
        winter, spring, summer, fall;


        private final static String location = Phoenix;        


        public static Season getBest() {
            if (location.equals(Phoenix))
                return winter;
            else
                return summer;
        }
    }
    还可以有构造方法
    public enum Temp {
        通过括号赋值,而且必须有带参构造器和一属性跟方法,否则编译出错
          赋值必须是都赋值或都不赋值,不能一部分赋值一部分不赋值
          如果不赋值则不能写构造器,赋值编译也出错
        absoluteZero(-459), freezing(32),boiling(212), paperBurns(451);
        
        private final int value;
        public int getValue() {
            return value;
        }
        构造器默认也只能是private, 从而保证构造函数只能在内部使用
        Temp(int value) {
            this.value = value;
        }
    }
 public static void main(String[] args) {
        
          枚举类型是一种类型,用于定义变量,以限制变量的赋值 赋值时通过枚举
         名.值来取得相关枚举中的值
         
        ColorSelect m = ColorSelect.blue;
        switch (m) {
        注意枚举重写了ToString(),说以枚举变量的值是不带前缀的
          所以为blue而非ColorSelect.blue
          


   case red
            System.out.println(color is red);
            break;
        case green
            System.out.println(color is green);
            break;
        case yellow
            System.out.println(color is yellow);
            break;
        case blue
            System.out.println(color is blue);
            break;
        }
        System.out.println(遍历ColorSelect中的值);
        通过values()获得枚举值的数组
        for (ColorSelect c  ColorSelect.values()) {
            System.out.println(c);
        }   


   System.out.println(枚举ColorSelect中的值有:+ColorSelect.values().length+个);


   ordinal()返回枚举值在枚举中的索引位置,从0开始
  System.out.println(ColorSelect.red.ordinal());0
  System.out.println(ColorSelect.green.ordinal());1
  System.out.println(ColorSelect.yellow.ordinal());2
  System.out.println(ColorSelect.blue.ordinal());3


二:静态导入:
         import语句可以导入一个类或某个包中的所有类
  import static语句导入一个类中的某个静态成员(方法或属性)或所有静态成员
     


      静态导入的语法是:


  import static 包名.类名.静态成员变量;


  import static 包名.类名.静态成员函数;


  语法举例:


  import static java.lang.Math.sin;


  import static java.lang.Math.*;


三:可变参数
  


可变参数:适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。
 注意:可变参数必须位于最后一项。当可变参数个数多余一个时,必将有一个不是最后
一项,所以只支持有一个可变参数。因为参数个数不定,所以当其后边还有相同类型参
数时,java无法区分传入的参数属于前一个可变参数还是后边的参数,所以只能让可变
参数位于最后一项。


可变参数的特点:


(1)只能出现在参数列表的最后; 


(2)...位于变量类型和变量名之间,前后有无空格都可以;


(3)调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中一
       数组的形式访问可变参数。
例:
 public class Varable {
 public static void main(String [] args){
  System.out.println(add(2,3));
  System.out.println(add(2,3,5));
 }
 public static int add(int x,int ...args){
  int sum=x;
  for(int i=0;i<args.length;i++){
   sum+=args[i];
  }
  return sum;
 }
}



---------------------- ASP.Net+Android+IO开发S.Net培训、期待与您交流! ---------------


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值