类名 对象名=new 类名();
类名 对象名 这个的解释是建立名称为“对象名”的“类名”类引用变量
new ; 这个的解释是实例化对象
类名() 这个的解释是无参数构造方法;
new 类名();就是说以无参数构造方法实例化对象;
类名 对象名=new 类名();用指针的解释就是以无参数构造方法实例化对象并将这个对象的内存引用赋给“类名”类的“对象名”引用变量
是普通方法的构造,是有返回值的,返回值是你的类名的对象.html
(类方法==通常方法)java
二、this关键字设计模式
例如:this.name=name;数组
当成员变量和局部变量重名,能够用this进行区分,this访问成员变量;缓存
左边的name是对象的name,右边的name是局部变量,局部变量赋值给了对象的,就是赋值给了堆内存;多线程
简单说:哪一个对象调用了this所在的函数,this就表明了哪一个对象;dom
方法中用了本类对象,全用this替代;函数
static关键字工具
static关键字的特色?post
成员变量和静态变量的不一样?
静态方法的注意事项:
1.静态方法只能访问静态成员;(非静态既能够访问静态,又能够访问非静态)
2.静态方法中不可使用this和super关键字;
3.主函数是静态的;
静态方法何时使用?
静态代码块: 随着类的加载而执行,并且只执行一次;做用:用于给类进行初始化;
主函数解析:
三、继承
java不支持多继承,可是支持多层继承;C继承B,B继承A;
何时应用覆盖操做?
子类实例化过程;
四、final -----修饰符
五、抽象类
类的实例化就是能够拿类来new一个对象;
六、接口
当一个抽象类中的方法所有都是抽象的的时候,能够用借口的形式去定义和表示;
实现implements
类与类之间是继承关系,类与接口直接是实现关系;
接口不能够实例化。只能由实现了接口的子类并覆盖了接口中全部的抽象方法后,改子类才能够去实例化。
多实现:一个类能够实现多个接口;
一个类在继承另外一个类的同时,还能够实现多个接口;
接口的特色:
接口和抽象类的区别:
举例:
七、多态
对象的多态
代码举例:
父类的对象a不断指向父类的不一样子类对象,就是多态的一种体现;
多态的转型
注意:对于转型,自始自终都是子类对象在作着类型变化。
向上转型目的是为了限制对特有功能的访问;
向下转型目的是为了使用子类中的特有方法;
多态成员的特色
八、封装
封装的好处:
九、构造函数
构造函数:构建建立对象时调用的函数;
构造函数与通常函数的区别?
什么是构造函数的重载?
函数名称相同,参数列表不一致;
十、多线程
线程就是进程中的一个负责程序执行的控制单元(执行路径);
一个进程中能够有多个执行路径,称之为多线程;
如何建立多线程?
1.继承Thread类---线程类
12步骤
34步骤
二、第二种建立线程的方式----实现Runnable接口;(使用的更加普遍)
步骤:
12步骤
34步骤
好处:
多线程---同步代码块;
synchronized---同步的
同步的好处和弊端是?
多线程-----死锁;
产生死锁的条件:
①一个资源只能被一个进程锁占用,直到被该进程锁释放;
②一个进程因请求被占用资源而发生阻塞时,对已获资源保持不放;
③任何一个资源在没被该进程释放以前,任何其余资源都没法对他占用;
避免死锁:
多线程---等待唤醒机制;
涉及的方法有:
1.wait():让线程处于冻结状态,被wait的线程会被存储到线程池中。
2.notify():唤醒线程池中一个线程(任意);
3.notifyAll():唤醒线程池中全部线程;
这些方法都必须定义到同步中,由于这些方法是用于操做线程状态的方法,必需要明确到底操做的是哪一个锁上的线程。
为何操做线程的方法wait,notify,notifyAll()定义在了object类中?
由于这些方法是监视器的方法,监视器其实就是锁,锁能够是任意的对象,任意的对象调用的方式必定定义在object类中;
生产者+消费者
多个生产者+多个消费者
notifyAll():解决唤醒对方的办法,
while判断标记,解决了线程获取执行权后,是否要运行,
wait()和slee()的区别?
1.wait能够指定时间也能够不指定时间;
sleep必须指定时间;
2.在同步中时,对cpu的执行权和锁的处理不一样;
wait:释放执行权,释放锁;
sleep:释放执行权,不释放锁;
中止线程:
怎么控制线程的任务结束呢?
任务中都会有循环结构,只要控制住循环就能够结束任务,控制循环一般就用定义标记来完成;
若是线程处于冻结状态,没法读取标记,该如何结束线程呢?
可使用interrupted()方法将线程从冻结状态强制恢复到运行状态中来,让线程具有cpu的执行资格;当时强制动做会发生了interruptedException,记得要处理
setDaemon():守护线程
join():临时加入一个线程,优先去执行;
十一、数组+内存划分
1.寄存器
2.本地方法区
3.方法区
4.栈内存
存储的都是局部变量;并且变量所属的做用域一旦结束,该变量就自动释放;
5.堆内存
存储的是对象(凡是new创建的都在堆中)
十二、内部类
细节:
内部类能够存放在局部位置;
内部类在局部位置上只能访问局部中被final修饰的局部变量;
何时使用内部类?
匿名内部类(内部类的简写格式)的书写前提?
内部类必须继承或者实现一个外部类或接口;
实质:就是一个匿名子类对象;
格式:new 父类or接口(){子类内容}
匿名内部类细节:
1三、泛型
什么是泛型方法?
这样作的好处就是,传入的值是自定义类型的,不受约束;
什么是泛型接口?
什么是泛型通配符?
何时使用泛型的上限呢?
通常在存储元素的时候都是用上限;
何时使用泛型的下限呢?
一般对集合中的元素进行取出操做时。
13.object类
equals方法
hashcode方法
getclass方法
tostring方法
14.单例设计模式
解决的问题:就是能够保证一个类在内存中的对象惟一性;
如何进行单例模式设计?
例如:
15.工具类collection排序
16.异常
什么是异常捕捉?
异常捕捉的原则?
finally代码块的做用?
一般用于释放和关闭资源,它是必定会被执行的代码块;
关于异常的一些注意事项?
17.vector集合
Linkedlist集合
18.string类
细节,为什么下图的s==s1为false?
string类有什么自带的功能?
string类中的转换操做是怎样的?
string类中判断功能?
string类中比较功能?
compare to() 方法,前者比后者小(实际上是ASCII码的比较),返回一个小于0的值,反之,返回一个大于0的值,若二者相等,则返回值为0;
string类的intern方法?
对字符串池进行操做;
string类的排序?
字符串对象如何进行比较;
一个字串在整串中出现的次数;
两个字符串中最大相同的子串;
如何去除字符串两端空白?
1九、IO流
什么是IO流?
IO流的基类?
FileWriter 建立一个文件,写入字符数据;
FileReader 读取一个文件中的字符数据;
文本复制的2种方式(连读带写);
图解文本复制:
什么是缓冲区?
BufferedReader
BufferedWriter:为了提升写入效率;
readline()方法的原理?
使用了读取缓冲区的read方法,将读取的字符进行缓冲并判断换行标记,将标记钱的缓存数据变成字符串返回
什么是装饰设计模式?
对一组对象的功能进行加强,就可使用该模式进行问题的解决;
装饰设计模式相比继承的优势?
流体系进行功能扩展,有多了流对象,若是要提升流要提升效率,继承只会致使体系愈来愈臃肿,不灵活,因此选择
装饰设计模式;
字节流如何操做文件?
复制mp3文件;
键盘录入的读取;
什么是转换流?
InputStreamReader()-----字节流转换成字符流,编码
OutputStream()-----标准输出流
OutputStreamWriter()-----字符流转换成字节流,解码
流的操做规律?
什么是File类?
File类如何获取、建立和删除信息文件信息?
过滤器是什么?
过滤器工做原理图?
什么是递归?
函数自身调用自身;
如何删除目录?
原理:从最里面往外面删除;
什么是properties集合?
基本功能:
list()方法;
store()方法----持久化存储;
什么是打印流?
PrintWriter()----打印字节;
PrintStream()-----打印字符(操做文件);
1.提供了打印方法,能够对多种数据类型进行打印,而且保持数据的表示形式;
2.不抛出IOException
什么是序列流?
·SequenceInputStream()---对多个流进行 合并;
怎么实现文件切割器?
1.用读取流关联源文件
2.定义一个1M的缓冲区;
3.建立目的;
如何进行对象序列化?
ObjectInputStream与ObjectOutputStream
接口类须要继承serializable类,来标记接口,
serializable()的做用是什么?
用于给序列化的类加入ID号,用于判断类和对象是不是同一个版本;
transient关键字的做用?
非静态数据不想被序列化可使用这个关键字修饰;
RandomAccessFile类的做用?
什么是管道流?
PipedStream类
什么是基本类型数据流?
DataStream类
什么是操做数组的流?
ByteArrayOutputStream类