-----------android培训、java培训、java学习型技术博客、期待与您交流! ------------
第一节 eclipse开发工具简述
一、概述:
1、eclipse是运行在java基础上的工具。
2、名词:
1)IDE:ItegrityDevelopment Enviroment,集成开发环境
2)JavaEE:javaEnterprise Edition:java企业版开发工具。
3)JMS:Java MessageService,Java消息服务,是一个Java平台中关于面向消息中间件的API,用于在两个应用程序间,或分布式系统中,发送消息,进行异步通信。
4)JMX:Java ManagementExtensions,Java管理扩展;是一个为应用程序、设备、系统植入管理功能的框架。
5)JNDI:Java Nameingand Directory Interface:Java命名和目录接口。
6)JDBC:Java DataBase Connectivity:Java数据库连接。
3、Myeclipse和eclipse的区别:
1)Myeclipse:是elipse的插件,用于开发javaEE的平台,为其打补丁,扩展其功能,可以开发JavaEE程序即web项目,但是现在Myeclipse也集成了eclipse的功能,可直接使用Myeclipse。
2)eclipse:是开发java的一款专业的IDE(集成开发环境),以前需要Myeclipse才能开发JavaEE程序,现在的eclipse的版本也可以不用再安装Myeclipse插件,直接可以开发JavaEE项目。
二、eclipse开发工具介绍:
1、project(工程):
1)一个工程包含有:包,jar包,资源文件,java源文件等内容。
2)将一个工程的所有源文件用一个工程来组织,开发工具能对所有源文件集中管理,记住每个源文件的位置和相互关系,配置信息等都在工程中有记录。
2、preferences(首选项):
在workspace(工作间)中配置,将会影响到它下面所有的工程,一个工作间包含多个工程,不同透视图就是几个小窗口的集合。
3、在eclipse下如何查看变量值:
在变量处打个断点--->Debug透视图,调试运行--->选中变量,右键选watch(观察),就可以看到了。
4、perspective(透视图)和view(视图)的关系:
view:每一个小窗口就是一个视图。可通过window下的show view调出相应的视图。
perspective:透视图就是若干个小窗口的集合。
5、导入已有工程:
1)将其他工作间中的工程拷贝到当前工作间所在的文件夹下。
2)在eclipse中右击工程--->导入--->浏览选择当前工作间目录下拷贝过来的工程。
6、配置JDK环境:
右击工程--->BuildPath --->Libraries(库)--->移除导入的工程的JDK库,增加自己的库。
注:
Add JARs是增加打个Jar包,
如果Jar包不在当前工程文件夹中,用Add Exernd JARs
如果Jar包在当前工程文件夹中,用Add JARs
增加一个库相当于增加很多Jar,这是一个打包的过程。
第二节 知识点加强--->JDK1.5新特性
一、静态导入 importstatic简述:
1、import语句:是导入一个类或某个包中的所有类。
2、import static语句:导入一个类中的某个静态方法或所有静态方法。
二、增强for循环:
1、语法:for(type 变量名 : 集合变量名){statement}
2、注意:迭代变量必须定义在()中,集合变量可以使参数或实现Iterable接口的集合类,变量类型前可加修饰符,如final(可被局部内部类访问到)。
三、可变参数:(方法的重载)
特点:
1、只能出现在参数列表的最后。
2、用…这三个点表示参数可以有很多,且这三个点位于变量类型和变量名之间,前后有无空格皆可。
3、调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。
示例:
public class VarableParameter {
public static void main(String [] args){
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];
}*/
for(int arg : args){
sum += arg;
}
return sum;
}
}
四、基本数据类型的自动拆箱与装箱:
1、自动装箱:Integer iObj = 3;
2、自动拆箱:iObj + 2;
3、对于基本数据类型的说明:整数在-128 ~ 127之间的数,包装成Integer类型对象,会存入常量池中的缓存,再创建同一个对象的时候,会直接使用前一个已有的值,因为这些小数值使用的频率很高,所以这些数值需要如此的使用以优化内存。
4、享元模式(flyweight):
1)概述:如果很多很小的对象,他们有很多相同的属性,那么就可变为一个对象使用,这些属性称为内部状态,还有些不同的属性,作为方法参数植入,这些称为外部状态。这种优化内存,只创建一个对象的模式,称之为享元模式。
2)应用:
(1)word中输入英文字母,可创建26对象,每个对象值是出现的位置不同(坐标),所以可用一个对象调用位置的方法:如,字母i:i.display(intx,int y),将高度重复使用的char类型的字母i封装成一个对象使用。
(2)图标:window下的文件夹图标,只哟名称这个属性不同,包含了很多其他相同的属性,那么可以应用享元模式。
3)valueOf(int x):Integer中静态方法,讲一个整数转换为Integer,即把基本数据类型变为包装类。
第三节 枚举类--->JDK1.5新特性
一、概述:
示例:
public abstract class WeekDayTest {
public WeekDayTest(){}
public final static WeekDayTest SUN = new WeekDayTest(){
public WeekDayTest nextDay(){
return MON;
}};
public final static WeekDayTest MON = new WeekDayTest(){
public WeekDayTest nextDay() {
return SUN;
}};
public abstract WeekDayTest nextDay();
public String toString(){
return this==SUN ? "SUN" : "MON";
}}
1、通过enum定义枚举类,在其中列出所有同类的元素常量值作为子类的实例对象使用。枚举类是一个特殊的类,每个元素都是该类的一个实例对象。
2、用枚举类规定值,如上面的WeekDay类。以后用此类型定义的值只能是这个类中规定好的那些值,若不是这些值,编译器不会通过。
3、好处:在编译时期就会发现错误,表明值不符合,减少了运行时期的错误。
4、如果调用者想打印枚举类中元素的信息,需由编写此类的人定义toString方法。
5、采用抽象方法定义的nextDay可将大量的if else语句转换成了一个个独立的类。
6、如果想在一个类中编写完每个枚举类和测试调用类,那么可将枚举类定义成调用类的内部类。
枚举类是一个class,而且是一个不可被继承的final类,其中的元素都是类静态常量。
二、枚举的特征及用法:
示例:
public class EnumText {
public static void main(String[] args) {
WeekDayTest weekDay = WeekDayTest.MON;
System.out.println(weekDay.nextDay());
WeekDay weekDay2 = WeekDay.FRI;
System.out.println("获取此对象:" + weekDay2);
System.out.println("获取对象名称:" + weekDay2.name());
System.out.println("获取排行:" + weekDay2.ordinal());
System.out.println("获取类名:" + weekDay2.getClass());
//静态方法:
System.out.println("通过字符串获取对象:"+WeekDay.valueOf("SUN"));
System.out.println("将元素存入数组:"+WeekDay.values().length);
}
//定义星期枚举类
public enum WeekDay{
SUN(1),MON,TUE,WED,THI,FRI,SAT;
private WeekDay(){
System.out.println("first");
}
private WeekDay(int x){
System.out.println("second");
}
}
//定义交通灯
public enum TrafficLamp{
//定义3个元素,即此类的子类,覆写抽象方法
RED(30){
public TrafficLamp nextLamp() {
return GREEN;
}},
GREEN(45){
public TrafficLamp nextLamp() {
return YELLOW;
}},
YELLOW(5) {
public TrafficLamp nextLamp() {
return RED;
}};
private int time;
//构造方法
private TrafficLamp(int time){this.time = time;}
//抽象方法,转为下个灯
public abstract TrafficLamp nextLamp();
}
}
1、构造器:
1)构造器只是在构造枚举值的时候被调用。
2)构造器只有私有private,绝不允许有public构造器。这样可以保证外部代码无法重新构造枚举类的实例,这样是合情合理的,因为枚举值是public static final的常量,但是枚举类的方法和数据域是可以被外部访问的。
3)构造器可以有多个,调用哪个即初始化相应的值。
2、所有的枚举类都继承了Enum方法,方法如下:
1)toString() ---> 返回枚举量的名称
2)ordina() ---> 返回枚举值在枚举类中的顺序,按定义的顺序排
3)getClass() ---> 获取对应的类名
静态方法:
1)valueOf(String e) ---> 转为类中对应的对象,即将字符串转为对象
2)values() ---> 获取数组,将元素放入一个数组中。
三、注意:
1、元素列表即所有的元素项目,必须放在整个类的最前面。
2、元素列表后要有分号
3、枚举类中的方法为private
4、在元素后跟上(),就可指定要使用的构造方法,含参数。
5、枚举类中的每个元素都是它的一个子类对象,当枚举类中存在abstract方法,须在子类后加{},并在其中实现此方法。
四、总结:
1、匿名内部类比较常用
2、类的方法返回的类型可以是类的类型
3、类中可定义静态常量,常量的结果就是自己这个类型的实例对象
4、如果枚举只有一个成员,就可以作为一种单利的实现方式,对象只有一个。