Java高新技术,静态导入,可变参数,增强for,基本数据拆箱与装箱,枚举

 


 

1静态导入
import 语句可以导入一个类或某个包中的所有类
import static 语句导入一个类中的某个静态方法或所有静态方法
2可变参数
可变参数的特点
。只能出现在参数列表的最后
。调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的
  形式访问可变参数
public int add(int x ,int ... args)
 {
  int sum = x ;
  System.out.println(sum);
  for(int i=0; i<args.length; i++)
  {
   sum += args[i];
  }
  return sum ;
 }
3 增强for循环
for(类型名  变量名 :集合变量名){...}
注意:1)迭代变量必须在()中定义
      2)集合变量可以是数组或实现了Iterable接口的集合类
4基本数据类型的自动拆箱与装箱
Integer i1 = 3 ;      与   Integer i3 = 128 ;   
Integer i2 = 3 ;           Integer i4 = 128 ;  之间的区别

当数值小于一个字节大小时(-128~127),自动装箱成对象会有一个缓存  在常量池
所有调用的引用都指向该常量池中的这个对象,当大于规定的数值时,引用就各自指向
堆内存中的对象。  (这是一种享元模式flyweight,实现一定的共享)
享元设计模式:如果很多很小的对象,它们有很多相同的东西,可以把它们封装成一个
对象,把不同的部分成外部的属性,作为方法的参数传入。
5枚举

 
 

public class WeekDay {
 private WeekDay(){}



 public final static WeekDay SUN = new WeekDay();



 public final static WeekDay MON = new WeekDay();



 public WeekDay nextDay(){
  if(this == SUN)
   return MON ;
  else
   return SUN ;
 }
}

/*

当一个WeekDay对象获取下一天,可以用将nextDay方法定义成抽象方法,这样就可以将大量的if else语句转移成了一个个独立的类

就是内部类

*/

public abstract class WeekDay {
 private WeekDay(){}
 //将方法由内部的子类实现
 public final static WeekDay SUN = new WeekDay(){
  public WeekDay nextDay(){
   return MON ;
  }
 };
 
 public final static WeekDay MON = new WeekDay(){
  public WeekDay nextDay(){
   return SUN ;
  }
 };
 
 public abstract WeekDay nextDay();//定义成抽象类
/* public WeekDay nextDay(){
  if(this == SUN)
   return MON ;
  else
   return SUN ;
 }*/
 public String toString(){
  return this == SUN? "SUN":"MON";
 }
}


enum WeekDay{SUN, MON,WED,THI,FRI,SAT} WeekDay相当于一个类,里面的内容是它类
的实例对象。
WeekDay weekday = WeekDay.SUN ; 枚举还实现它对象的了toString方法
System.out.println(weekday);打印结果是SUN
weekday.name() 对象名称
weekday.ordinal() 该对象在枚举类中的排列位数
枚举类的静态方法
WeekDay.valueOf("SUN") 根据字符串的内容返回枚举类的对象SUN
WeekDay[] WeekDay.values(); 获取枚举类都有对象装进数组中,可以用来遍历枚举类
带有构造方法的枚举
public enum WeekDay{
 SUN(1), MON,WED,THI,FRI,SAT;
 private WeekDay(){}
 private WeekDay(int x){}
}
1) 构造函数必须位于枚举元素的后面 枚举元素最后加分号
2)当元素后加对应的(1)时,SUN元素的创建调用的是带参数的构造方法
带有抽象方法的枚举
 
 

public enum TrafficLamp {
  RED(30){
   public  TrafficLamp nextLamp(){
    return GREEN;
   }
  },
  GREEN(40){
   public  TrafficLamp nextLamp(){
    return YELLOW;
   }
  },
  YELLOW(4){
   public  TrafficLamp nextLamp(){
    return RED;
   }
  };
  public abstract TrafficLamp nextLamp();

private int time ;

private TrafficLamp(int time){this.time = time ;}
 }

/*

因为RED,GREEN,YELLOW都是TrafficLamp的实例对象,而TrafficLamp有抽象方法,所以抽象方法由它的子类去实现,上面是实现格式

抽象方法加构造方法.....

*/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值