面向对象思想,有问题的时候。三步考虑。
1. 在这个问题中有哪些类,哪些对象
2.每一种类和对象应该有哪些属性和方法。
3.考虑类和类之间有哪些关系。
在定义成员变量的时候可以对其初始化,如果不对其初始化,java使用默认的之对其初始化。而局部变量必须对其初始化。
约定俗成的命名规则
`类名的首字母大写
`变量名和方法名首字母小写
`运用驼峰标示(除了首字母小写,假如说几个单词合成,后面的首字母大写)
this关键字
当你确定不了一个参数到底是指的哪一个变量的时候,找离他最近的声明。
静态变量
一般可以用来计数用。
包
指定是哪个包的类。 package.... 必须写在代码的第一行。(注释无所谓) 若缺省该语句,则制定为无名包。
约定俗成的给包起名的方法:公司的域名倒过来。eg:com.bjsxt; 但是编译出来的类(class文件)必须位于正确的目录下面。和我们包的层次必须完全一样。
如果想在另外一个包内用我们这个类,必须把名字写全了。(但是可以引用)
执行一个类需要写全包名。
java.lang不需要引入,其他的包都需要引入。
访问控制
重写(注意跟重载不一样)
重写的时候就去原来的方法copy就行,一定要copy,因为要保持和原来的方法具有相同的方法名称,参数列表和返回类型。
继承中的构造方法
子类的构造过程必须调用其父类的构造方法。
子类可以在自己的构造方法中使用super(argument_list)调用其父类的构造方法 .但是也可以使用this(argument_list)来调用本类另外的构造方法。如果调用super,必须写在子类构造方法的第一行。
如果子类的构造方法中没有显示调用父类的构造方法,则系统默认使用父类无参数的构造方法。如果此时父类中没有无参数的构造方法,则此时编译出错。
对象转型
一个父类的引用类型变量可以指向其子类的对象。
一个父类的引用不可以访问其子类新增加的成员(属性和方法)。
可以使用引用变量 instanceof 类名来判断该引用型变量所指向的对象是否属于该类或则该类的子类。
子类的对象可以当作父类的对象来使用称做向上转型,否则称为向下专型。
多态
调用方法的时候,只要你的方法重写了,实际中new的是什么对象,调用哪个对象类型的方法。
动态绑定是指在‘执行期间’ 而非编译期间判断所引用对象的实际类型,根据实际的类型调用其相应的方法。
多态的存在有三个必要条件:1 要有继承。 2要有重写。 3 父类引用指向子类对象。 当这三个条件满足,当你调用父类重写的方法的时候,实际当中new 的是哪个子类对象就调用 子类的方法。
Final 关键字
可以用来修饰变量和方法, 类。 final变量的值不能够被改变,(包括final的成员变量和final的局部变量(形参)) final的方法不能够被重写, final的类不能够被继承。
接口
接口的特性:(接口的本质是它只能看见这个对象的一部分的方法)
1.接口可以多重实现。
2.接口中的声明默认为public static final的,也只能为public static final的。
3.接口中的方法,只能是抽象方法,而这些方法默认为public的,而且只能为public的。
4.接口可以继承其他的接口,并且添加新的属性和方法。
5.多个无关的类可以实现同一个接口。
6.一个类可以实现多个无关的接口。。
7.与继承关系类似,接口与实现类之间存在多态性。
总结:
搜索是建立在已经排好序的基础上的。
二维数组:
二维数组的初始化:
静态初始化:int intA[ ][ ] = {{1,2}, [2, 3}, {3, 4, 5}};
int intB[3][2] = {{1, 2}, {2, 3}, {4, 5}}; // 非法;
动态初始化:
int a[ ][ ] = new int[3][5];
int b[ ][ ] = new int[3][ ];
b[0] = new int[2];
b[1] = new int[3];
b[2] = new int[5];