`
想学跑的猪
  • 浏览: 14077 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

黑马程序员_Java高新技术_之篇一_Jdk 1.5新特性

阅读更多

            ------ android培训java培训、java基础学习技术总结、期待与您交流! ----------

       一、eclipse的使用技巧


     * 简写
     * java ee  -->enterprise environment
     * ide  -->itegrity development environment
     * NetBean sun公司开发的免费开源的集成开发工具
     * JBuilder 因为收费 所以没落了
     * jms
     * jmx
     * jndi
     * 设置整个workspace的javac与java
     * 设置单个的javac与java
     * 高版本的java能否运行低版本的javac编译的程序?
     * 低版本的javac能否运行高版本的javac编译程序?
     *
     * eclipse工程管理与快捷键配置
     * preferences    -->首选项
     * 可以手动的设置快捷键        preferences -->general -->keys-->content Assist
     * 例如:System.out.println();   -->Alt+/
     * 代码模版的设置位置:      java-->editor-->Templates
     *             try{  ${line_selection  }finnaly{  ${cursor}  }
     * 可以手动配置编译器和运行器的版本  
     * a. 工作区间的编译器与运行器   preferences -->Java-->Compiler
     * b.单个项目的编译器与运行器      project -->preferences-->Compiler
     *
     * switch workspace    -->切换工作区间
     * 包名         -->公司 网址.具体包含义
     * 透视图       -->由多个视图组成,方便使用 
     * 例如:Java perspective    Myeclipse Java enterprise perspective
     * Debug perspective

          示例1:

public class EclipseUse {
	public static void main(String[] args) {
          int x=1;
          x++;
          System.out.println(x); 
	}

}

 

     二、Jdk 1.5的新特性

 

        1. 静态导入
     * Math.max(3,6);    -->求最大值
     * Math.abs(3-6);      -->求绝对值
     * import static java.lang.Math.*;
     * max(3,6);     //jdk 1.5的新特性
     * max(3-6);     //静态导入后不用在写Math类名。

      示例2:

import static java.lang.Math.max;
import static java.lang.Math.abs;
public class StaticImport {
	public static void main(String[] args) {
           int x=1;   
           System.out.println(x);
           System.out.println(max(3,6));
           System.out.println(abs(3-6));
	}
}

 
     *2.可变参数
     * overload与override的区别
     * 问题:一个方法接受的参数个数不固定
     *          System.out.println(add(2,3,5));
     *          System.out.println(add(1,2,3,5));
     * 可变参数的特点:
     * 只能出现在参数列表的最后;
     * 位于变量类型和变脸名之间,前后有无空格都可以;
     * 调用可变参数的方法是,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。

    示例3:

public class VariableParameter {
	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=0;
		/*for(int i=0;i<args.length;){
			sum+=args[i];
		}*/
		for(int arg:args){
			sum+=arg;
		}
		return sum; 
	}
}

 
     3.增强for循环
     * 语法
     * for(type 变量名:集合变量名){}
     * 注意事项:
     * 迭代变量必须在()中变量定义!
     * 集合变量可以是数组或实现了Iterable接口的集合类
     * 举例:
     * public static int add(int x,args){
     * int sum=x;
     * for(int arg:args){
     * sum+=arg;
     * }
     * return sum;
     * }

     4.基本数据类型的装箱与拆箱

     示例4:

public class AutoBox {
	public static void main(String[] args) {
         Integer iObj=3;     //jdk 1.5一下的版本是不可以这样复制的
	                         //对3进行了自动的装箱    
         System.out.println(iObj+12);   //对3进行了自动的拆箱
         String s1=new String("abc");
         String s2=new String("abc");
         Integer i1=12;
         Integer i2=12;
         System.out.println(i1==i2);    //结果为true  这里用到了享元模式-->flyweight
                                           //减少创建对象次数,
         Integer i3=Integer.valueOf(12);
         Integer i4=Integer.valueOf(12);
         System.out.println(i3==i4);        
	}

}

 

     5.枚举
     * 为什么要有枚举
     * 问题:要定义星期几或性别的变量,该怎么定义?假设1-7分别表示星期一到星期日
     * ,但有人可能或写成int weekDay=0;
     * 枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译
     * 器报错。枚举可以让编译器在编译时就可以控制程序中填写的非法值,
     * 普通变量的方式在开发阶段无法实现这一目标。
     * 用普通类如何实现枚举功能,定义一个WeekDay的类来模拟枚举功能。
     * 私有的构造方法
     * 每个元素分别用一个公有的静态成员变量表示
     * 可以有若干个公有的方法或抽象方法,例如,要提供nextDay方法必须是抽象的。
     * 枚举的基本应用
     * 举例:定义一个weekDay的枚举;
     * 扩展:枚举类的values,valueOf,name,toString,ordinal等;
     * 总结:枚举是一种特殊的类,其中每一个元素都是该类 的一个实例对象,例如可以调用
     * WeekDay.SUN.getClass().getName()和WeekDay.class.getName()
     * 枚举就相当于一个类,其中也可以定义构造方法、成员变量、普通方法和抽象方法。
     * 枚举元素必须位于枚举体中的最开始部分,枚举元素列表的后面有分号与其他成员分隔。把枚举中的成员方法或变量的放在枚举元素的前面,编译器报告错误。
     * 没构造方法的枚举
     * 构造方法必须定义私有的
     * 如果有多个构造方法,该如何选择那个构造方法?
     * 枚举元素MON和MON(),的效果是一样,都调用了默认的构造方法。
     * 带方法的枚举
     * 定义枚举TrafficLamp
     * 实现普通的next()方法
     * 实现抽象的next():每个元素分别是由枚举来生成的实例对象,这些子类采用类似内部类的方式进行定义。
     * 增加上表示时间的构造方法
     * 枚举只有一个成员是,就可以作为一种单例的实现方式。

      示例5:

public class EnumTest {

	public static final String TrafficLamp = null; 
	public static void main(String[] args) {
		// TODO Auto-generated method stub
          WeekDay weekDay=WeekDay.SUN;
          System.out.println(weekDay);
          System.out.println(weekDay.name());
          System.out.println(weekDay.ordinal());
          System.out.println(weekDay.valueOf("SUN").toString());
          System.out.println(weekDay.values().length); 
	} 
	public enum WeekDay{
		SUN(){
			WeekDay nextDay(){
				return MON;
			}
		},MON(){
		     WeekDay nextDay(){
		    	 return TUE;
		}
		},TUE(){
			WeekDay nextDay(){ 
				return MON;
			} 
		},WEN(){
			WeekDay nextDay(){
				return MON;
			}
		},THU(){
			WeekDay nextDay(){
				return MON;
			}
		},FRI(){
			WeekDay nextDay(){
				return MON;
			}
		},SAT(){
			WeekDay nextDay(){
				return MON;
			}
		};
		}
		int day=0;
		private EnumTest(){
			System.out.println("first");
		}
		 private EnumTest(int day){ 
			this.day=day;
		}
		WeekDay nextDay() {
			return null;
		}		
		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;
			} 
		}
	}

 

 

 

 

 

 

            ------ android培训java培训、java基础学习技术总结、期待与您交流! ----------

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics