黑马程序员——高新技术---eclipse使用技巧、静态导入、可变参数、增强for循环、 自动拆装箱、枚举
2014-10-11 11:11
1091 查看
-------android培训、java培训、期待与您交流!
----------
注1:IDE开发工具都支持使用工程化方式管理一个项目的程序开发过程,一般说一个相对独立的项目就是一个工程,一个项目中涉及的多个java文件,资源文件等用一个工程进行管理。在不使用工程管理的情况下,如果一个项目中包括多个java源文件,编译人员需要精心维护这些源文件之间、以及源文件与其它文件的目录关系,需要逐一编译这些源文件,需要手工启动运行编译后的结果。如果将一个程序的所有源文件用一个工程来组织,开发工具能对所有源文件集中管理,记住每个源文件的位置和相互关系。工程中有那几个源文件、启动类是哪个、启动参数设置等配置信息在工程中都有记录。
一个workspace可以包含多个project,一个workspace保留了eclipse的一套环境选项的配置,例如,所使用的javac和java 命令,等等,细节请查看window->preferrences。如果要为eclipse再配置一套环境选项,可以再创建一个workspace。Package explorer视图窗口中的filter菜单项,可以显示空的父包。
2.workspace与project
一个工作间(workspace)包含多个工程(project),工作间的设置影响到此工作间下的所有工程
>新建和切换工作间
File->Switch Workspace
>导入项目
File->Import->Existing Projects into Workspace
3.Perspective与view
打开与切换透视图(Perspective)
显示视图(view)
注3:一个Perspective代表了若干个View的集合。
4.设置整个workspace的javac与java
>Windows->Prefferences->Java->Compiler->Compiler compliance level
>Windows->Prefferences->Java->Installed JREs
5.设置单个工程的javac与java
>右键->Properties->Run/Debug Settings
>右键->Properties->Java Compiler
>高版本的java能否运行低版本的javac编译的程序?能
>低版本的java能否运行高版本的javac编译的程序?不能
注5:设置单个工程的编译环境(javac)和运行环境(java):选择工程,右键->properties可以设置javac,右键->open run dialog可以设置java。
6.设置快捷键的绑定与代码模板
>Windows->Preferences->General->Keys
注6:快捷键的使用技巧:快捷键的位置:General->Keys,设置alt+/进行内容提示时,要注意接触alt+/键原来的绑定关心,直接输入alt+/就可以找到绑定关系,删除绑定关系时可以用remove binding这个按钮。
7.利用快捷键提高工作效率
>在应用中具体举例详解
注7:代码模板的设置:位置:java->editor->Template
2.Import static语句导入一个类中的某个静态方法或所有静态方法
使用时直接写方法名即可,不用写类名来调用
3.语法举例:
>add(2,3,5)
>add(1,2,3,5)
2.可变参数的特点:
>只能出现在参数列表的最后
> ‘...’ 位于变量类型和变量名之间,前后有无空格都可以
>调用可变参数的方法时,编译器为该参数隐含创建一个数组,在方法体中以数组的形式访问可变参数
3.语法举例:
>for(type 变量名:集合变量名){......}
2.注意事项:
>迭代变量必须在()中定义
>集合变量可以是数组或实现了Iterable接口的集合类
3.举例:
>integer num1=12; //Integer num1=new Integer(12);
2.自动拆箱:
>System.out.printlen(num1+12); //num1.getInteger()
3.基本数据类型的对象缓存:
自动装箱时,数量若是在1字节以内(-128~127)时,会把装箱后的对象放入缓存池中,下次再创建时先从缓存池中查找有无相应值得对象,有则取用,无则创建。此为,享元模式(flyweight),如果有很多小的对象,它们有很多相同的东西,就把他变成一个对象,不同的东西变成外部属性,作为方法的参数传入。相同的东西成为内部状态,不同的东西称为外部状态。
Integer num1=12;
Integer num2=12;
则num1==num2
Integer num3=129;
Integer num4=129;
则num3!=num4
Integer num5=Integer.valueOf(12);
Integer num6=Integer.valueOf(12);
则num5==num6
>问题:要定义星期几或性别变量,该怎么定义?
假设用1-7分别表示星期一到星期日,但有人可能会写成int weekday=0.
>枚举就是让某个类型的变量取值只能为若干个固定值中的一个,否则,编译器会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段一无法达到这一目标。
2.用普通类如何实现枚举功能,定义一个weekday的类来模拟枚举功能.
>私有的构造方法
>每个元素分别用一个公有的静态成员变量表示
>可以有若干公有方法或抽象方法,例如,要提供nextDay方法必须是抽象的
普通方法实现:
抽象方法实现:
采用抽象方法定义nextDay()就将大量的if else语句转移成一个个独立的类。如果想在一个类中编写完各个枚举类和测试调用类,那么可以将枚举定义成调用类的内部类
3.枚举的基本应用
>举例:定义一个WeekDay枚举
>扩展:枚举类的values,valueOf,name,toString,ordinal等方法
>总结:枚举是一种特殊的类,其中每个元素都是该类的实例对象,
例如可以调用WeekDay.SUN.getClass().getName和WeekDay.class.getName
4.枚举类使用
1>
对象方法:
自动实现了toString()方法:weekday2.toString();
name方法:weekday2.name();
排行序号ordinal()方法:weekday.ordinal();
静态方法:
字符串变枚举对象valueOf():WeekDay.valueOf(“SUN”)
获取枚举类的所有对象的数组:WeekDay.values()
2>
SUN(1)会调用第二个构造函数,其它的都调用第一个构造函数
3> 带抽象方法的枚举
-------------------------------------------------------------------------------------
5.枚举就相当于一个类,其中也可以定义构造方法,成员变量,普通方法和抽象方法
6.枚举元素必须位于枚举体中的最开始部分,枚举列表的后面要有分号与其他成员变量分割。把枚举中的成员方法或变量等放在枚举元素的前面,编译器会报告错误。
7.带构造方法的枚举
>构造方法必须定义成私有的
>如果有多个构造方法,通过枚举元素后圆括号中的参数来选择构造方法
>枚举元素MON和MON()的效果一样,都是调用默认的构造方法
8.带方法的枚举
>定义枚举TrafficLamp
>实现普通的next方法:每个元素是由枚举类的子类来生成的实例对象,这些子类采用类似内部类的方式进行定义
>增加上表示时间的构造方法
9.枚举只有一个成员时,就可以作为单例的实现方式
----------
一.Eclipse的使用技巧
1.MyeEclipse是eclipse的插件注1:IDE开发工具都支持使用工程化方式管理一个项目的程序开发过程,一般说一个相对独立的项目就是一个工程,一个项目中涉及的多个java文件,资源文件等用一个工程进行管理。在不使用工程管理的情况下,如果一个项目中包括多个java源文件,编译人员需要精心维护这些源文件之间、以及源文件与其它文件的目录关系,需要逐一编译这些源文件,需要手工启动运行编译后的结果。如果将一个程序的所有源文件用一个工程来组织,开发工具能对所有源文件集中管理,记住每个源文件的位置和相互关系。工程中有那几个源文件、启动类是哪个、启动参数设置等配置信息在工程中都有记录。
一个workspace可以包含多个project,一个workspace保留了eclipse的一套环境选项的配置,例如,所使用的javac和java 命令,等等,细节请查看window->preferrences。如果要为eclipse再配置一套环境选项,可以再创建一个workspace。Package explorer视图窗口中的filter菜单项,可以显示空的父包。
2.workspace与project
一个工作间(workspace)包含多个工程(project),工作间的设置影响到此工作间下的所有工程
>新建和切换工作间
File->Switch Workspace
>导入项目
File->Import->Existing Projects into Workspace
3.Perspective与view
打开与切换透视图(Perspective)
显示视图(view)
注3:一个Perspective代表了若干个View的集合。
4.设置整个workspace的javac与java
>Windows->Prefferences->Java->Compiler->Compiler compliance level
>Windows->Prefferences->Java->Installed JREs
5.设置单个工程的javac与java
>右键->Properties->Run/Debug Settings
>右键->Properties->Java Compiler
>高版本的java能否运行低版本的javac编译的程序?能
>低版本的java能否运行高版本的javac编译的程序?不能
注5:设置单个工程的编译环境(javac)和运行环境(java):选择工程,右键->properties可以设置javac,右键->open run dialog可以设置java。
6.设置快捷键的绑定与代码模板
>Windows->Preferences->General->Keys
注6:快捷键的使用技巧:快捷键的位置:General->Keys,设置alt+/进行内容提示时,要注意接触alt+/键原来的绑定关心,直接输入alt+/就可以找到绑定关系,删除绑定关系时可以用remove binding这个按钮。
7.利用快捷键提高工作效率
>在应用中具体举例详解
注7:代码模板的设置:位置:java->editor->Template
二.静态导入
1.import语句可以导入一个类或某个包中的所有类2.Import static语句导入一个类中的某个静态方法或所有静态方法
使用时直接写方法名即可,不用写类名来调用
3.语法举例:
import static java.lang.Math.max; import static java.lang.Math.*; { .......... Max(3,6); ......... }
三.可变参数
1.问题:一个方法接受的参数个数不固定,例如:>add(2,3,5)
>add(1,2,3,5)
2.可变参数的特点:
>只能出现在参数列表的最后
> ‘...’ 位于变量类型和变量名之间,前后有无空格都可以
>调用可变参数的方法时,编译器为该参数隐含创建一个数组,在方法体中以数组的形式访问可变参数
3.语法举例:
<pre name="code" class="java"> public static int add(int x, int... args) { int sum = x; for (int i = 0; i < args.length; i++) { sum += args[i]; } return sum; }
四.增强for循环
1.语法>for(type 变量名:集合变量名){......}
2.注意事项:
>迭代变量必须在()中定义
>集合变量可以是数组或实现了Iterable接口的集合类
3.举例:
int[] args=new int[12]; int sum=0; for (int arg : args) { sum += arg; <span style="white-space:pre"> </span>}
五.基本类型自动拆箱装箱
1.自动装箱:>integer num1=12; //Integer num1=new Integer(12);
2.自动拆箱:
>System.out.printlen(num1+12); //num1.getInteger()
3.基本数据类型的对象缓存:
自动装箱时,数量若是在1字节以内(-128~127)时,会把装箱后的对象放入缓存池中,下次再创建时先从缓存池中查找有无相应值得对象,有则取用,无则创建。此为,享元模式(flyweight),如果有很多小的对象,它们有很多相同的东西,就把他变成一个对象,不同的东西变成外部属性,作为方法的参数传入。相同的东西成为内部状态,不同的东西称为外部状态。
Integer num1=12;
Integer num2=12;
则num1==num2
Integer num3=129;
Integer num4=129;
则num3!=num4
Integer num5=Integer.valueOf(12);
Integer num6=Integer.valueOf(12);
则num5==num6
六.枚举
1.为什么要有枚举>问题:要定义星期几或性别变量,该怎么定义?
假设用1-7分别表示星期一到星期日,但有人可能会写成int weekday=0.
>枚举就是让某个类型的变量取值只能为若干个固定值中的一个,否则,编译器会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段一无法达到这一目标。
2.用普通类如何实现枚举功能,定义一个weekday的类来模拟枚举功能.
>私有的构造方法
>每个元素分别用一个公有的静态成员变量表示
>可以有若干公有方法或抽象方法,例如,要提供nextDay方法必须是抽象的
普通方法实现:
<pre name="code" class="java">public class WeekDay { private WeekDay() { } public final static WeekDay SUN = new WeekDay(); public final static WeekDay MON = new WeekDay(); public WeekDay nextDay() { if (this == SUN) { return MON; } else if (this == MON) { return SUN; } return null; } public String toString(){ return this==SUN? "SUN":"MON"; } }
抽象方法实现:
public abstract class WeekDay { private WeekDay() { } public final static WeekDay SUN = new WeekDay() { public WeekDay nextDay() { return MON; } }; public final static WeekDay MON = new WeekDay() { public WeekDay nextDay() { return SUN; } }; public abstract WeekDay nextDay(); }
采用抽象方法定义nextDay()就将大量的if else语句转移成一个个独立的类。如果想在一个类中编写完各个枚举类和测试调用类,那么可以将枚举定义成调用类的内部类
3.枚举的基本应用
>举例:定义一个WeekDay枚举
>扩展:枚举类的values,valueOf,name,toString,ordinal等方法
>总结:枚举是一种特殊的类,其中每个元素都是该类的实例对象,
例如可以调用WeekDay.SUN.getClass().getName和WeekDay.class.getName
4.枚举类使用
1>
public enum WeekDay { SUN, MOIN, TUE, WED, THI, FRI, SAT; // 分号可有可无 }
对象方法:
自动实现了toString()方法:weekday2.toString();
name方法:weekday2.name();
排行序号ordinal()方法:weekday.ordinal();
静态方法:
字符串变枚举对象valueOf():WeekDay.valueOf(“SUN”)
获取枚举类的所有对象的数组:WeekDay.values()
2>
public enum WeekDay { SUN(1), MON(), TUE, WED, THI, FRI, SAT; private WeekDay() { System.out.println("first"); } private WeekDay(int i) { System.out.println("second"); } }
SUN(1)会调用第二个构造函数,其它的都调用第一个构造函数
3> 带抽象方法的枚举
public enum TrafficLamp{ RED { @Override public TrafficLamp nextLamp() { return GREEN; } },GREEN { @Override public TrafficLamp nextLamp() { return YELLOW; } },YELLOW { @Override public TrafficLamp nextLamp() { return RED; } }; public abstract TrafficLamp nextLamp(); }
-------------------------------------------------------------------------------------
public enum TrafficLamp { RED(30) { @Override public TrafficLamp nextLamp() { return GREEN; } }, GREEN(45) { @Override public TrafficLamp nextLamp() { return YELLOW; } }, YELLOW(5) { @Override public TrafficLamp nextLamp() { return RED; } }; public abstract TrafficLamp nextLamp(); private int time; private TrafficLamp(int time) { this.time = time; } }
5.枚举就相当于一个类,其中也可以定义构造方法,成员变量,普通方法和抽象方法
6.枚举元素必须位于枚举体中的最开始部分,枚举列表的后面要有分号与其他成员变量分割。把枚举中的成员方法或变量等放在枚举元素的前面,编译器会报告错误。
7.带构造方法的枚举
>构造方法必须定义成私有的
>如果有多个构造方法,通过枚举元素后圆括号中的参数来选择构造方法
>枚举元素MON和MON()的效果一样,都是调用默认的构造方法
8.带方法的枚举
>定义枚举TrafficLamp
>实现普通的next方法:每个元素是由枚举类的子类来生成的实例对象,这些子类采用类似内部类的方式进行定义
>增加上表示时间的构造方法
9.枚举只有一个成员时,就可以作为单例的实现方式
相关文章推荐
- 黑马程序员_Java高新技术(静态导入、可变参数、增强for循环、自动拆装箱、枚举、反射)
- 【黑马程序员】黑马入学准备篇:Java高新技术之 静态导入、可变参数、增强for循环、自动装箱、枚举
- 黑马程序员_学习笔记:11) Jdk5.0新特性:增强for循环、可变参数(...)、静态导入、枚举:关键字 enum、自动拆装箱、泛型
- 黑马程序员------java中的泛型、增强for循环、可变参数、静态导入、自动拆装箱、枚举
- 黑马程序员_高新技术_eclipse的使用技巧_可变参数_增强for循环_基本数据类型的自动拆箱与装箱
- 黑马程序员--枚举,增强for循环,可变参数,静态导入,自动拆箱和自动装箱
- 黑马程序员_高新技术:1)eclipse的使用技巧_可变参数_增强for循环_基本数据类型的自动拆箱与装箱
- 详谈Java枚举、静态导入、自动拆装箱、增强for循环、可变参数
- Java枚举、静态导入、自动拆装箱、增强for循环、可变参数
- 黑马程序员-----JDK1.5新特性-自动拆装箱、静态导入、枚举、可变参数、for循环增强
- 黑马程序员_温习 高新技术一 (个人笔记)摘要(静态导入---可变参数----高级FOR循环---自动装箱(拆箱)----枚举----反射)
- 黑马程序员——【Java高新技术】——JDK1.5新特性:静态导入、可变参数、增强型for循环、自动装箱拆箱、枚举
- 黑马程序员-高新技术(eclipse使用、增强for循环、自动拆装箱等)
- Java5新特性之静态导入、可变参数、增强for循环、自动拆装箱
- 黑马程序员-静态导入、可变参数、增强for、自动拆装箱
- java新特性之静态导入、自动装箱和拆箱、增强for循环、可变参数、枚举
- 静态导入、自动装包/拆包、增强for循环、可变参数、枚举
- 黑马程序员-------(高新技术)静态导入、可变参数、增强for循环、基本数据类型的自动拆箱与装箱
- 59.黑马程序员-Eclipse使用技巧、静态导入、可变参数
- jdk1.5的新特性:静态导入,任意参数,增强的for循环,自动拆装箱,享元模式,枚举