开发步骤:写源文件.java、编译源文件得到字节码.class、解释器执行字节码
平台无关性:java可在平台上提供由java虚拟机、类库、一些核心文件的java运行环境
java源文件:最多有一个public类,并且源文件与此public类同名,若无public类则与文件中任一类同名即可
java应用程序:必须有一个类含有主类public static void main(String args[])作为程序的起点
- 面向对象(实例变量+方法)
- 变量分两类:primitive主数据类型(变量值为就是所代表的值的字节表示)、引用(引用变量的值为取得特定对象的为表示方法,而非对象本身以字节放进引用变量)
- boolean和integer不相容,不能int x=1;if(x),int形参也不能传boolean实参
- 长字节类型变量不可直接赋给短的,可以有损失的转换:long a=3; int b=(int) a; 参考大小杯记忆(小杯装不下大杯)
- 对象的声明、创建、赋值:Dog mydog=new Dog();
- 对象的实例变量永远有默认值:0,0.0,false,null(reference)
- “==”比较两个变量值的字节组合模样,可以判别两个引用是否指向同一对象;equals()判断两个对象是否在意义上相等
- for(int i:intarr){}
- java有很多实用的API,可通过参考书或HTML API文档查询
- 覆盖发生在子类对父类方法的重新实现,方法名、参一样,返回值要兼容
- 重载发生在同一作用域,同名不同参(类型、数量、存取权限)
- 调用对象的方法时,java虚拟机从”层次树”最低阶找起(从子到父)
- java所有类都是从object类的直接或间接子类
- 用abstract标记抽象类,此类不可创建实例,只可用于继承
- 接口interface:变量都是public static final的,且必须在定义时赋值,方法都是抽象的
- java不许多重继承,但类可以实现多个接口
- 抽象类可有抽象和非抽象方法,但抽象方法(没有内容)所在的类一定是抽象类
- 子类不完全覆盖父类方法,即调用父类方法+自己操作:super.function()
- 在子类构造函数中调用父类构造函数:super();
- 创建新对象时,所有继承下来的构造函数都会执行,并且是从父类到子类的顺序构造
- 调用一个方法时,该方法的状态(执行到哪一行,所有局部变量的值)以堆栈块的形式放在调用栈中,调用栈顶即为正在执行的方法
- java可以有与类同名但带返回类型的方法(即非构造函数)
- this和super 参考1、参考2
- this:指向自身对象的指针。用于引用本对象的变量或实例方法(不可用于类方法,因为类方法不属于任一对象)。构造函数可用this(参数)调用本类另外一个构造函数,放在第一句,且不与super()同时使用。
- super:可理解为指向自己最近父类的指针。可通过 "." 调用父类的变量、方法。子类的构造函数可用super(参数)调用父类的某个构造函数,放在第一句,且不与this()同时使用。
- 创建数组分为声明、分配变量两步:声明数组时方括号内不许指定元素个数;一次可以声明多个数组:int[] a, b; <=> int a [], b[]; 创建数组:a=new int[4];