黑马软件工程师-高新技术(Eclipse使用技巧和JDK1.5新特性)

黑马程序员-----高新技术(Eclipse使用技巧和JDK1.5新特性)

------- android培训、java培训、期待与您交流! ----------

Eclipse使用技巧:

eclipse是一种IDE(集成开发环境)开发工具,IDE全称:itegrity  development  environment

Eclipsejavacjava的配置:Window-------Preferences-------Java------Complier(编译时的设置)和Installed JREs(运行时的设置)


工程建立常用4步骤:

1、新建工作间:File-------Switch Workspace

2、新建工程:File-------New-----Project-----New Project-----Java Project(点下一步)------New Java Project(输入工程名称)-------finish

3、新建class:工程名称下src(点右键)-----New-----Class-----New Java Class(设置包名和类名)------finish

4、快捷键配置:Window-------Preferences------General-----Keys(如内容助理设置:先找到Content Assist,按Removing Binding解除绑定,然后在Name下的Binding处按想要绑定的键,最后按Apply即可,Ok结束)。


Eclipse下调试变量:在需要查看的语句前面的竖直栏上双击即可插入断点(取消再次双击即可),通过插入两个断点来需要查看的范围,点击右键Debug As运行进行查看,然后选中变量点击右键Watch即可查看变量值的变化。

调用视图小窗口:Window------Show View


JDK1.5新特性:

可变参数:即传入的参数个数可以根据需求进行变化;

可变参数的特点:

      1、只能出现在参数列表的最后面;

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

      3、调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。

如下实例:

public class VarableParameter {
	public static void main(String[] args) {//主函数
		System.out.println(add(4,5,2));//可变参数的调用
		System.out.println(add(4,5,2,4));//可变参数的调用	
	}
	public static int add(int x,int...ags){//可变参数函数
		int sum=x;
		for(int i=0;i<ags.length;i++){
			sum+=ags[i];
		}
		return sum;
	}
}

自动拆装箱:可以理解为基本数据类型和对象之间的自动转换,如Integer i=10,10会自动装箱提升为一个new Integer(10)的实例对象,在如Integer i=new Integer(10),int t=i+5;new Integer(10)实例对象会自动拆箱成基本数据类型10,从而与5进行相加计算

但还有一点需注意:如Integer a=127;Integer b=127;这里a==b的,因为当数值在byte范围内时,对于新特性,如果该数值已经存在,则不会再开辟新的空间;Integer的自动装箱范围为一个字节-128127。

说到自动拆装箱就不得不说一种设计模式:

享元模式(flyweight):有很多个小的对象,他们有很多属性相同,把这些相同的属性变成一个对象,则这些相同的属性称之为这个对象的内部状态;把那些不同的属性变成方法的参数,则这些不同的属性称之为这个对象的外部状态。


高级for循环,格式:for(数据类型 变量名:被遍历的集合(Collection)或者数组){};对集合进行遍历只能获取集合元素,但是不能对集合进行操作;迭代器除了遍历,还可以进行remove集合中元素的动作,如果是用ListIterator,还可以在遍历过程中对集合进行增删改查的动作


枚举:枚举将相对于一个类,其中也可以定义构造方法、成员变量、普通方法和抽象方法;

枚举元素必须位于枚举体中最开始部分,枚举元素的后面要有分号与其他成员隔开,如果把枚举中的成员变量或方法等放在枚举元素的前面,编译器会报告错误。

带构造函数的枚举:

1、构造方法必须定义成私有;

2、如果有多个构造方法,可以在元素的后面加参数进行选择使用,如MON(1)SUNMON()SUN调用的都是空参数构造函数;

枚举如果只有一个成员时,就可以作为一种单例的实现方式。

枚举实例如下:

public class EnumTest {
	public static void main(String[] args) {
		WeekDay weekDay2=WeekDay.MON;
		System.out.println(weekDay2);
		System.out.println(weekDay2.ordinal());
		TrafficLamp traffic=TrafficLamp.GREEN;
		System.out.println(traffic);
		System.out.println(traffic.nextLamp());
	}
	public enum WeekDay{//枚举		
		SUN(1),MON,TUE,THI,FRI,SAT;//枚举元素
		private WeekDay(){System.out.println("first");}//枚举无参构造函数
		private WeekDay(int day){System.out.println("second");}//枚举有参构造函数
	}
	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;
		}
	}
}


泛型:用于限定集合所存在的对象

泛型格式:通过< >来定义要操作的引用数据类型,如ArrayList<String> al=new ArrayList<String>();

在使用java提供的对象时,什么时候写泛型呢?

    通常在集合框架中很常见,只要见到< >就要定义泛型,其实< >就是用来接收类型的,当使用集合时,将集合中要存储的数据类型作为参数传递到< >中即可。

什么时候定义泛型类?

    当类中要操作的引用数据类型不确定的时候,早期定义Object来完成拓展,现在定义泛型来完成扩展。

泛型类定义的泛型,在整个类中有效,如果被方法使用,那么泛型类的对象明确要操作的具体类型后,所有操作的类型就已经固定了;为了让不同方法可以操作不同类型,而且类型还不确定,那么可以将泛型定义在方法上。

特殊之处:静态方法不可以访问类上定义的泛型;如果静态方法操作的引用数据类型不确定,可以将泛型定义在方法上。

?通配符,也可以理解为占位符;

泛型的限定:? extends E,可以接收E类型或者E的子类型,上限;? Super E,可以接收E类型或者E的父类型。