黑马程序员—Java高新技术1

 

---------------------- android培训java培训、期待与您交流! ----------------------


说实话,当我打开张孝祥老师的Java高新技术时,心里就一阵犯憷,这东西也太多了,简直超乎我的想象,嘻嘻,不过既然老师能在2-3天讲完,那么作为学生的我就没有什么理由在规定的学习时间内看不完,所以,这些日子要抓紧时间全身心的投入到Java高新技术的学习中!狂学进行中......

1、 Eclipse的使用技巧

1).Workspace与project

IDE(Itegrite DevelopmentEnviroment集成开发环境)开发工具都支持使用工程化方式管理一个项目的程序开发过程,一般来说一个相对独立的项目就是一个工程,一个项目中涉及的多个java文件,资源文件等用一个工程进行管理。在不使用工程管理的情况下,如果一个项目中包括多个Java源文件,编程人员需要精心维护这些源文件之间、以及源文件与其它文件的目录关系,需要逐一编译这些源文件,需要手工启动运行编译后的结果。如果将一个程序的所有源文件用一个工程来组织,开发工具能对所有源文件集中管理,记住每个源文件的位置和相互关系。工程中有哪几个源文件、启动类是哪个、启动参数设置等配置信息在工程中都记录。

     一个workspace可以包含多个project,一个workspace保留了eclipse的一套环境选项的配置,例如,所使用的javac和java命令,等等,细节请查看window->preferences。如果要为eclispe再配置一套环境选项,可以再创建一个workspace。Packageexplorer视图窗口中的filters菜单项,可以显示空的父包(此功能默认是关闭的)。

2).Perspective与view

一个Perspective代表了若干个view的集合,如何显示各种view。

3).设置单个工程的javac和java

选择工程,右键->properties可以设置javac,右键->run asàopen run dialog可以设置java。

PS:高版本的java能够运行低版本的javac编译的程序,反之,低版本的java不能运行高版本的javac编译的程序。

4).快捷键使用技巧

快捷键的位置:General->keys,设置alt+/键进行内容提示时,要注意解除alt+/键原来的绑定关系,直接输入alt+/就可以找到它的绑定关系,删除绑定关系时也可以使用remove binding这个按钮,课后必须教会大家在eclipse中。

代码模板的设置位置:java->editor->Templates

 

2、 静态导入

import语句可以导入一个类或某个包中的所有类

import  static语句导入一个类中的某个静态方法或所有静态方法

语法举例:

import static java.lang.Math.sin;

import static java.lang.Math.*;

使用:求两个数的最大值和相减结果的绝对值

System.out.println(min(3, 9));

System.out.println(abs(3-9));

注意:将javac改为1.4,则静态导入jdk1.5的特性会报告出错误。

 

3、 可变参数与增强for循环

面试题:说说overload和overrid的区别

 

1).可变参数

问题:一个方法接受的参数个数不固定,例如:

System.out.println(countScore(2,3,5));

System.out.println(countScore(1,2,3,5));  

可变参数的特点:

只能出现在参数列表的最后;这个要记住

...位于变量类型和变量名之间,前后有无空格都可以;

调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体中以数组的形式访问可变参数。

举例代码:

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;

}

2).增强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 num1 = 12;

自动拆箱:System.out.println(num1+ 12);

基本数据类型的对象缓存:

Integer num1 = 12;

Integer num2 = 12;

System.out.println(num1 == num2); 这块相等,(-128~127)<=127都是真的

 

Integer num3 = 129;

Integer num4 = 129;

System.out.println(num3 == num4); 这块不相等,因为是对象

 

Integer num5 = Integer.valueOf(12);  // Integer调用其静态方法valueOf()将12变成一个封装类对象。

Integer num6 = Integer.valueOf(12)  ;

System.out.println(num5 == num6); 这块的道理同上

享元设计模式:有很多个小的对象,它们有很多属性相同,把它们变成一个对象,那些不同的属性把它们变成方法的参数,称为外部状态,那些相同的属性称为内部状态。

 

5、 枚举

1).枚举的基本知识

为什么要有枚举

a).问题:要定义星期几或性别的变量,该怎么定义?假设用1-7分别表示星期一到星期日,但有人可能会写成intweekday = 0;或即使使用常量方式也无法阻止意外。

b).枚举就是要让某个类型的变量的取值只能为若干个固定值中的一个,否则,编译器就会报错。枚举可以让编译器在编译时就可以控制源程序中填写的非法值,普通变量的方式在开发阶段无法实现这一目标。

用普通类如何实现枚举功能,定义一个Weekday的类来模拟枚举功能。

a).私有的构造方法

b).每个元素分别用一个公有的静态成员变量表示

c).可以有若干公有方法或抽象方法。采用抽象方法定义nextDay就将大量的if.else语句转移成了一个个独立的类。

枚举的基本应用

a).举例:定义一个Weekday的枚举。

b).扩展:枚举类的values,valueOf,name,toString,ordinal等方法(记住,讲课时要先于自定义方法前介绍,讲课更流畅)

总结:枚举是一种特殊的类,其中的每个元素都是该类的一个实例对象,例如可以调用。

2).枚举的高级应用

a).枚举就相当于一个类,其中也可以定义构造方法、成员变量、普通方法和抽象方法。

b).枚举元素必须位于枚举体中的最开始部分,枚举元素列表的后要有分号与其他成员分隔。把枚举中的成员方法或变量等放在枚举元素的前面,编译器报告错误。

c).带构造方法的枚举

构造方法必须定义成私有的

如果有多个构造方法,该如何选择哪个构造方法?

枚举元素MON和MON()的效果一样,都是调用默认的构造方法。

d).带方法的枚举

定义枚举TrafficLamp

实现普通的next方法

实现抽象的next方法:每个元素分别是由枚举类的子类来生成的实例对象,这些子类采用类似内部类的方式进行定义。

增加上表示时间的构造方法

e).枚举只有一个成员时,就可以作为一种单例的实现方式。

 

讲构造方法枚举时,最好是定义一个带参数的构造方法和一个不带参数的构造方法,默认调用的是不带参数的构造方法。

如果枚举元素后面没有大括号对,那是不会生成内部类的。先看有内部类的效果,再看没有内部类的效果,eclipse自动删除原来的内部类。

写带有抽象方法的枚举步骤和技巧:

1. enum TrafficLamp{RED,GREEN,YELLOW}

2. enum TrafficLamp{RED,GREEN,YELLOW;public abstract next();}

3.enum TrafficLamp{RED{},GREEN{},YELLOW{};public abstract next();}

4.填充各个{}中的next方法。

 

---------------------- android培训java培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net/heima



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值