----------------android培训、java培训、期待与您交流! --------------------
eclipse开发工具介绍
1、project(工程):
1)一个工程包含有:包,jar包,资源文件,java源文件等内容。
2)将一个工程的所有源文件用一个工程来组织,开发工具能对所有源文件集中管理,并且每个源文件的位置和相互关系,配置信息等都在工程中有记录。
2、preferences(首选项):
在workspace(工作间)中配置的信息,将会影响到它下面所有的工程,一个工作间包含多个工程。
3、在eclipse下如何调试:
在代码上打个断点-->右键选Debug As-->进入Debug透视图-->选中要调试的程序右键选Watch。
4、perspective(透视图)和view(视图)的关系:
view:每一个小窗口就是一个视图。可通过window下的show view调出相应的视图。
perspective:透视图就是若干个小窗口的集合。
5、导入已有工程:
1)将其他工作间中的工程拷贝到当前工作间所在的文件夹下。
2)在eclipse中右击工程--->导入--->浏览选择当前工作间目录下拷贝过来的工程。
6、配置JDK环境:
右击工程--->BuildPath --->ConfigureBuildPath-->Libraries(库)--->移除导入的工程的JDK库(remove),增加自己的库(Add libraries)。
注:
Add JARs是增加打个Jar包,
如果Jar包不在当前工程文件夹中,用Add Exernd JARs
如果Jar包在当前工程文件夹中,用Add JARs
增加一个库相当于增加很多Jar,这是一个打包的过程。
JDK1.5新特性:
1,静态导入 :1) import语句:是导入一个类或某个包中的所有类。
2) import static语句:导入一个类中的某个静态方法或所有静态方法。
如,
import static java.lang.Math.abs;
import static java.lang.Math.max;
public class StaticImport {
/**
* @param args
*/
public static void main(String[] args) {
// System.out.println(Math.max(3, 9));
// System.out.println(Math.abs(3-9));
//使用静态导入就可以简化书写
System.out.println(max(3,9));
System.out.println(abs(3-9));
}
}
2. 增强for循环:
语法:for(type 变量名 : 集合变量名){statement}
注意:迭代变量必须定义在()中。
集合变量可以使参数或实现Iterable接口的集合类。
变量类型前可加修饰符,如final(可以被内部类所访问)。
3,可变参数:(方法的重载)特点:
1) 只能出现在参数列表的最后。
2) 用…这三个点表示参数可以有很多,且这三个点位于变量类型和变量名之间,前后有无空格皆可。
3) 调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。
如,
public class VariableParameter {
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 arg : args){
sum += arg ;
}
return sum ;
}
}
4,自动装箱与自动拆箱:
自动装箱:Integer a = 3; 这里将3封装成了对象。
自动拆箱:a + 2;这里又将对象3变成了普通的3。
对于基本数据类型的说明:整数在-128 ~ 127之间的数,包装成Integer类型对象,会存入常量池中的缓存,再创建同一个对象的时候,会直接使用前一个已有的值,因为这些小数值使用的频率很高,所以这些数值需要如此的使用以优化内存。
这里用到了一种模式:称之为享元设计模式。
享元设计模式:
1)定义:如果很多很小的对象,他们有很多相同的属性,那么他们就可变为一个对象使用,这些属性称为内部状态。还有些不同的属性,作为方法参数传入,这些相同的属性成为外部状态。这种优化内存,只创建一个对象的模式,称之为享元模式。
2)应用:(1) word中输入英文字母,可创建26对象,每个对象值是出现的位置不同(坐标),所以可用一个对象调用位置的方法:如,字母i:i.display(intx,int y),将高度重复使用的char类型的字母i封装成一个对象使用。
3) 图标:window下的文件夹图标,只有名称这个属性不同,包含了很多其他相同的属性,那么可以应用享元模式。
4)valueOf(int x):Integer中静态方法,讲一个整数转换为Integer,即把基本数据类型变为包装类。
5,枚举(Enum):
使用枚举的目的:枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。
通过enum定义枚举类,在其中列出所有同类的元素常量值作为子类的实例对象使用。
(1) 枚举概述: 枚举类是一个特殊的类,每个元素都是该类的一个实例对象。
用枚举类规定值,如下面的WeekDay类。以后用此类型定义的值只能是这个类中规定好的那些值,若不是这些值,编译器不会通过。好处:在编译时期就会发现错误,表明值不符合,减少了运行时期的错误。
如果调用者想打印枚举类中元素的信息,直接调用打印即可,因为枚举自动为我们实现了toString方法。不用再自己写toString方法了。
采用抽象方法定义的nextDay可将大量的if else语句转换成了一个个独立的类。
如果想在一个类中编写完每个枚举类,那么可将枚举类定义成该类的内部类。
枚举类是一个class,而且是一个不可被继承的final类,其中的元素都是类静态常量。
(2) 构造函数:构造函数只是在构造枚举值的时候被调用,并且它的返回值类型就是类名。
构造函数只能用private修饰,不可以用public器。这样可以保证外部代码无法重新构造枚举类的实例, 因为枚举值是public static final的常量,但是枚举类的方法和数据是可以被外部访问的。
构造函数可以有多个,调用哪个即初始化相应的值。
(3) 注意:
1) 元素列表即所有的元素项目,必须放在整个类的最前面。
2) 如果枚举类中除了元素列表还有其它成员,那么元素列表后要有分号。
3) 枚举类中的方法为private
4) 在元素后跟上(),就可指定要使用的构造方法,含参数。
5) 枚举类中的每个元素都是它的一个子类对象,当枚举类中存在abstract方法,须在子类后加{}。
6)当枚举只有一个成员时,就可以作为一种单例的实现方式。
为什么要用枚举写单例?
因为构造方法不用自己写了,默认的就是私有的不带参数的。new Instence()也不用自己写了,根据元素自然而然的就写出来了。
(4) 所有的枚举类都继承了Enum方法,方法如下:
1) toString() ---> 返回枚举量的名称
2) ordina() ---> 返回枚举值在枚举类中的顺序,按定义的顺序排
3)getClass() ---> 获取对应的类名
静态方法:
1) valueOf(String e) ---> 转为类中对应的对象,即将字符串转为对象
2) values() ---> 获取数组,将元素放入一个数组中。
枚举演示:
public class EnumTest {
public static void main(String[] args) {
WeekDay weekday = WeekDay.THI;
System.out.println(weekday);
System.out.println(weekday.name());//获取名称
System.out.println(weekday.ordinal());//获取该元素在枚举中排在第几个位置上
System.out.println(WeekDay.valueOf("SUN"));
System.out.println(WeekDay.values().length);
}
public enum WeekDay{//它是EnumTest的内部类
//列表成员必须放在首句
SUN(),MON(1),TUE,WED,THI,FRI,SAT;//SUN()和SUN调用的都是空参数列表的方法。
private WeekDay(){
System.out.println("first");
}
private WeekDay(int day){
System.out.println("second");
}
}
public enum TrafficLamp{
// RED,GREEN,YELLOW;
RED(30){
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return GREEN;
}
},GREEN(45){
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return YELLOW;
}
},YELLOW(5){
@Override
public TrafficLamp nextLamp() {
// TODO Auto-generated method stub
return RED;
}
};
public abstract TrafficLamp nextLamp();
private int time;
private TrafficLamp(int time){
this.time = time ;
}
}
}
-----------------------android培训、java培训、期待与您交流! ---------------------