----------- android培训、java培训、java学习型技术博客、期待与您交流! ----------
一,Eclipse的使用技巧:
1,什么是eclipse
Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
2,什么是myeclipse
MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对EclipseIDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML,Struts,JSP,CSS,Javascript,Spring,SQL,Hibernate
3,eclipse和myeclipse之间的关系
1).Eclipse 是一个IDE(Integrated Developing Environment),而这个IDE是允许安装第三方开发的插件来使自身的功能得到扩展和增强的,而Myeclipse就是其中的一种有名的插件集之一,MyEclipse将开发者常用到的一些有用的插件都集合起来。多数人都是将Eclipse作为Java的集成开发环境使用,虽然Eclipse使用Java开发:但Eclipse不仅仅局限于Java开发,还可用于其它语言的开发,如C/C++; Eclipse是一个框架和一组服务,它通过各种插件来构建开发环境,因此只要提供支持C/C++ 插件便能进行相应语言的开发。
2).MyEclipse为Eclipse提供了一个大量私有和开源的Java工具的集合,这解决了各种开源工具的不一致和缺点。NitroX是一个繁杂而强大的加速Java Web应用开发的工具,还包含了一个强大且能够编译所有JSP和Struts Web应用的工具AppXRay。这些工具解析Java和XML配置文件. MyEclipse的实际价值来自包含的发布包中的大量的工具。如CCS/JS/HTML/XML的编辑器,帮助创建EJB和Struts项目的向导并产生项目的所有主要的组件如action/session bean/form等。还包含编辑Hibernate配置文件和执行SQL语句的工具。
4,名词解释
java ee:Java Platform,Enterprise Edition 是sun公司推出的企业级应用程序版本。这个版本以前称为 J2EE。能够为我们帮助开发和部署可移植、健壮、可伸缩且安全的服务器端 Java应用程序。
IDE:Integrated Development Environment,,即集成开发环境
JMS:Java Message Service 提供企业消息服务,如可靠的消息队列、发布和订阅通信、以及有关推拉(Push/Pull)技术的各个方面。
JMX:Java Management Extensions,即Java管理扩展,是一个为应用程序、设备、系统等植入。
JNDI:Java Naming and Directory Interface 提供从Java平台到的统一的无缝的连接。这个接口屏蔽了企业网络所使用的各种命名和目录服务。
5,工程管理与快捷键和代码模板
IDE开发工具都支持使用工程化方式管理一个项目的程序开发过程,一般来说一个相对独立的项目就是一个工程,一个项目中涉及的多个java文件,资源文件等用一个工程进行管理。在不使用工程管理的情况下,如果一个项目中包括多个Java源文件,编程人员需要精心维护这些源文件之间、以及源文件与其它文件的目录关系,需要逐一编译这些源文件,需要手工启动运行编译后的结果。如果将一个程序的所有源文件用一个工程来组织,开发工具能对所有源文件集中管理,记住每个源文件的位置和相互关系。 工程中有哪几个源文件、启动类是哪个、启动参数设置等配置信息在工程中都记录。
快捷键修改可以在windows中的preferences(首选项)中的通用(general)中的keys里面修改和查找.比如一般输入syso按下alt+/可以自动生成System.out.println(),这样会方便很多,节省很多时间去写代码。设置alt+/键进行内容提示时,要注意解除alt+/键原来的绑定关系,直接输入alt+/就可以找到它的绑定关系,删除绑定关系时也可以使用remove binding这个按钮
想将一段代码插入一个语句中可以选中这句话右键surroundwith中选中模板,如果没有也可以自己设置模板 比如try {}finally{} 可以在窗口,首选项中java编辑中选择模板添加新模板
Ctrl + Shirft + /可以注释多条语句
6,工作区间和视图管理
一个workspace(工作区间)可以包含多个project(工程),一个工作区间的设置可以改变影响下面的每一个工程。一个workspace保留了eclipse的一套环境选项的配置,例如,所使用的javac和java命令,等等,细节请查看window->preferences。如果要为eclispe再配置一套环境选项,可以再创建一个workspace。
perspective(透视图)和view(视图)的关系:透视图是很多小视图也就是小窗口的一个集合,每一个窗口可以通过在window下的show view里面调出来。
7,单个工程中的javac和java
有些时候myeclipse中的运行环境是默认的jdk1.5 如果把编译环境改成1.6 编译出来的class文件会报出错误
因为高版本编译出来的文件低版本不能运行
8,在eclipse下怎么查看某个变量的值?
在某个值处先打个断点,然后进入debug透视图,选中变量右键watch观察。、
9,导入已有的工程
首先将需要导入的工程复制到自己的工作区间下,然后在eclipse中选中file下的import,已存在的工程中选中需要导入的那个工程。
10,配置JDK
可以在工程的右键中选中buildpath里面的libraries库中移除已有的 然后增加自己需要的JDK版本。
二,java1.5的新特性
1,静态导入
import语句可以导入一个类或某个包中的所有类
import static语句导入一个类中的某个静态方法或所有静态方法
语法举例:
import static java.lang.Math.sin;
import static java.lang.Math.*;
列如:求两个数的最大值和两个数相减的绝对值,可以分别导入这两个静态方法也可以直接导入Math类下的所有静态方法。
//import static java.lang.Math.max; import static java.lang.Math.*; 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)); } }
注意:如果将javac改成了1.4或更低版本,那么静态导入等jdk1.5的特性都将会报告错误。
2,可变参数
用... args来表示
一个方法接受的参数个数是不固定的,比如:
System.out.println(countScore(2,3,5));
System.out.println(countScore(1,2,3,5));
java1.5通过引入可变参数,使得一个方法可以接受的参数是不固定的。
可变参数的特点:
1)只能出现在参数列表的最后;
2)...位于变量类型和变量名之间,前后有无空格都可以;
3)调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。
举例代码:
public static void main(String[] args) { System.out.println(add(1,2,3,5)); 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]; } return sum; }
3,增强for循环
语法:
for ( type 变量名:集合变量名 ) { … }
注意事项:
迭代变量必须在( )中定义!
集合变量可以是数组或实现了Iterable接口的集合类
举例:
public static int add(int x,int ...args) { int sum = x; for(int arg:args) { sum += arg; } return sum; }
4,基本数据类型的自动拆箱与装箱
自动装箱:自动把一个基本数据类型封装成一个Integer对象赋给iObj这个引用变量
Integer iobj = 12;
自动拆箱:Integer这个对象不支持加法运算 必须转换成基本数据类型才能继续进行加法运算 这就叫拆箱
System.out.println(num1 + 12);
Integer i1=137;
Integer i2=137;//Integer的范围是在-128~127之间
System.out.println(i1==i2);
所以i1和i2的值不相等。
引入一种设计模式:
享元模式:flyweigt
有很多个小的对象,有很多属性相同,把他们变成一个对象,不同的属性把他们变成方法的一个参数
称之为外部状态。那些相同的属性把它称之为内部状态
三,枚举
1,为什么要有枚举
问题:要定义星期几或性别的变量,该怎么定义?假设用1-7分别表示星期一到星期日,但有人可能会写成int weekday = 0;或即使使用常量方式也无法阻止意外。
枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。枚举可以让阶段无法实现这一目标。编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发
2,用普通类如何实现枚举功能,定义一个Weekday的类来模拟枚举功能。
私有的构造方法
每个元素分别用一个公有的静态成员变量表示
可以有若干公有方法或抽象方法。采用抽象方法定义nextDay就将大量的if.else语句转移成了一个个独立的类。
代码演示:
public abstract class WeekDay1 { //私有化对象 不允许其他人创建 private WeekDay1(){} public static final WeekDay1 SUN =new WeekDay1(){ @Override public WeekDay1 nextDay() { // TODO Auto-generated method stub return MON; } }; public static final WeekDay1 MON =new WeekDay1(){ @Override public WeekDay1 nextDay() { // TODO Auto-generated method stub return SUN; } }; public abstract WeekDay1 nextDay(); /*public WeekDay nextDay(){ if(this == SUN){ return MON; }else { return SUN; } }*/ public String toString(){ return this ==SUN?"SUN" :"MON"; } }
3,枚举的基本应用
枚举是一种特殊的类,其中的每个元素都是该类的一个实例对象,例如可以调用WeekDay.SUN.getClass().getName和WeekDay.class.getName()。
代码演示:
WeekDay weekDay2 =WeekDay.FRI; System.out.println(weekDay2); System.out.println(weekDay2.name());//获取名字 System.out.println(weekDay2.ordinal());//返回枚举常量的序数 System.out.println(WeekDay.valueOf("SUN").toString()); System.out.println(WeekDay.values().length);//打印WeekDay中的元素个数
4,枚举的高级应用
枚举就相当于一个类,其中也可以定义构造方法、成员变量、普通方法和抽象方法。
枚举元素必须位于枚举体中的最开始部分,枚举元素列表的后要有分号与其他成员分隔。把枚举中的成员方法或变量等放在枚举元素的前面,编译器报告错误。
带构造方法的枚举
构造方法必须定义成私有的
如果有多个构造方法,该如何选择哪个构造方法?
枚举元素MON和MON()的效果一样,都是调用默认的构造方法。
如果是带有参数的元素则应该选择带有参数的构造方法。
代码演示:
public enum WeekDay{ SUN(1),MON(),TUE,WED,THI,FRI,SAT; private WeekDay(){System.out.println("first");}//必须列于元素列表之后 private WeekDay(int day){System.out.println("second");} }
带方法的枚举
定义枚举TrafficLamp
实现抽象的next方法:每个元素分别是由枚举类的子类来生成的实例对象,这些子类采用类似内部类的方式进行定义。
增加上表示时间的构造方法
列如:
//交通灯演示 public enum TrafficLamp{ 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培训、java学习型技术博客、期待与您交流! ----------