----------- android培训、java培训、期待与您交流! ------------
Eclipse
Eclipse是一个IDE(Integrated DevelopmentEnvironment),集成开发环境。它是IBM开发的免费开源软件,使用java开发。界面使用的是SWT而非AWT+Swing。
Eclipse开发环境需要建立在jdk之上,它是基于jdk运作的,因此需要先安装jdk再安装eclipse。使用javaw.exe启动图形窗口。
MyEclipse是在Eclipse上打了增强补丁,是功能加强版。
其他开发工具
NetBeans ,sun公司的免费开发环境
Jbuilder ,收费
IDE开发工具支持使用工程化方式管理一个项目的程序开发过程。
工程中包含已包组织的class文件,以及java类库jar和一些第三方jar包,还有资源文件比如图片等,另外还有一些配置文件。
Eclipse配置:
英文:window--Preferences(偏好)
中文:窗口--首选项
java--compiler中可以设置使用的编译器版本
Installed JREs -- 选择运行使用的jre
工作空间---workspace
使用file--switch workspace来切换工作空间
配置快捷键:
在preferences中,如果要通用则选择general---keys,输入contentassist(内容助理),点removeBinding解除绑定,然后在binding上输入要设置的快捷键或组合快捷键,点apply(应用),如果设置了还是不能用,可能是快捷键有冲突,可以输入你要设置的快捷键,查看都绑定了哪些内容,把冲突的绑定解除掉即可。
注意:首选项配置是基于工作间的,不同的工作间可以使用不同的配置。
一个工作空间下可以有多个java工程(java project)
在包资源管理器中,点击右键--新建--java project(java项目)来创建新的java工程
创建一个工程时会提示是否切换到java透视图(java perspective)下。
不同的透视图对应不同的开发场景,其中包含不同的功能窗口。可以在右上角切换透视图。
使用右键--新建--类来创建类
使用右键refactor来重构,比如重命名、移动、抽取方法等
快捷键:
注释所选:Ctrl+shirt+\
单行注释:Ctrl+/
自动补全:Alt+/
生成源代码:ALT+SHIFT+S
静态导入:
静态导入是java 5的新特性。
导入不占用资源,只是告诉编译器到那里寻找使用到的类或方法。
import static java.lang.Math.max; //导入Math中的一个静态方法
import static java.lang.Math.*; //导入Math中的所有静态成员
静态导入用于导入类中的静态成员,导入后可直接使用其静态成员而不用使用类名调用。
静态导入也有名称冲突问题,在发生冲突时,要使用全名,即依然要使用类名调用
静态导入的主要作用是简化书写。静态导入只能在java1.5以后使用
事实上,import也是简化书写。省去使用类的全名的麻烦,比如java.util.ArrayList。
可变参数列表:
可变参数是java 5的新特性
使用方式:
方法名(数据类型... 形参名)
如:
public static int sum(int... nums){
intsum = 0;
for(inti = 0; i < nums.length; i++){
sum+= nums[i];
}
returnsum;
}
注意:
可变参数的具体实现还是借助数组。调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体内以数组的形式访问可变参数。
可变参数列表可接受空值。
在使用了可变参数列表的情况下,可变参数后面不可添加其他的参数。
即可变参数必须定义在最后边。
method(String str, int... i) //ok
method(int.. i, String str) //error
foreach循环
也叫增强for循环,是java 5 新特性。
for(修饰符 元素类型元素名 : 集合表达式){
}
例如:
for(int arg : args){
sum+= arg;
}
return sum;
foreach循环适用于实现了java.lang.Iterable接口的类,该接口是java5.0新添加的接口,实现了此接口的类都是可迭代的。具有一个返回迭代器的方法:Iterator<T>iterator()。实现了此接口的类一般是容器。比如数组、Collection等。注意Map没有实现Iterable接口,它没有迭代器,所以不能使用foreach循环进行遍历。
foreach循环与普通for循环的区别:
1. foreach循环不使用索引,无法进行索引操作,这是它的一个局限性。因此它只能进行完全遍历,无法进行部分遍历。缺少了些灵活性,但是却可以更方便的遍历Set这种没有索引的集合。
2. foreach循环无法对元素进行修改,因为他是用一个新声明的引用来接受集合中的元素。这是它的另一个局限性。
自动装箱与自动拆箱:
Auto-Boxing / Auto-Unboxing: 这也是java 5的新特性。在java 5之前虽然存在基本数据类型包装器类,但是需要手工操作拆箱装箱过程,无法进行自动类型转换。
Integer iger = 3; //auto-boxing
int a = iger + 2; //auto-unboxing
Integer i1 = 13;
Integer i2 = 13;
System.out.println(i1 == i2); //Output :true , -128至127共享对象
这实际上是享元设计模式(flyweight)的一种体现---对象共享--“求同存异”。
享元设计模式:
Flyweight中两个重要概念--内部状态intrinsic和外部状态extrinsic
如果有很多小对象,他们有很多相同的东西,那么就可以抽取共性,把他们变成一个对象。而这些对象可能并非完全相同,那么就把这些不同的东西变成外部属性,作为方法的参数传入。
享元模式常常包含了工厂模式。
Flyweight factory负责维护一个Flyweight池(存放内部状态),当客户端请求一个共享Flyweight时,这个factory首先搜索池中是否已经有可适用的,如果有,factory只是简单返回送出这个对象,否则,创建一个新的对象,加入到池中,再返回送出这个对象池