实训项目iPick的第一个阶段:
一、学习Java基础:
程序从源代码到运行必经的三个阶段:编码——编译——运行,调试;
Java的跨平台性(一次编译,到处运行):在每个计算机上的JVM(Java虚拟机)上运行;
public类:如果Java程序源代码里定义了一个public类,该源文件的主文件名必须与该public类的类名相同;
一个Java源文件里最多只能定义一个public类;
Java严格区分大小写,类名的第一个字母大写,方法名和变量名的第一个字母小写;main方法是程序的入口,必须是public static void 修饰;
标识符:赋给类、方法或变量的名字;由字母、数字、下划线、美元符号组成,但不能以数字开始;大小写敏感,长度无限制;标识符”见名知意“,且不能与保留关键字一样;
局部变量:方法体里面(包括方法体的参数)声明的变量;
成员变量:方法体外面类体里面声明的变量;
条件运算符(Java中唯一的三目运算符):表达式1?表达式2:表达式3;
十六进制:0x开头;
Java整型常量默认为int型,声明long型常量后面加”L“;
Java浮点型常量默认为double型,声明float型常量后面加”f“;
一般来说,算术运算符优先级高于比较运算符高于逻辑运算符高于赋值运算符;(不确定时可以加括号)
++(--):自增(或自减)运算符在前时先运算再取值,在后时先取值再运算;
一维数组的动态初始化:type [] array = new int [len];
二维数组的动态初始化:type [] array = new int [len1][len2];
定义数组时不能指定数组的长度;
文档注释:生成一份API文档(用以说明应用程序接口的文档),API文档通常详细说明了每个类、每个方法的功能及用法等;/**......*/
new运算符:为数组分配内存空间;创建指定类的对象;
类和对象的关系:类(class)是具有共同特征的一类事物的抽象,类是对象(object)的模板,对象是类的一个实例(instance);
成员变量(状态数据)+方法(行为) =类定义;
成员变量没有初始化,Java使用默认初始化的值;局部变量必须赋值,否则在调用的时候会报错;
Java支持单继承,即一个继承只允许有一个直接父类,不支持多继承;
构造方法:构造方法具有和类名相同的名称,不返回任何数据类型,不使用void;构造方法前加void后,构造方法变成了普通方法;没有定义构造方法时,编译器为类添加 类名(){ }的构造方法;
栈内存(stack):基本类型的变量和对象的引用变量都是在函数的栈内存中分配;
堆内存(heap):new创建的对象和数组在堆内存中分配;
方法的重载:一个类中可以定义有相同名字,但参数不同(参数个数不同或参数类型不同)的多个方法;调用时,根据不同的参数表选择对应的方法;
对象可以通过运算符“.”访问自己的属性,调用自己的方法;
Java中,参数为基本数据类型时是值传递,为类类型时是引用传递;
类变量和实例变量的区别:类变量在类加载时分配内存,在程序退出时释放内存;实例变量在创建对象时分配内存,对象不存在实例变量就不存在;
this代表当前对象,类方法中不能使用this关键字;this可用于处理方法中成员变量和形参重名的情况;
静态块在类被加载时执行,一般只执行一次;static{……};
static:用static声明的成员变量是静态成员变量,为该类的公用变量,在第一次使用时被初始化,对该类的所有对象来说,static成员变量只有一份;用static声明的方法时静态方法,在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员;static修饰的方法和成员变量,可通过类和实例来调用
;没有使用static修饰的普通方法和成员变量只可通过实例来调用;
包:package pkg1.pkg2.pkg3;(放在Java源代码的第一句);引用包中的类必须把名字写全;
import:import 包名.类名;(引入某个包中的类),之后可直接使用该类;import 包名.*;(引入该包的所有类);访问位于同一个包的类不需要引入,可直接使用;
class只可以用public和default修饰,public类可以在任意地方被访问,default类只可以被同一个包内部的类访问;
方法的重写:子类中对从基类继承来的方法进行重写,重写的方法必须和被重写的方法具有相同的方法名称、参数列表和返回类型;重写的方法不能使用比被重写的方法更严格的访问权限;(copy声明)
super:引用基类的成分;
子类的构造过程中必须调用基类的构造方法;子类可以在自己的构造方法中用super(argument_list)调用基类的构造方法;如果调用super,必须写在子类构造方法的第一行;子类构造方法中如果没有用super调用基类的构造方法,默认调用基类无参构造方法;
equals:public boolean equals(Object obj)
引用变量instanceof类名(判断该引用型变量所“指向“的对象是否属于该类或该类的子类);
对象转型(casting):向上转型、向下转型;向上转型:子类的对象可以当作基类的对象来使用;向下转型:基类的对象可以当成子类的对象来使用;一个基类的引用类型变量可以”指向“其子类的对象;一个基类的引用不可以访问其子类对象新增加的成员(属性和方法);
动态绑定:在执行期间(而非编译期间)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法;
多态的条件:有继承;有重写;父类引用指向子类对象;
abstract修饰的是抽象类或抽象方法,含有抽象方法的类必须是抽象类;抽象类必须被继承,抽象方法必须被重写;抽象类不能被实例化;抽象方法只需声明,而不需实现;
final的变量的值不能被改变,final的方法不能被重写,final的类不能被继承;
接口(interface)是抽象方法和常量值的定义的集合;本质上,接口是一种特殊的抽象类,只包含常量和方法的定义,没有变量和方法的实现;
接口的特性:接口可以多重实现;接口中声明的属性默认为public static final的,也只能是public static final;接口中只能定义抽象方法,而且这些方法默认是public的,也只能是public的;接口可以继承其它接口,并添加新的属性和抽象方法;
多个无关的类可以实现同一个接口;一个类可以实现多个无关的接口;与继承关系类似,接口与实现类之间存在多态性;
implements关键字:一个类实现一个接口,用来实现接口中定义的抽象方法;实现一个接口,必须实现接口中的所有方法;
Java异常是Java提供的用于处理程序中错误的一种机制;
Java异常的分类:Throwable(Error(不可处理的),Exception(RuntimeException(不必处理的),其他异常(必须处理的)));
try{ }里面写的是有可能出现异常的语句,后面的catch( ){ }分别对这些异常做相应的处理;如果没有例外产生,所有的catch代码段都不执行;
try{ }catch( ){ }catch( )catch( ){ }finally{ },finally后面的语句一定会执行;通常在finally语句中进行资源的清除,如关闭打开的文件、删除临时文件;
在方法内用throw语句抛出异常;在方法声明部分用throws语句声明该方法可能抛出异常;重写方法需要抛出与原方法所抛出异常类型一致的异常或不抛异常;
元素为引用数据类型的数组中的每一个元素都需要实例化;
数组的动态初始化:数组定义与为数组元素分配空间和赋值的操作分开进行;
数组的静态初始化:定义数组的同时就为数组元素分配空间并赋值;
每个数组都有一个属性length指明它的长度;
Java多维数组的声明和初始化应按从高维到低维的顺序进行(从左到右);
数组的拷贝:System.arraycopy(array0,pos0,array,pos,length):从array0数组的第pos0项元素开始的length个元素拷贝到array数组从pos项元素开始的length个元素;
Collection接口定义了存取一组对象的方法,其子接口Set和List分别定义了存储方式;Set中的数据对象没有顺序,并且不可重复;List中的数据对象有顺序,并且可以重复;两个对象互相equals即重复;
Map接口定义了存储“键(key)——值(value)映射对”的方法;
Java API所提供的一系列类的实例,用于在程序中存放对象;
Collection接口中所定义的方法:
int size();
boolean isEmpty();
void clear();
boolean contains (object element);
boolean add (object element);
boolean remove (object element);
Iterator iterator ();
boolean containsAll (Collection c);
boolean addAll (Collection c);
boolean removeAll (Collection c);
boolean retainAll (Collection c);
object [] toArray ();
J2SDK所提供的容器API位于java.uil包内;
重写equals方法应该重写hashCode方法,当这个类的某个对象被当作键值(索引)使用时会使用它的hashCode方法;两个对象互相equals,它们的hashCode应该相等;
所有实现了Collection接口的容器类都有一个iterator方法用以返回一个实现了Iterator接口的对象;Iterator对象称为迭代器,用以方便的实现对容器内元素的遍历操作;
Iterator接口定义的方法:
boolean hasNext (); //判断游标右边是否有元素
object next (); //返回游标右边的元素并将游标移动到下一个位置
void remove (); //删除游标左面的元素,在执行完next之后该操作只能执行一次
List接口:
object get (int index);
object set (int index, object element);
void add (int index, object element);
object remove (int index);
int indexOf (object o);
int lastIndexOf (object o);
类java.util.Collections提供了一些静态方法实现了基于List容器的一些常用算法:
void sort (List); //对List容器内的元素排序
void shuffle (List); //对List容器内的对象进行随机排序
void reverse (List); //对List容器内的对象进行逆序排序
void fill (List, object); //用一个特定的对象重写整个List容器
void copy (List dest, List src); //将src List容器中的内容拷贝到dest List容器
int binarySearch (List, object) //对于顺序的List容器,采用折半查找的方法查找特定对象;
所有可以的排序的类都实现了java.lang.Comparable接口,Comparable接口中只有一个方法:
public int compareTo (object obj);
实现Comparable接口通过实现comparaTo方法从而确定该类对象的排序方式;
Array读快改慢;
Linked改快读慢;
Hash两者之间;
Map接口:(Map类中的键值不能重复)
object put (object key, object value);
object get (object key);
object remove (object key);
boolean containsKey (object key);
boolean containsValue (object value);
int size ();
boolean isEmpty ();
void putAll (Map t);
void clear ();
InputStream / OutputStream;
Reader / Writer;
FileInputStream / FileOutputStream;
FileReader / FileWriter;
BufferedInputStream / BufferedOutputStream;
BufferedReader / BufferedWriter;
Bytearrayinputstream / Bytearrayoutputstream;
Inputstreamreader / Outputstreamwriter;
Datainputstream / Dataoutputstream;
PrintStream / PrintWriter;
Objectinputstream / Objectoutputstream;
Object流:
transient关键字:只需要实现Serilizable接口,将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会序列化到指定的目的地中;
serializable接口;
externalizable接口;
二、完成iPick原型设计(Axure):
学会使用Axure完成简单的原型设计:
高保真必填文本框的制作,简单的动画设计,设计触发链接;