------ android培训、java培训、java基础学习技术总结、期待与您交流! ----------
一、eclipse的使用技巧
* 简写
* java ee -->enterprise environment
* ide -->itegrity development environment
* NetBean sun公司开发的免费开源的集成开发工具
* JBuilder 因为收费 所以没落了
* jms
* jmx
* jndi
* 设置整个workspace的javac与java
* 设置单个的javac与java
* 高版本的java能否运行低版本的javac编译的程序?
* 低版本的javac能否运行高版本的javac编译程序?
*
* eclipse工程管理与快捷键配置
* preferences -->首选项
* 可以手动的设置快捷键 preferences -->general -->keys-->content Assist
* 例如:System.out.println(); -->Alt+/
* 代码模版的设置位置: java-->editor-->Templates
* try{ ${line_selection }finnaly{ ${cursor} }
* 可以手动配置编译器和运行器的版本
* a. 工作区间的编译器与运行器 preferences -->Java-->Compiler
* b.单个项目的编译器与运行器 project -->preferences-->Compiler
*
* switch workspace -->切换工作区间
* 包名 -->公司 网址.具体包含义
* 透视图 -->由多个视图组成,方便使用
* 例如:Java perspective Myeclipse Java enterprise perspective
* Debug perspective
示例1:
public class EclipseUse {
public static void main(String[] args) {
int x=1;
x++;
System.out.println(x);
}
}
二、Jdk 1.5的新特性
1. 静态导入
* Math.max(3,6); -->求最大值
* Math.abs(3-6); -->求绝对值
* import static java.lang.Math.*;
* max(3,6); //jdk 1.5的新特性
* max(3-6); //静态导入后不用在写Math类名。
示例2:
import static java.lang.Math.max;
import static java.lang.Math.abs;
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));
}
}
*2.可变参数
* overload与override的区别
* 问题:一个方法接受的参数个数不固定
* System.out.println(add(2,3,5));
* System.out.println(add(1,2,3,5));
* 可变参数的特点:
* 只能出现在参数列表的最后;
* 位于变量类型和变脸名之间,前后有无空格都可以;
* 调用可变参数的方法是,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。
示例3:
public class VariableParameter {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(add(2,3));
System.out.println(add(2,3,5));
}
public static int add(int x,int... args){
int sum=0;
/*for(int i=0;i<args.length;){
sum+=args[i];
}*/
for(int arg:args){
sum+=arg;
}
return sum;
}
}
3.增强for循环
* 语法
* for(type 变量名:集合变量名){}
* 注意事项:
* 迭代变量必须在()中变量定义!
* 集合变量可以是数组或实现了Iterable接口的集合类
* 举例:
* public static int add(int x,args){
* int sum=x;
* for(int arg:args){
* sum+=arg;
* }
* return sum;
* }
4.基本数据类型的装箱与拆箱
示例4:
public class AutoBox {
public static void main(String[] args) {
Integer iObj=3; //jdk 1.5一下的版本是不可以这样复制的
//对3进行了自动的装箱
System.out.println(iObj+12); //对3进行了自动的拆箱
String s1=new String("abc");
String s2=new String("abc");
Integer i1=12;
Integer i2=12;
System.out.println(i1==i2); //结果为true 这里用到了享元模式-->flyweight
//减少创建对象次数,
Integer i3=Integer.valueOf(12);
Integer i4=Integer.valueOf(12);
System.out.println(i3==i4);
}
}
5.枚举
* 为什么要有枚举
* 问题:要定义星期几或性别的变量,该怎么定义?假设1-7分别表示星期一到星期日
* ,但有人可能或写成int weekDay=0;
* 枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译
* 器报错。枚举可以让编译器在编译时就可以控制程序中填写的非法值,
* 普通变量的方式在开发阶段无法实现这一目标。
* 用普通类如何实现枚举功能,定义一个WeekDay的类来模拟枚举功能。
* 私有的构造方法
* 每个元素分别用一个公有的静态成员变量表示
* 可以有若干个公有的方法或抽象方法,例如,要提供nextDay方法必须是抽象的。
* 枚举的基本应用
* 举例:定义一个weekDay的枚举;
* 扩展:枚举类的values,valueOf,name,toString,ordinal等;
* 总结:枚举是一种特殊的类,其中每一个元素都是该类 的一个实例对象,例如可以调用
* WeekDay.SUN.getClass().getName()和WeekDay.class.getName()
* 枚举就相当于一个类,其中也可以定义构造方法、成员变量、普通方法和抽象方法。
* 枚举元素必须位于枚举体中的最开始部分,枚举元素列表的后面有分号与其他成员分隔。把枚举中的成员方法或变量的放在枚举元素的前面,编译器报告错误。
* 没构造方法的枚举
* 构造方法必须定义私有的
* 如果有多个构造方法,该如何选择那个构造方法?
* 枚举元素MON和MON(),的效果是一样,都调用了默认的构造方法。
* 带方法的枚举
* 定义枚举TrafficLamp
* 实现普通的next()方法
* 实现抽象的next():每个元素分别是由枚举来生成的实例对象,这些子类采用类似内部类的方式进行定义。
* 增加上表示时间的构造方法
* 枚举只有一个成员是,就可以作为一种单例的实现方式。
示例5:
public class EnumTest {
public static final String TrafficLamp = null;
public static void main(String[] args) {
// TODO Auto-generated method stub
WeekDay weekDay=WeekDay.SUN;
System.out.println(weekDay);
System.out.println(weekDay.name());
System.out.println(weekDay.ordinal());
System.out.println(weekDay.valueOf("SUN").toString());
System.out.println(weekDay.values().length);
}
public enum WeekDay{
SUN(){
WeekDay nextDay(){
return MON;
}
},MON(){
WeekDay nextDay(){
return TUE;
}
},TUE(){
WeekDay nextDay(){
return MON;
}
},WEN(){
WeekDay nextDay(){
return MON;
}
},THU(){
WeekDay nextDay(){
return MON;
}
},FRI(){
WeekDay nextDay(){
return MON;
}
},SAT(){
WeekDay nextDay(){
return MON;
}
};
}
int day=0;
private EnumTest(){
System.out.println("first");
}
private EnumTest(int day){
this.day=day;
}
WeekDay nextDay() {
return null;
}
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;
}
}
}