Java基础加强

------- android培训、java培训、期待与您交流! ----------
gss
1.静态导入
  静态导入是jdk1.5版本以后出现的新特性,一般是指导入静态方法,如:import static java.lang.System.out 是指导入系统输出的静态方法。
例:
import static java.lang.System.out  //导入java.lang包下的System类的静态方法out
public class StaticImport {
  public static void main(String[] args) {  
    int x=1;   
    x++;   
    out.println(x);  //导入java.lang包下的System类的静态方法out后,可以写成out.println(x);来打印数据x,不必写全System.out.println(x);
  }
}
2.可变参数
  一个方法接受的参数个数不固定如:
System.out.println(add(3,4,5)),
System.out.println(add(1,2,3,4,5)),
可变参数的特点:
只能出现在参数列表最后;
... 位于参数类型和参数名之间前后有无空格都可以
调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法中以数组形式访问参数。
例:
public class VarableParameter {
  public static void main(String[] args) {   
    // TODO Auto-generated method stub   
    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;  
  }
}
3.增强for循环
  语法:for(type  变量名 :集合变量名)
注意事项:
迭代变量必须在()中定义
集合变量可以是数组或实现了iterable接口的集合类
例:
public class VarableParameter {
  public static void main(String[] args) {  
    // TODO Auto-generated method stub  
    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 arg :args){       
      sum+=arg;  
    }  
    return sum; 
  }
}
4.基本数据类型的拆箱与装箱
自动装箱:
Integer num1 = 12;
自动拆箱:
System.out.println(num1 + 2);
例:
public class AutoBox {
  public static void main(String[] args) {   
    // TODO Auto-generated method stub   
    Integer iObj = 3;   
    System.out.println(iObj + 12);  
  }
}
5.枚举
枚举是要让某个类型的变量的取之只能为若干个固定的值中的一个,否则编译器就会报错,枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一功能。
用普通类如何实现枚举功能,定义一个Weekday的类来模拟枚举功能
私有构造方法;每个元素分别用一个共有的静态成员变量表示;可以有若干构造方法或抽象方法,要提供NextDay()是抽象的。
例:
package cn.itcast.day1;
public abstract class WeekDay1 {    
  private WeekDay1(){}    
  public final static WeekDay1 SUN= new WeekDay1(){
     @Override   
    public WeekDay1 nextDay() {   
       // TODO Auto-generated method stub    
      return MON;   
    }     
  };  
  public final static WeekDay1 MON= new WeekDay1(){
     @Override   
    public WeekDay1 nextDay() {    
      // TODO Auto-generated method stub    
      return SUN;   
    }     
  };    
  public abstract WeekDay1 nextDay();
  /* public WeekDay nextDay(){      
      if(this == SUN){    
        return MON;   
      }else{    
        return SUN;   
      }  
    }*/  
  public String toString(){      
    return this == SUN?"SUN":"MON";  
  }
}
package cn.itcast.day1;
public class EnumTest {
  public static void main(String[] args) {   
    // TODO Auto-generated method stub   
    WeekDay1 weekDay = WeekDay1.MON;   
    System.out.println(weekDay.nextDay());        
    WeekDay weekDay2 = WeekDay.FRI;   
    System.out.println(weekDay2);  
  }
  public enum WeekDay{   
    SUN,MON,TUE,WED,THI,FRI,SAT  
  }  
  //交通灯枚举类 
  public enum TrafficLamp{      
    RED(30){        
      public TrafficLamp nextLamp(){     
        return GREEN;    
      }   
    },
    GREEN(45){        
      public TrafficLamp nextLamp(){     
        return YELLOW;    
      }   
    },
    YELLOW(5){        
      public TrafficLamp nextLamp(){     
        return RED;    
      }   
    };      
    public abstract TrafficLamp nextLamp();   
    private int time;   
    private TrafficLamp(int time){
      this.time=time;
    }  
  }
}
6.反射
Class 反射的基石
如何得到各个字节码对应的实例对象?
类名.class,例如:System.class ;对象.getClass() 例如:new Date().getClass ; Class.forName("类名") 例如:Class.forName("java.util.Date");
反射就是把Java类中的各种成分映射成相应的Java类。例如一个Java类中用一个Class类的对象来表示,一个类中的组成部分:成员变量,方法,构造方法,包等信息也用一个个Java类来表示就像汽车是一个类,汽车的发动机,变速箱也是一个个的类。表示Java类的Class类显然要提供一系列的方法,来获得其中的变量,方法,构造方法,修饰符,包等信息,这些信息就是用相应类的实例对象来表示,他们是Field、Method、Contructor、Package等等。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值