基本数据类型变量单元直接存放数据赋值和传参的方式:传值,即传递副本比较相等使用关系运算符“==”引用数据类型变量单元存放引用即对象地址,而数据(对象)在另一内存区域存放。赋值和传参的方式:传引用(传递对象的地址),即传递对象本身。使用关系运算符“==”比较两个引用类型变量,比较的是地址,如果比较结果为真,说明两个变量引用了同一对象。比较两个对象是否相等应使用equals方法Java是面向对象的语言,开发Java程序就是开发Java类,Java的变量定义、方法(函数)和语句都必须在类中书写,“无类即无Java”。类的实例成员属性(成员变量):直接定义在类体中的变量(注:在方法或语句块中定义的变量不是属性)方法:直接定义在类体中的方法。类成员:直接定义在类体中的内部类,即类成员。注:对象的成员是从属于对象的,必须通过对象访问,在Java中不存在脱离对象和类而独立存在的属性和方法。类、方法、语句三者的关系:类中包含方法,方法中包含语句;方法中不能嵌套方法;语句不能直接写在类体中。变量的作用域局部变量-方法的参数、方法体中定义的变量、语句块中定义的变量,仅在所定义的方法体或语句块中有效。属性-在整个类体中有效。公有的属性-其它类可以本类对象访问。私有的属性-仅限本类内访问局部变量(无论基本类型还是引用类型)在栈内存中,对象在堆内存中。注:引用类型的局部变量内存放是对象的引用(即地址),而对象在堆内存中。方法的重载-在同一类中多个方法同名的语法现象,方法重载应符合以下条件:方法同名参数有所不同(即类型、个数和顺序三者至少有一个不同)注:方法是否重载不考虑返回类型等其它方面。包和访问修饰符包-类的目录结构,主要用途是方便类的管理。类的简称:不含包名的类名类的权限定名称(类的全称):带包名的类名。访问修饰符private-仅限本类内访问public-任何类都能够访问默认-限本包的类访问protected--限本包的类访问和子类的访问类的成员(属性、方法和成员内部类)可以使用四种访问修饰符,顶级外部类仅能使用public和默认两种修饰符。数组基本类型的数组的元素放的是数据对象数据的元素放的是对象的引用二维数组实际上是一个维数组,而其每个元素又是一个一维数组。构造方法-与类名同名并且无返回类型的方法构造方法的作用是创建对象,仅能通过new关键字调用。类中未显式定义构造方法时,类中会有默认的构造方法(即一个public、无参的构造方法);类中一旦定义显式定义构造方法,将不再产生默认的构造方法。构造方法可以重载构造方法只能可以使用四个访问修饰符,不可以使用其它修饰符(如static、final等)。this关键字this表示本对象或对象自身的引用通过this可以调用本类的成员方法和属性通过this可以调用本类的构造方法,this调用构造方法的语句必须写在构造方法的第一句。实例成员和静态成员类的成员(属性、方法和成员类)可划分为静态成员和实例成员。实例成员是属于对象的,随着对象的创建而存在,随着对象的销毁而销毁。静态成员是属于类的,随着类的加载而存在,随着类的销毁而销毁。使用static修饰的成员是静态成员,未使用static修饰的成员是实例成员。静态成员内不能使用this关键字。this表示当前对象的引用。对象的初始化第一:实例属性赋默认值第二:实例属性赋初值第三:执行对象初始化块第四:执行构造方法类的初始化第一:静态属性赋默认值第二:静态属性赋初值第三:执行静态块继承的基本概念Java仅支持单继承如果一个类没有显式继承任何类,则隐式继承java.lang.Object类子类拥有父类的一切,子类对象由两部分构成:父类对象部分和子类个性化的部分。子类并不能访问父类的一切:子类可以访问父类的public成员和protected成员子类不可以访问父类的private成员仅当子类与父类同在一包时,子类方可以访问父类的默认访问控制的成员。继承与类和对象的初始化构造子类对象时,首先构造父类对象,其次构造子类个性化部分,两者共同构成完整的子类对象,即首先进行父类对象的初始化,在初始化子类对象(个性化)部分。子类构造方法的执行首先调用父类的构造方法。若在子类构造方法中无显式调用父类构造方法的语句,则系统默认调用父类中可访问的无参的构造方法,如果这时候父类中恰好没有这样的构造方法,则编译出错。在子类的构造方法中可以通过super关键字调用父类构造方法。这样的调用语句只能出现在子类构造方法的第一句。关于初始化的顺序初始化父类初始化子类初始化父类对象初始化子类对象继承与类型转换子类型对象可以自动转型为父类型父类型引用某个子类型对象时,可以强制转化为这个具体的子类型方法重写在继承的情况下,子类的实例方法与父类的实例方法的方法名称、参数、返回类型、throws声明完全一致,并且该子类方法的访问权限不低于父类方法的访问权限,即方法重写(子类方法重写了父类方法),也称方法覆盖。方法重写仅存在于父子类中的实例方法,静态方法没有重写的概念。当通过子类型对象执行重写方法时,将始终表现为子类的行为,而且无论引用对象的变量是父类型还是子类型,也无论是直接调用还是通过父类型其它方法间接调用,都将如此。final修饰的方法不可以被重写final修饰的类不可以被继承隐藏成员变量如果子类和父类中定义了同名称的成员变量,则称子类隐藏了父类的成员变量通过父类方法访问隐藏的成员变量时,将获得父类成员变量通过子类方法访问隐藏的成员变量时,将获得子类成员变量通过父类型的引用直接访问隐藏的成员变量时,将获得父类成员变量通过子类型的引用直接访问隐藏的成员变量时,将获得子类成员变量super关键字super仅能用于子类中表示本对象的父对象部分super可以调用父类型的构造方法Super可以调用父类的成员Super不可以使用在静态上下文中Super不可以做为参数传递,不可以做为返回值返回。当方法重写时,或父类成员变量被隐藏时,子类中只能通过super访问父类方法和父类成员变量继承与类型转换子类型向父类型可以自动进行转换父类型向子类型,在一定条件下可以强制转换(什么条件?)多态静态时多态(编译时多态):重载动态时多态(运行时多态):重写final关键字用于变量,表示变量的值不可改变用于类,表示类不可被继承用于方法,表示方法不可以被重写关于final变量的初始化时机局部变量:声明的时候初始化或者第一次被使用之前初始化(不能二次赋值)实例成员变量:声明、对象初始化块和构造方法三处之一静态成员变量:声明、静态块两处之一抽象类抽象类可以包含抽象方法,也可以不包含抽象方法含有抽象方法的类必须定义为抽象类抽象类有构造方法抽象类不能够实例化通过抽象类可以调用其静态成员抽象类是需要由子类继承的,因此抽象类不允许是final类抽象方法抽象方法没有方法体,包括一对空的大括号也不允许有抽象方法必须是实例方法,抽象方法不允许是final的抽象类与继承抽象类可以被继承若抽象类的子类是非抽象类,则该子类必须实现(重写)其父类的所有抽象方法若抽象类的子类也是抽象类,则该子类可以不实现(重写)其父类的全部或部分抽象方法。接口接口也是数据类型,可以将其理解为“纯”抽象类接口不是类,也没有构造方法,不能够实例化接口中的属性一律是public、static、final的,并可以省略这三个关键字接口的方法一律是public、abstract的,并且可以省略这两个关键字接口中可以不包含任何属性和方法接口与实现接口不是类,因此接口与类的关系不是“继承”关系,而是“实现”关系,我们可以将实现理解为继承(尽管这并不恰当)如果接口的实现类是抽象类,则该实现类可以不实现接口的全部或部分方法如果接口的实现类是非抽象类,则该实现类必须实现接口的全部方法一个类可以实现多个接口接口与继承接口之间可以相互继承一个接口可以继承多个接口接口与类型转换接口的的子类型对象可以自动向上转型为接口类型接口的子类型指:是接口的实现类或者接口的子接口如果变量引用的对象实际是某个接口的实现类对象,而变量的类型不是这个接口的子类型,那么则可以强制转换为这个接口类型。异常的类层次结构Throwable-异常根类Error-错误类,表示不可恢复的致命错误Exception-异常类,表示可以处理的错误,开发者此应当仔细考虑和处理RuntimeException-运行时异常,此类异常可以不做显式处理,如不处理,系统默认声明抛出。非运行时异常-此类异常必须做显式处理,否则无法编译通过异常的处理方式捕获try-catch声明抛出在方法头通过throws声明可能抛出的异常类型异常机制的五个关键字trycatchfinallythrowthrows如何使用try-catchtry-catch-finally注:只要try执行,其对应的finally块才必然执行try-finally注:只要try执行,其对应的finally块才必然执行throw主动抛出一个异常throws用在方法声明头部,声明方法可能抛出异常finally代码块多用于书写资源回收代码Java集合类(集合框架)Collection接口List接口允许重复元素,元素有索引序号,并按放入元素的次序编号ArrayList线性表结构,查找快,增删慢LinkedList链表结构,查找慢,增删快Vector同步,查找、增删性能都不高。Set接口不允许重复元素,元素无索引编号HashSet元素散列存放TreeSet元素按自然顺序排序(即从小到大排序)Map接口HashMap允许null值和null键不同步Hashtable--Properties不允许null值和null键同步内部类