1、封装、继承、多态
封装:将私有属性私有化,并提供外面访问的犯法。有些属性不想被外界访问,则可不提供访问方法。
继承:在已存在的类的基础上衍生子类,拥有除父类除private修饰的方法、属性和构造方法外自己的特有的属性和方法。
多态:一个方法的不同实现就是多态。
2、重载和重写
重载:使用场景在同一个类中,方法名相同,但是参数类型、个数、顺序不相同,返回类型、访问修饰也不相同。
重写:使用场景在父子类中,方法名、参数列表相同,但是返回的内容要小于父类,访问修饰要大于父类、发生的异常范围要
小 于父类。
3、抽象和接口
抽象:对类的抽象,非抽象方法、单实现、有构造器、方法选择实现、类不能被实例化,方法多种访问、是一种模板设计,更
多的是为了代码的复用。
接口:对行为的抽象,无具体实现、实例变量final修饰、多实现、无构造器、方法全实现、方法必须是public、不能new但可
以引用(这个类必须实现该接口),是一种行为的规范,更多的体现了多态的特性。(jdk1.8允许有默认实现)
4、字符常量和字符串常量
字符常量:单引号、是一个整型值可计算、一个字符占两个字节。
字符串常量:双引号、是一个内存地址、最少一个字符。
5、基础数据类型和封装类
基础数据类型:byte、short、int、long、double、float、char、boolean
封装类型:提供更多的操作的方法。
6、按值传递和按引用传递
按值传递:基本数据类型被创建时,在栈中分配内存,数值直接存储在栈分配的内存中。传递时,值是不可逆向传递,每次
修改都是新建一个类型,不会影响原来的值。
按引用传递:当对象被创建时,其引起(即句柄)先在栈中分配内存,然后其对象具体信息存存储在堆内存当中,最后引用指
向堆中对象的内存地址。由于是传递的是引用指向,所以每次修改都会影响原来的值。
7、Object
所有对象的基类,提供12种方法,常用的有九种。即toString()、clone(克隆一个对象)、getClass(获得class对象) 、
equals(Object)(判断两个对象是否相等)、finalize() (当对象满足回收条件时调用)、hashCode()(哈希吗)、
notify()(随机唤醒一个持有锁的线程)、notifyAll()(唤醒所有持有锁的线程)、wait()(放弃持有的锁,重新回到等待队列)
8、反射
反射是基于class类,每一个被jvm加载的类都会成一个class类。可以通过Object提供的getClass()方法获取。
可以动态获去任意的一个类和对象的属性和方法
9、String、StringBuffer、StringBuilder
String:底层是final修饰的不可变的数组,线程安全。每次修改都是新建一个对象。
StringBuffer:底层数组,但是所有的方法都加上了同步锁,因此是线程安全。
StringBuilder:底层数组,但是所有的方法没有同步锁修饰,非线程安全。
10、== 与 equals
==:比较两个对象的内容是否相等。基础类型比较的是栈中存储的值,引用数据类型比较的是内存地址。
equals:当类中没有覆盖equals,等同于==;
当类中覆盖了equals,则比较的是两个对象的内容。
Object中的equals比较的是内存地址,String由于重写过,则比较的是对象的值。
11、hashCode 与 equals
hashCode:哈希码,确定对象在哈希表中位置。当对象放入哈希表中会计算出一个特定的哈希码,同时与其他对象的哈希吗
进行判断,如果没有,则放入成功。如果有,则调用equals进行判断,相等则拒绝放入,不相等则允许放入。
equals:详解看10
两者之间的规则:两个对象相等,则hashcode一定相等。
两个对象hashcode相等,则两个对象不一定相等。
结论:如果一个类的equals被覆盖,那么hashcode一定要覆盖,否则两个对象的永远不可能相等。
12、对象的相等与指向他们的引用相等
对象的相等:指的是对象的内容相等。
指向引用相等:指的是内存地址相等。
13、static、final、abstract
static:修饰方法则是静态方法、修改变量则是静态变量,修饰修饰初始代码块则是静态初始化代码块,无论方法还是变量都属于类,在类被jvm加载时完成初始化并在栈
中分配内存空间。并且要赋初始值。
final:修饰类,则类不能被继承,修饰方法,则方法不能被覆盖。修饰变量,则变量不能被改变。
abstract:修饰的类就是抽奖类,不能生成对象实例。
备注:final和abstract,private和abstract,static和abstract
14、序列化
场景:当你想把的内存中的对象保存到一个文件中或者数据库中时候;
当你想用序列化在网络上传送对象的时候;
当你想通过RMI传输对象的时候;
好处:方便传输、可以还原。
15、四种访问修饰
private:同类
default :同类、同包
protected:同类、同包、子类
public:同类、同包、子类、其他包