黑马程序员_java的一些新特性

来源:互联网 发布:傻瓜进销存软件破解版 编辑:程序博客网 时间:2024/06/07 05:12

Eclipse中,通过首选项设置的很多东西的有效范围都是本工作空间。比如:快捷键和代码模版的配置。
透视图:就是指由若干个视图(小窗口)组成的集合。
Eclipse中的调试:先设置断点,然后在本编辑窗口中右击一下,然后选择debug就会切换到debug透视图,选中变量右击选择watch,就可以一步一步的观察运行效果了。
在开发中要注意编译源程序时的javac版本与运行时java版本要一致。否则容易发生错误。
注释选中的代码可以用快捷键:ctrl+shift+/


静态导入:导入一个类中的静态成员。然后在程序中使用该静态变量或者静态方法的时候就可以不用类名来调用了,可以直接使用。
如:
import static java.lang.Math.*;
import static java.lang.Math.max;


可变参数方法:methodA(int i, int ... args) {...}
可变参数的声明必须位于参数列表的最后一个参数,调用可变参数的方法时,编译器为该可变参数隐含创建一个数组。在方法体中以数组的形式访问可变参数。


for循环加强形式(foreach循环):for(type 变量名 : 集合或数组变量名)
迭代变量必须在()中定义,集合变量可以是数组或者是实现了Iterable接口的集合类。
另外:在定义变量的时候还可以加上修饰符,比如:for(final int arg : args) ...


基本数据类型的自动装箱和拆箱:基本数据类型和它所对应的包装类可以自动转换,如:Integer i = 5; int j = i + 3; 在jdk1.5以后都是合法的。
如果一个数值在一个字节之内(-128~127之间的数值),那么在自动装箱的时候系统会把这个包装类对象缓存起来,如果下一次同样的数值需要自动装箱,
那么就直接引用之前缓存起来的那个数值相同的对象。比如:Integer i = 23; Integer j = 23; 那么 i==j;如果Integer i = 128; Integer j = 128; 那么 i!=j;

享元模式(flyweight): 有很多个小的对象,他们有很多属性相同,就把他们变成一个对象,那些不同的属性就设为方法的参数传进来,叫外部属性或外部状态。
享元模式会大幅度的降低内存中对象的数量。


枚举类:枚举类里面的每一个元素都是一个类的实际对象。
枚举类里面的元素列表必须位于类里面的所有成分之前。
如果枚举类里面要定义构造方法,那么必须声明为private(私有的)

见如下例子程序:

package com.heima.exam;

public class EnumTest {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  
  MyWeekDay mwd = MyWeekDay.MON;
  System.out.println(mwd.nextDay().nextDay());
  
  WeekDay wd = WeekDay.FRI;
  System.out.println(wd);
  System.out.println(wd.name());
  System.out.println(wd.ordinal());
  System.out.println(wd.getDeclaringClass());
  System.out.println(WeekDay.valueOf("SAT"));
  System.out.println(WeekDay.values().length);
  
  System.out.println(TrafficLamp.RED.nextLamp());
  System.out.println(TrafficLamp.RED.nextLamp().time);
  System.out.println(TrafficLamp.YELLOW.time);
 }

}

enum TrafficLamp {
 RED(30) {

  @Override
  public TrafficLamp nextLamp() {
   // TODO Auto-generated method stub
   return GREEN;
  }
 }, 
 GREEN(50) {

  @Override
  public TrafficLamp nextLamp() {
   // TODO Auto-generated method stub
   return YELLOW;
  }
 }, 
 YELLOW {

  @Override
  public TrafficLamp nextLamp() {
   // TODO Auto-generated method stub
   return RED;
  }
 };
 
 public int time;
 
 private TrafficLamp(){
  
 }
 
 private TrafficLamp(int time) {
  this.time = time;
 }
 
 public abstract TrafficLamp nextLamp();
 
}

enum WeekDay {
 SUN(0), MON(), TUE(), WED, THI, FRI, SAT;
 
 private WeekDay() {
  System.out.println("first");
 }
 
 private WeekDay(int day) {
  System.out.println("second");
 }
}

abstract class MyWeekDay {
 
 public final static MyWeekDay SUN = new MyWeekDay() {

  @Override
  public MyWeekDay nextDay() {
   // TODO Auto-generated method stub
   return MON;
  }
  
 };
 public final static MyWeekDay MON = new MyWeekDay() {

  @Override
  public MyWeekDay nextDay() {
   // TODO Auto-generated method stub
   return SUN;
  }
  
 };
 
 private MyWeekDay() {
  
 }
 
 /*public MyWeekday nextDay() {
  
  if(this == SUN) {
   return MON;
  } else {
   return SUN;
  }
 }*/
 
 public abstract MyWeekDay nextDay();
 
 public String toString() {
  if(this == SUN) {
   return "SUN";
  } else {
   return "MON";
  }
 }
 
}


当枚举只有一个元素时,就可以作为一种单例的实现方式。

 

------------- android培训、java培训、java博客、java学习型技术博客、期待与您交流! -------------

0 0