黑马程序员 + Java高新技术笔记1,java高新技术
黑马程序员 + Java高新技术笔记1,java高新技术
------- 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开发工具:eclipse,JBuilder,Netbeans,JetBrains,Oracle JDeveloper等。
4、如果要为eclispe再配置一套环境选项,可以再创建一个workspace。File-->Switch Workspace-->Other。Package 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之后,
Name:tryf,Description:try finally block
Pattern:try{
${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(查找工程所在目录)。
若jdk或jar包有误,可作如下操作:工程名下
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,带构造方法的枚举
构造方法必须定义成私有的。
如果有多个构造方法,该如何选择哪个构造方法?
枚举元素MON和MON()的效果一样,都是调用默认的构造方法。
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;}
}
}
枚举只有一个成员时,就可以作为一种单例的实现方式。
相关文章
- 暂无相关文章
用户点评