<stron>
(1)private权限修饰符:</stron>
- 用于将成员变量和成员方法私有化,私有是针对类而不是针对对象,也就是说,同一个类的不同对象之间,可以互相访问别的对象的私有化成员。
- 方法被哪个对象调用,this就代表那个对象。
- 使用this的情况:局部变量和 成员变量重名,此时this.变量名代表的是所在类的对象的引用。
- 适用于方法名相同,方法的参数表不同。
- 与方法的返回值和修饰符无关。
- 为对象的实例化做准备。
- 方法名和类名相同。
- 不用定义返回类型,void也不用定义。 没有具体的返回值。
- 系统会给出默认的构造方法,不过建议还是写上。 多个构造方法存在是以重载的形式存在。
- 有参的构造方法会覆盖无参的构造方法,从而无法借助无参的构造方法实例化出对象。
- 修饰成员变量(类变量)和成员函数。
- 被修饰后可以直接被类名调用。
- static修饰的成员,优先存在计算机内存中,随着类的加载而存在。
- 被所有对象所共享。
- 静态方法中不可以写this,super关键字。(因为static依赖于类,而this依赖于对象)
- ①存储位置不同
- ②调用方式不同
- ③生命周期不同
- 类名作为形式参数,实际上要的是该类的对象。
- 类名作为方法的返回值,实际上返回的是该类的对象。
- public-------权限是最大的,这样才能被jvm虚拟机看到
- static-------不需要对象,直接用主函数的名就可以调用了
- void-------没有具体的返回类型
- main-------函数名,不是关键字,知识jvm认识的一个固定名字
- String[] args-------是形参列表 ,是一个字符串数组类型
- 确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
- 有立即加载和延迟加载两种形式。
(10)继承:
java只支持单继承,不支持多重继承。
子类继承父类有可能出现方法的重写(覆盖),但父类的私有方法不能被覆盖。
- 子类中所有的构造函数默认会访问父类中的空参构造函数。(因为子类的构造函数中第一行有一个默认的隐式语句super())。
- 当父类中没有空参构造函数时,子类的构造函数必须通过this或super语句指定要访问的构造函数。
- super和this只能存在一个,并且super和this在、都只能定义在第一行。
- final可以修饰类,方法,变量。
- final修饰的类不可以被继承。
- final修饰的方法不可以被覆盖。
- final修饰的变量是一个常量,只能被赋值一次。
- 内部类只能访问被final修饰的局部变量。
- java中没有方法体的方法叫做抽象方法,抽象方法的类就叫做抽象类。
- 一个类中只要有一个方法是abstract,那么这个类就是abstract。
- 抽象类无法被实例化,只能被抽象类继承。
- 子类继承抽象类两种方法:①将子类也定义为抽象类②子类对抽象类所有抽象方法重写。
- abstract使用时是有限制的,不能和private,static, final一起使用。
- 接口(interface)是一种特殊的抽象类。
- 接口中的成员修饰符是固定的(会自动添加): 成员常量:public staticfinal 成员方法:public abstra
- 接口的出现将"多继承"通过另一种形式体现出来,即"多实现"。
- 类与接口之间是实现关系,通过implements关键字。
- 子类实现了接口,必须对接口中所有的方法进行重写(覆盖)。
- 子类继承一个类的同时,可以实现多个接口。
- 类与类之间是单继承,接口与接口之间可以多继承。
- 定义:父类(或者接口)中的引用指向子类对象。
- 多态限制了对子类的特有功能的访问。
- 向上转型,将子类特有的方法隐藏,不能使用子类特有的方法。
- 继承关系下多态的应用
- 接口中多态的应用
- 将一个类定义在另一个类里面,里面那个类就称为内部类。
- 匿名内部类需要有接口或者父类,接口或者父类中的方法不超过三个,过多时候就不使用匿名了。
- 匿名内部类可以当做参数传递。
- package mypack.a是一个写包语句,编译后会产生一个mypack文件夹。
- public;
- private;
- default;
- protected;
- 是所有java类的根父类。
- equals();
- hashCode();
- toString();
- Object类的getClass()方法
- 包裹类就是将一个基本数据类型的数据转换成对象的形式,从而使得它可以像对象一样参与运算和传递。
- ArrayIndexOutOfBoundsException
- ArithmeticException
- ClassCastException
- NullPointerException
- ClassNotFoundException
- lllegalArgumentException
- NumberFormatException
- log4j的使用
- 如果一个进程中同时运行了多个线程,用来完成不同的工作,称之为"多线程"
- 多个线程交替占用cpu资源,而非真正的并行执行。
- 多线程并发操作经典案例–生产者和消费者
- 多线程有不安全的问题,解决问题使用同步。
- 同步方法或同步代码块。
- 两个或两个以上的线程在活动。
- 某个线程拿到一个锁后,还想拿第二个锁,造成锁的嵌套。
- 使用线程池的原因:
- 线程缺乏统一管理,占用过多系统资源。
- 缺乏更多功能,如定时执行、定期执行等。
(27)集合框架:
- 文件可认为是相关记录或放在一起的数据的集合。
- IO流–使用字节流读写文件。
- IO流–使用字符流和缓冲流读写文件。
- IO流–使用数据流读写二进制文件。
- 序列化的步骤:
- 实现Serrializable接口
- 创建对象输出流
- 调用writeObject()方法将对象写入文件
- 关闭对象输出流