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

------- 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 stub
		WeekDay1 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;}
	}
}


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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值