黑马程序员 + Java高新技术笔记1

来源:互联网 发布:mac软件卸载不掉 编辑:程序博客网 时间:2024/05/16 23:53

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


1、常见技术名词:

java ee --> java platform enterprise edition

ide --> integrated development environment 集成开发环境

jms --> java message service java消息服务 

jmx --> java management extensions java管理扩展

jndi --> java naming and directory interface java命名和目录接口

java perspective java透视图

2、myeclipse是eclipse开发java ee项目的插件。

3、Java开发工具:eclipseJBuilderNetbeansJetBrainsOracle JDeveloper等。

4、如果要为eclispe再配置一套环境选项,可以再创建一个workspaceFile-->Switch Workspace-->OtherPackage explorer视图窗口中的filters菜单项,可以显示空的父包(此功能默认是关闭的)。

5、调试:设置断点Run-->Toggle Breakpoint,右键Debug As,观察某个变量(选中变量Watch),单步运行查看结果。结束后,按下右上角的Java按钮,从Debug透视图返回。

6、设置快捷键:Window-->Preferences-->General-->Keys-->content,设置快捷键为“ALT+/”。

7、常见错误提示:Bad version number in .class file。

通过Window-->Preferences-->Java-->Compiler/Installed JREs查找问题。

还有在工程名上面点击右键,选择Properties-->Java-->Compiler判断编译器版本是否一致。

查看JRE版本:工程名下Properties-->Java-->Run/Debug Settings-->Edit-->JRE。

8、插入模板:Window-->Preferences-->Java-->Templates。

例:插入try finally代码块。

Window-->Preferences-->Java-->Templates-->New之后,

NametryfDescriptiontry finally block

Patterntry{

${line_selection}

finally {

${cursor}

},其中$部分使用“Insert Variable”插入。

9、改变背景颜色:

Window-->Preferences-->General-->Editors-->Text Editors-->Appearance color options-->Background color(85,123,205专家推荐豆沙绿色)

改变字体颜色:

Window-->Preferences-->Java-->Editor-->Syntax Coloring-->Java

10、导入已有工程:将工程复制到工作台(目录)下面,File-->Import-->General-->Existing Projects into Workspace-->Select root directory(查找工程所在目录)。

jdkjar包有误,可作如下操作:工程名下

Bulid Path-->Libraries-->Remove/Add Library

11、JDK1.5新特性,静态导入:import static (java.lang.Math.*);

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

12、overload:两个方法参数相同,返回值不同,不属于重载;

override:父类方法被private修饰,子类也拥有同名方法,但是不属于重写。

可变参数的特点:

只能出现在参数列表的最后;

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

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

//举例代码:

//举例代码:class Test {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;}}


13增强for循环

语法:for ( type 变量名:集合变量名 )  { … 

注意事项:

迭代变量必须在( )中定义

集合变量可以是数组或实现了Iterable接口的集合类

14基本数据类型的自动拆箱与装箱:

Integer num1 = 12;

Integer num2 = 12;

System.out.println(num1 == num2);

Integer num3 = 129;

Integer num4 = 129;

System.out.println(num3 == num4);

Integer num5 = Integer.valueOf(12);

Integer num6 = Integer.valueOf(12);

System.out.println(num5 == num6);

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

15为什么要有枚举?

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

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

1私有的构造方法

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

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

package cn.itcast.day1;public abstract class WeekDay1 {private WeekDay1(){}public final static WeekDay1 SUN = new WeekDay1(){public WeekDay1 nextDay() {return MON;}};public final static WeekDay1 MON = new WeekDay1(){public WeekDay1 nextDay() {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";}}


枚举是一种特殊的类,其中的每个元素都是该类的一个实例对象

内部类可以使用四个修饰符,而外部类只允许使用两个。

16枚举的高级应用:

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

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

3,带构造方法的枚举

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

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

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

4,带方法的枚举

定义枚举TrafficLamp

实现普通的next方法

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

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

package cn.itcast.day1;import java.util.Date;public class EnumTest {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubWeekDay1 weekDay = WeekDay1.MON;System.out.println(weekDay.nextDay());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);new Date(300){};}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");}}public enum TrafficLamp{//RED元素由TrafficLamp的子类实现,new子类的实例对象,并且调用父类的有参构造方法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;}}}


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


原创粉丝点击