一、面向对象程序设计(OOP)
1.面向对象的程序设计是程序开发的一种方法。它将对象作为程序的基本单元,将程序和
数据封装其中,以提高软件的重用性、灵活性和扩展性
2.三个特征:
封装:隐藏信息
继承:
多态:
二、类
1. 类(class)是构造对象的一个模板,它表示对现实生活中一类具有共同特征的事物的抽象。
2. 对象有三个特征:
行为(behavior): 一般类中定义的属性、方法都可以看作是行为。
状态(state): 对对象施加操作、方法后,对象的响应。每个对象都保存着描述当前特征的信息,这就是状态。
标识(identity):用于区分具有相同行为和状态的不同对象。我们可以把声明对象时创建的变量看作是一个标识。
3. 构造方法和普通方法:构造器虽然有时候也被称为构造函数、构造方法,但和一般意义的方法不同,它们没有返回值并且不能被继承。
4. 构造器的调用必须伴随new 关键字(super也可以),构造器只是用于初始化实例的一组指令
5. this 关键字用于表示当前类对象,一般用于两种情况:
a.解析实例变量和参数之间的模糊
b. 将当前对象作为参数传递给另一个方法
b例: public Dog2 addAge(int year){
Dog2 newDog = new Dog2(this); //this引用当前Dog2对象
newDog.age = newDog.age + year;
return newDog;
}
C.关键字this 还可以表示当前类的另一个构造器。如果在一个构造器内写上this(…),这个构造器就调用了同一个类的另一个构造器。如:
public Ceshi(String str){
this.str = str;
}
public Ceshi(String str , int num){
this(str);
this.num = num;
}
这种this 关键字的使用方式非常有用,公共的构造器代码部分只需要书写一次,可以做到代码重用。
注意:this(…)只能写在构造器的第一句!
6.方法的参数值传递:方法只传递参数的值,即不能在当前的方法内调用其他方法来修改参数的内存地址或者引用。(可以在方法内调用引用对象,并对其修改)
三、类之间的关系
1.依赖:比如猫吃鱼,在类Cat 中定义一个方法eat,它操纵类Fish 的某个实例。
2.聚合:表示一个类的对象包含另一些类的对象。例如在在线商城的一个购物车内可能
有多件商品,
3.继承:比如哈士奇Husky 继承自狗Dog。
四、包
1.包的命名:包的命名一般都以小写字母表示,同一层次下的包名必须唯一。如果是公司的大项目,Sun 公司建议将公司的Internet 域名以逆序的形式作为包名并对不同的子项目或模块使用不同的子包。例如Condoso 公司condoso.com 逆序形式是com.condoso , 然后进一步划分子包, 如com.condoso.ui ,com.condoso.test 等。
2.在没有导入一个类之前 想要实例化该类的对象 需要 例:
java.util.Date myDate = new java.util.Date();
3. 如果想要导入一个包例如java.util 包下所有类可以使用importjava.util.*;
4.需要注意的是:a.这种导入方式不会导入java.util 包的子包下的类。
b.只能用*导入一个包而不能使用import java.*.*导入以java 为前缀的所有的包。
五、字符串的拼接
1. 1+5.6+"5"=="6.65"
六、数组
1. 概念: 数组是一种数据结构,一般用来组合相同类型的对象。
2.排序:
a.冒泡(Bubble)排序——相邻交换
b.选择排序——每次最小/大排在相应的位置
c.插入排序——将下一个插入已排好的序列中
3. 数组一旦创建就不能改变其大小
4. System.arraycopy(src, srcPos, dest, destPos, length)
数组的复制
src - 源数组。
srcPos - 源数组中的起始位置。
dest - 目标数组。
destPos - 目标数据中的起始位置。
length - 要复制的数组元素的数量。
int[] originArray = { 1, 2, 3, 4, 5 }; // 原来的数组
int[] newArray1 = new int[10]; // 一个新的数组
System.arraycopy(originArray, 0, newArray1, 0, originArray.length); // 把原数组的内容复制到新数组
5.二维数组:您不可以这样声明二维数组
int[][] a = new int[][5];
这样的写法表示第一维度没有确定,第一维度没有确定的情况下是无法确定第二维度的。