一: int i=1;int j=i++;j=1
j=++i;j=2
二:instanceof 二元操作符,判断左边对象是否是它右边类的实例,返回boolean类型
如String s=“123”;boolean is= s instanceof Object,返回true
三:final变量是在声明时为一个空白,一旦赋值在其生命周期中是不会被修改
final类,该类不能被继承,一个final类中的所有方法都默认为final。因为此时再也无法覆盖它们。
四:String的转换
character integer float double boolean short的toString方法使他们转换为String
int先要转换为integer对象后才能使用toString方法,
int i=4;integer I1=new Interger(i1);String si1=I1.toString();
string转换为其他类型数据,parseInt(String s),parseLong(String s)等等
五:异常throws总是出现在一个函数头中,用来标明该成员函数可能抛出的各种异常
throw总是出现在函数体重,用来抛出一个异常
在不显示声明抛出异常,默认情况下,都是可以抛出runtimeException的
六:java面向对象的精髓
抽象:抽象就是忽略一个主题中与当前目标无关的方面,而将目标的某个特性进行提炼。
继承:新类可以从现有的类中派生,这个过程称为类继承,新类继承了原类的特性,继承了基类的方法和实例变量,并且可以修改或增加新的方法适合自己的需要。
封装:封装把过程和数据包围起来,对数据的访问只能通过调用以定义的接口。
多态:允许不同类的对象对同一个消息作出响应,很好地解决了函数同名问题。
同一实现接口可以用不同的实例而执行不同的操作。通过重写父类的方法来实现。
七:面向对象的设计原则
开闭原则,对扩展开放,对修改关闭
依赖倒转原则:要依赖于抽象,不要信赖于实现
里氏代换原则:任何基类可以出现的地方,子类一定可以出现
合成/聚合复用原则:在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分。
高内聚低耦合
接口隔离原则:
八:方法可以重载多次,而子类覆盖只能有一次
方法重载:同一个类中的两个或者两个以上的方法可以有同一个名字,只要他们的参数声明不同(参数类型或参数的数量)即可,overload,是实现多态的一种方式
在找不到精确匹配的方法是,java会自动转换参数类型
方法覆盖:子类中定义的一个方法,其名称、返回类型以及参数正好与父类中的相同,那就是说子类的方法覆盖了父类的方法
注意:
方法名称、返回类型、参数都必须相同
子类方法不能缩小父类方法的访问权限
子类方法不能抛出比父类方法更多的异常
方法覆盖只存在于子类和父类之间,同一类中的方法只能重载不能覆盖
父类的静态方法不能被子类覆盖为非静态方法
子类可以定义与父类的静态方法同名的静态方法,以便在子类中隐藏父类的静态方法
父类的非静态方法不能被子类覆盖为静态方法
父类的私有方法(private)不能被子类覆盖
父类的抽象方法可以被子类通过两种途径覆盖:子类实现父类的抽象方法,子类重新声明父类的抽象方法
父类的非抽象方法可以被覆盖为抽象方法
九:构造函数
每创建一个类的实例都去初始化它的所有变量是乏味的。如果一个对象在被创建时就完成了所有的初始工作,将是简单的和简洁的。因此,Java在类里提供了一个特殊的成员函数,叫做构造函数(Constructor)。
一个构造函数是对象被创建时初始对象的成员函数。它具有和它所在的类完全一样的名字。一旦定义好一个构造函数,创建对象时就会自动调用它。构造函数没有返回类型,即使是void类型也没有。这是因为一个类的构造函数的返回值的类型就是这个类本身。构造函数的任务是初始化一个对象的内部状态,所以用new操作符创建一个实例后,立刻就会得到一个清楚、可用的对象。
构造方法是一种特殊的方法,具有以下特点。
(1)构造方法的方法名必须与类名相同。
(2)构造方法没有返回类型,也不能定义为void,在方法名前面不声明方法类型。
(3)构造方法的主要作用是完成对象的初始化工作,它能够把定义对象时的参数传给对象的域。
(4)构造方法不能由编程人员调用,而要系统调用。
(5)一个类可以定义多个构造方法,如果在定义类时没有定义构造方法,则编译系统会自动插入一个无参数的默认构造器,这个构造器不执行任何代码。
(6)构造方法可以重载,以参数的个数,类型,或排列顺序区分。
java 构造函数的执行过程
类初始化时构造函数调用顺序:
(1)初始化对象的存储空间为零或null值;
(2)调用父类构造函数;
(3)按顺序分别调用类成员变量和实例成员变量的初始化表达式;